データはどのように更新されるか
DataStax Enterpriseデータベースでのデータの更新方法に関する簡単な説明。
DataStax Enterpriseデータベースは、新しい行をそれぞれupsertとして扱います。既存の行と同じプライマリ・キーが新しい行に存在する場合、データベースは、その行を既存の行の更新として処理します。
書き込み中、DataStax Enterpriseは、重複するレコードが存在するかどうかをチェックせずに、新しい行をそれぞれデータベースに追加します。このポリシーにより、バージョンの異なる同じ行がデータベースに多数存在する可能があります。詳細については、「データはどのように更新されるか」を参照してください。
メモリーに格納された行は、定期的にSSTableという構造でディスクにストリーミングさます。データベースは、一定の間隔で、小さなSSTableを大きなSSTableにコンパクションします。このプロセス中に、データベースにバージョンの異なる同じ行が複数存在していることが判明した場合は、最新バージョンの行のみが新しいSSTableに書き込まれます。コンパクション後、データベースによって元のSSTableが削除され、古い行が削除されます。
ほとんどのDataStax Enterpriseのインストールでは、複数のノードに各行のレプリカが格納されます。各ノードは単独でコンパクションを行います。つまり、古くなったバージョンの行は1つのノードから削除されますが、別のノードにはまだ存在する可能性があることを意味します。
このような理由から、データベースは、読み取りプロセス中に、別のラウンドの比較を実行します。クライアントが特定のプライマリ・キーでデータを要求すると、DataStax Enterpriseは、複数のレプリカから多くのバージョンの行を取得します。最新のタイムスタンプが付いたバージョンのみがクライアントに返されます(「最後の書き込み成功事例」)。