Cassandra 使用宽列存储构建复合主键的模式正确吗?

Cassandra 使用宽列存储构建复合主键的模式正确吗?,cassandra,hbase,bigtable,happybase,wide-column-store,Cassandra,Hbase,Bigtable,Happybase,Wide Column Store,HBase和Cassandra是使用行和列的概念构建为宽列存储的 一行由一个键组成,类似于RDBMS中主键的概念,并且 由若干列组成的值 表示可以是以下内容: *******| Key | Value -------+------------+-------------+------------------------------------------ Colunms| | name |

HBase和Cassandra是使用行和列的概念构建为宽列存储的

一行由一个键组成,类似于RDBMS中主键的概念,并且 由若干列组成的

表示可以是以下内容:

*******|    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进行
范围扫描