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