面向列的数据库如何在磁盘中存储数据?

cyvaqqii  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(527)

我正在看这个视频,它讨论了面向列的数据库,并很好地解释了这些概念。但是,我没有从视频中得到的是,面向列的数据库如何将数据存储到磁盘中?或
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

我行商店查找是直截了当的。您可以在每个时钟中扫描匹配的筛选器,或者如果查询键已被索引,则在引用索引后获取相应的块。
磁盘中的列结构:“假设”

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是如何存储数据的?因为它也被归类为面向列的数据库。
wz8daaqr

wz8daaqr1#

cassandra将数据与文档中提到的其他文件一起存储在sstables中的磁盘上。当按键查询数据(假设它不在memtable中)时,它检查索引文件,该文件指向sstable文件中搜索到的数据的位置。

相关问题