Cassandra 使用宽列存储构建复合主键的模式正确吗?
HBase和Cassandra是使用行和列的概念构建为宽列存储的 一行由一个键组成,类似于RDBMS中主键的概念,并且 由若干列组成的值 表示可以是以下内容:Cassandra 使用宽列存储构建复合主键的模式正确吗?,cassandra,hbase,bigtable,happybase,wide-column-store,Cassandra,Hbase,Bigtable,Happybase,Wide Column Store,HBase和Cassandra是使用行和列的概念构建为宽列存储的 一行由一个键组成,类似于RDBMS中主键的概念,并且 由若干列组成的值 表示可以是以下内容: *******| Key | Value -------+------------+-------------+------------------------------------------ Colunms| | name |
*******| Key | Value
-------+------------+-------------+------------------------------------------
Colunms| | name | value
-------+------------+-------------+------------------------------------------
| a | title | "Building a python graphdb in one night"
| b | body | "You maybe already know that I am..."
| c | publishedat | "2015-08-23"
| d | name | database
| e | start | 1
| f | end | 2
... ... ...
| u | title | "key/value store key composition"
... ... ...
| x | title | "building a graphdb with HappyBase"
... ... ...
在应用层构建组合主键以允许
要在共定位的行上快速迭代
这可以表示为如下
*******| Key | Value
-------+------------+-------------+------------------------------------------
Colunms| identifier | name | value
-------+------------+-------------+------------------------------------------
| 1 | title | "Building a python graphdb in one night"
| 1 | body | "You maybe already know that I am..."
| 1 | publishedat | "2015-08-23"
| 2 | name | database
| 3 | start | 1
| 3 | end | 2
... ... ...
| 4 | title | "key/value store key composition"
... ... ...
| 42 | title | "building a graphdb with HappyBase"
... ... ...
名称
列从值
移动到键
和值
有一个
列名
value
在设计Cassandra模式时一直使用复合键
在C*中,键被分解为两部分,分区键和集群列
分区键用于将数据散列到集群内的节点。分区是一个数据桶,它可以根据集群列容纳一行或多行。分区内的数据是节点的本地数据,并由聚类键按顺序进行排序,这使得访问分区内的数据快速高效,并支持对聚类键的范围查询
C*还允许数据字段,这些字段不是复合键的一部分,并且通常不会在查询中使用,除非在它们上创建辅助索引
对于C*“宽列”术语有点过时。在当前的CQL视图中,数据在更传统的术语中被认为是表中的行,这些行被分组到高效的访问分区中
因此,为了回答您的问题,在C*中是的,将RDBMS中可能被视为数据列的列移动到C*中复合键的一部分是很常见的
要查看有关分区键和集群列的更多信息,以及它们如何影响您可以执行的查询类型,请参阅。组合键在HBase架构设计中非常流行。它们还允许您对Rowkey的前缀组件进行快速范围扫描。 与Cassandra不同,RowKey在存储数据时不会分解成多个部分 简单示例:
在HBase中,在您的示例中,您将能够仅使用identifier和identifier+name进行
范围扫描