dynamodbwikipedia的文章说dynamodb是一个“键值”数据库。然而,将其称为“key-value”数据库完全忽略了dynamodb的一个极其基本的特性,即排序键的特性:键有两个部分(分区键和排序键),具有相同分区键的项可以通过排序键有效地一起检索。
cassandra还有完全相同的sorting-items-inside-a-partition特性(它称之为“集群键”),cassandrawikipedia的文章使用术语wide column store来描述它。然而,虽然这个术语“宽列”比“键值”好,但它仍然有点不合适,因为它描述了一个项可以有大量不相关列的更一般的情况,而不一定是一个单独项的排序列表。
所以我的问题是,是否有一个更合适的术语来描述像dynamodb和cassandra这样的数据库的数据模型-像键值存储一样的数据库可以有效地检索单个键的项,但也可以有效地检索按键或其一部分排序的项(dynamodb的排序键或cassandra的集群键)。
1条答案
按热度按时间368yc8dk1#
在引入cql之前,cassandra更严格地遵循宽列存储数据模型,其中只有由行键标识的行,并且包含排序的键/值列。随着cql的引入,行被称为分区,列可以选择通过集群键分组到逻辑行中。
即使在Cassandra3.0之前,cql也只是原始thrift数据模型之上的抽象,在存储引擎中没有cql行的概念。它们只是一组经过排序的列,带有一个复合键,该键由聚类键的串联值组成。本文将给出更多细节。现在在存储引擎中有了对cql的本地支持,这使得cql数据模型可以更有效地存储。
但是,如果您认为cql行是同一分区中列的逻辑分组,那么cassandra仍然可以被视为宽列存储。在任何情况下,据我所知,没有另一个公认的术语来描述这种数据库。