最近、私は新しいプロジェクトの観点から Cassandra を調査しており、このコミュニティとその wiki からも多くのことを学びました。しかし、圧縮を使用したレコードの削除管理と非常によく似ているように見えますが、物理ディスク領域の管理に関して Cassandra で更新がどのように管理されているかについては何も見つかりませんでした。
それぞれ 5 つの列の値を持つ 100 のレコードがあるとします。そのため、すべての変更がディスクにフラッシュされると、すべてのレコードが隣接して書き込まれ、削除操作が行われると、最初にメモリ テーブルでマークされ、構成で設定された時間の後に物理レコードが削除されます。いっぱいになったとき。そして、圧縮プロセスはスペースを要求します。
ここで問題となるのは、一方がスキーマレスであるため、最初は固定数の列がないことですが、もう一方は圧縮プロセスが行われるときに..読み取りプロセスを高速化するために、従来の RDBMS のようにレコードをディスクに隣接して配置しますか? RDBMSに関しては、列のデータ型の宣言ごとに固定量のスペースを割り当てる必要があるため、簡単です。
しかし、Cassandra は、読み取りを高速化するために、圧縮プロセス (更新と削除の両方) でディスク上のレコードを正確に配置する方法を教えてください。
圧縮に関連するもう 1 つの質問は、削除クエリはなく、既存のレコードを可変長データで更新する更新クエリがある場合、または新しい列をまとめて挿入する更新クエリがある場合、圧縮によって既存のデータ行の間でディスク上のスペースがどのように利用可能になるかということです。 ?