目次:
ビデオ: クラウド型データベース「働くDB」とは? 2024
他のNoSQLデータベースタイプと同様に、Key-Valueストアでは、 Key-Valueストアは、一般に、可用性とパーティションの許容差の間、および一貫性とパーティションの許容差の間で、幅広い一貫性と耐久性モデルを提供します。
一部のキー・バリュー・ストアは、ACIDトランザクションの一貫性を完全にサポートするために、BASEを放棄してコンシステンシー・アームをさらに進めています。行を引く場所を理解することで、潜在的なデータベースのリストを短くして、ユースケースについて検討することができます。
<! - 1 - >取引の一貫性
キーバリューストアは、通常、データの一貫性を維持します(つまり、更新直後に最新の値のコピーを常に読み取る機能)。 。
Voldemort、Riak、およびOracle NoSQLはすべて、 最終的に一貫した Key-Valueストアです。彼らは read repair というメソッドを使用します。 修復修復 には2つのステップがあります:
<! - 2 - >-
レコードを読むときに、キーのいくつかの有効な値のうちのどれが最新かつ最も有効な値であるかを判断します。
-
最新の値が決定できない場合、データベースクライアントにはすべての値オプションが提示され、それ自体を決定するために残されます。
最終的に一貫性のあるKey-Valueストアを使用するための良い例には、ソーシャルメディアの投稿を送信し、ターゲットユーザーに配信することが含まれます。ツイートが遅く到着した場合や5分経過した場合、致命的なデータ損失はありません。
<! - 9 - >ACIDサポートの実装
AerospikeとRedisは、最終的な一貫性に対する注目に値する例外です。どちらも両方とも 共有なしの クラスタを使用します。つまり、各キーには次のものがあります。
-
マスターノード: マスターのみが単一キーの回答を提供します。
-
複数のスレーブレプリカノード: これらは、マスターノード上のすべてのデータのコピーを含みます。 Aerospikeは、トランザクションがデータベースクライアントに完了したとフラグが立てられる前に、変更をディスクに直ちにフラッシュできるようにすることにより、完全なACIDトランザクションの一貫性を提供します。
Aerospikeは非常に高速で処理します(ACIDを使用すると書き込み速度が低下するという主張は否定します)。 Aerospikeは、より遅いオペレーティングシステムのファイルシステムサポートをバイパスすることによって、データ書き込み用の未処理SSDをネイティブに処理します。
もちろん、SSDが増えるとサーバーのコストも高くなります。 Redis(すべてのデータをディスクの到着時にフラッシュするように設定されている)を使用すれば、十分に速く、必要に応じて十分な耐久性が保証されます。Redisのデフォルト設定は、数秒ごとにディスクにデータをフラッシュし、サーバーに障害が発生した場合にデータが失われる可能性のある小さなウィンドウを残すことです。
ACIDに準拠したキー値ストアが必要な場合の例を次に示します。
-
実験に必要なセンサーデータを受信するとき。
-
領収書を保証する必要があるメッセージングシステム。
Redisは、たとえば、メッセージングサーバーのバックエンドとして機能するPublish / Subscribeメカニズムを提供します。この機能とACIDのサポートにより、耐久性のあるメッセージングが可能になります。