2016-11-05 9 views
1

DBに存在しないキーを探しているのであれば、キャッシュミス(常にデータベース全体がピアのメモリにキャッシュされていても)が発生すると思います。だから私はそのような要求(存在しないキーを探して)は、常にバックエンドのDB(ネットワークアクセス)を押して、結果を返すと思います。これは正しいです?データキャッシングとキャッシュミス

答えて

1

Datomicの内部についての私の理解に基づいて、要素が見つからないときにストレージと対話する必要はありません。

Datomicのカバレッジインデックスはソートセットとして実装され、クエリエンジンはバイナリ検索でこれらを処理します。また、バイナリ検索ではO(log n)が平均と最悪の両方であるため、DBにない要素を検索することで大きなヒットを得ることはありません。

クエリ(ピア)がストレージと通信する必要があるかどうかは、アイテムがデータベースに存在するかどうかに関係しません。クエリエンジンがデータベースを処理するとき、ピアに存在しないセグメントは、ストレージからピアにロードする必要があります。

+0

DBが巨大で10TBで、使用可能なキャッシュのキャッシュが100GBのみの場合、DB全体がキャッシュに収まらない場合はどうなりますか?不足しているデータを読み込もうとすると古いデータが取り除かれますか? – sunillp

+0

ええ、ピアにワーキングセットを保持しようとするLRUキャッシュがありますが、必要に応じてスワップインとスワップを行います。しかし、存在するものを検索するのか、存在しないものを検索するのかによって、スワップ・スワップ・イン・アウトの量はそれほど変わることはありません。それは、保持できないデータベースに適用される一般的なワーキング・セットの問題ですメモリ内のその作業セット。 –

関連する問題