为什么很多人将Cassandra称为面向列的数据库?

在互联网上阅读几篇论文和文件,我发现了许多关于Cassandra数据模型的矛盾信息。有许多将其标识为面向列的数据库,其他作为行定向,然后将其定义为两者的混合方式。

根据我所知道的Cassandra如何存储文件,它使用* -Index.db文件访问* -Data.db文件的正确位置,其中存储bloom过滤器,列索引,然后列的必需行。

在我看来,这是严格行为。有什么我错过了吗?

是的,“面向列”的术语有点混乱。

Cassandra中的模型是行包含列。要访问最小的数据单元(一列),必须先指定行名(键),然后指定列名。

因此,在一个名为Fruit的columnfamily中,您可以具有类似以下示例(2行)的结构,其中水果类型是行键,每列都有一个名称和值。

apple -> colour  weight  price variety
         "red"   100     40    "Cox"

orange -> colour    weight  price  origin
          "orange"  120     50     "Spain"

与基于表的关系数据库的一个区别是,可以在任何时候省略列(橙色没有变化),或添加任意列(橙色有原点)。你仍然可以把上面的数据想象成一个表,虽然是稀疏的,其中许多值可能是空的。

然而,一个“面向列”的模型也可以用于列表和时间序列,其中每个列名是唯一的(这里我们只有一行,但我们可以有成千上万的列):

temperature ->  2012-09-01  2012-09-02  2012-09-03 ...
                40          41          39         ...

这与关系模型非常不同,其中人们必须将时间序列的条目建模为行而不是列。

http://stackoverflow.com/questions/13010225/why-many-refer-to-cassandra-as-a-column-oriented-database

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:为什么很多人将Cassandra称为面向列的数据库?