私は、列指向データベースについて説明し、概念を非常によく説明しているビデオを見ていました。しかし、私がビデオから得られなかったのは、列指向データベースがどのようにデータをディスクに格納するのかということです。また
Cassandra はどのようにデータをディスクに保存しますか? 同様の質問を読みました:なぜ多くの人が Cassandra を列指向データベースと呼ぶのですか? 、しかし、受け入れられた回答または回答は、データがディスクにどのように保存されているかを示していません。
利点と、列指向データベースの正確な内容を理解しています。各列のデータは、ディスク内の個別のファイルに保存されます。以下のようなものを想定しています。たとえば、テーブル名:CarOwner
と主キー:Id
Row Oriented: Each record is stored together in the disk, probably in the same block.
Id | Name | Car | Age
----------------------------------
1 | John | BMW | 34
2 | Terry | Audi | 31
3 | Josh | Tesla | 24
4 | Dan | Ford | 50
I 行ストア ルックアップは簡単です。フィルターに一致するように各クロックでスキャンを実行するか、クエリキーがインデックス化されている場合は、インデックスを参照した後に対応するブロックを取得できます。
ディスク内の列指向構造: 「仮定」
Name File:- say starts at block block1 in disk
John
Terry
Josh
Dan
Similarly, Car and Age are stored in separate files.
では、特定の ID の名前と車を取得したい場合、次のようなファイルを維持して参照する必要がありますか?
1 : {Name: block1-offset1, Car: block4-offset1,...}
2 : {Name: block1-offset4, Car: block4-offset3,...}
3 : {Name: block1-offset7, Car: block4-offset5,...}
これは、列ストアでのキーのルックアップの仕組みですか? それが正しい場合、他の保存方法は何ですか?
Cassandra はどのようにデータを保存しますか? 列指向DBにも分類されるためです。