簡體   English   中英

使用寬列存儲構建復合主鍵是否正確?

[英]Is it a correct pattern to build composite primary key using wide columns stores?

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移到“ KeyValue ”的name列具有單個列名稱value

在設計Cassandra模式時,始終使用復合鍵。

在C *中,鍵分為兩部分,分區鍵和群集列。

分區鍵用於將數據散列到群集中的節點。 分區是一類數據桶,可以根據聚類列保存單行或多行。 分區內的數據對於節點而言是本地的,並通過聚類鍵按排序順序進行排序,從而支持對聚類鍵進行范圍查詢,從而可以快速高效地訪問分區內的數據。

C *還允許數據字段,該字段不是復合鍵的一部分,並且除非在其上創建二級索引,否則通常不用於查詢中。

對於C *,“寬列”術語有些過時。 在當前的CQL事物視圖中,以更傳統的術語將數據視為表中的行,這些行被分組為有效的訪問分區。

因此,要回答您的問題,是的,在C *中,通常將可能被視為RDBMS中的數據列的列移動為C *中復合鍵的一部分。

要查看有關分區鍵和集群列的更多信息,以及它們如何影響您可以執行的查詢類型,請深入了解CQL WHERE子句

復合鍵在HBase模式設計中非常流行。 它們還允許您對Rowkey的前綴組件進行快速范圍掃描。 與Cassandra不同,在存儲數據時,RowKey不會分解為Parts。

簡單示例: http : //riteshadval.blogspot.com/2012/03/hbase-composite-row-key-design-doing.html

在HBase中,在您的示例中,您將能夠range scans with identifier only and with identifier+name also進行range scans with identifier only and with identifier+name also

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM