亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Cassandra中,分區密鑰、復合密鑰和聚類密鑰的區別是什么?

在Cassandra中,分區密鑰、復合密鑰和聚類密鑰的區別是什么?

PIPIONE 2019-11-07 10:06:13
在Cassandra中,分區密鑰、復合密鑰和聚類密鑰的區別是什么?我一直在網上閱讀文章,以了解以下內容的不同之處key類型。但對我來說似乎很難理解。舉例肯定有助于更好地理解。primary key, partition key,  composite key  clustering key
查看完整描述

3 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

在這方面有很多困惑,我會盡量讓它變得簡單。

主鍵是一個通用概念,用于指示用于從表中檢索數據的一個或多個列。

主鍵可能是簡約甚至宣稱:

 create table stackoverflow_simple (
      key text PRIMARY KEY,
      data text      
  );

這意味著它是由一列組成的。

但是主鍵也可以是復合材料(又名復配),由更多列生成。

 create table stackoverflow_composite (
      key_part_one text,
      key_part_two int,
      data text,
      PRIMARY KEY(key_part_one, key_part_two)      
  );

在.的情況下復合材料主鍵,該鍵的“第一部分”稱為分區鍵(在本例中)鑰匙第一部分(是分區鍵),而該鍵的第二部分是聚類鍵(在本例中)鑰匙第二部分)

請注意,分區和群集鍵都可以由更多的列生成。,以下是如何:

 create table stackoverflow_multiple (
      k_part_one text,
      k_part_two int,
      k_clust_one text,
      k_clust_two int,
      k_clust_three uuid,
      data text,
      PRIMARY KEY((k_part_one, k_part_two), k_clust_one, k_clust_two, k_clust_three)      
  );

在這些名字后面.。

  • 這個

    分區鍵

    負責跨節點的數據分發。
  • 這個

    聚類鍵

    負責分區內的數據排序。
  • 這個

    主鍵

    等于

    分區鍵

    在單字段鍵表中(即

    簡約).

  • 這個

    復合鍵/復合鍵

    是任何多列鍵。

進一步的使用情況:DataStax文檔



小用法和內容示例
簡約鑰匙:


insert into stackoverflow_simple (key, data) VALUES ('han', 'solo');
select * from stackoverflow_simple where key='han';

表內容

key | data
----+------
han | solo

復合鍵/復合鍵可以檢索“寬行”(即,您可以僅通過分區鍵進行查詢,即使您定義了群集鍵)。

insert into stackoverflow_composite (key_part_one, key_part_two, data) VALUES ('ronaldo', 9, 'football player');
insert into stackoverflow_composite (key_part_one, key_part_two, data) VALUES ('ronaldo', 10, 'ex-football player');
select * from stackoverflow_composite where key_part_one = 'ronaldo';

表內容

 key_part_one | key_part_two | data
--------------+--------------+--------------------
      ronaldo |            9 |    football player
      ronaldo |           10 | ex-football player

但是您可以使用所有鍵(分區和集群)進行查詢.

select * from stackoverflow_composite 
   where key_part_one = 'ronaldo' and key_part_two  = 10;

查詢輸出

 key_part_one | key_part_two | data
--------------+--------------+--------------------
      ronaldo |           10 | ex-football player

重要注意:分區鍵是使用where clause..如果您有一個復合分區鍵,如下所示

例:PRIMARY KEY((col1, col2), col10, col4))

您只能通過至少傳遞col1和col2來執行查詢,這是定義分區鍵的2列。要進行查詢的“一般”規則是,您必須至少傳遞所有分區鍵列,然后可以按設置的順序隨意添加每個聚類鍵。

因此,有效的查詢是(不包括次要指數)

  • 可樂1和可樂2
  • 可樂1、可樂2和可樂10
  • Col1,Col2,Col10和Col4

無效:

  • 可樂1、可樂2和COL 4
  • 不同時包含col1和col2的任何內容。

希望這能幫上忙。



查看完整回答
反對 回復 2019-11-08
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

添加一個Redux答案作為接受的答案是相當長的。術語“行”和“列”是在CQL上下文中使用的,而不是Cassandra實際上是如何實現的。

  • 主鍵唯一標識行。
  • 復合鍵是由多列組成的鍵。
  • 分區鍵是查找一組行(即分區)的主要查找。
  • 聚類鍵是主鍵的一部分,它不是分區鍵(并定義分區內的順序)。

例子:

  • PRIMARY KEY (a)

    *分區鍵是

    a.

  • PRIMARY KEY (a, b)

    *分區鍵是

    a

    ,聚類鍵是

    b.

  • PRIMARY KEY ((a, b))

    *復合分區鍵是

    (a, b).

  • PRIMARY KEY (a, b, c)

    *分區鍵是

    a

    ,復合聚類鍵是

    (b, c).

  • PRIMARY KEY ((a, b), c)

    *復合分區鍵是

    (a, b)

    ,聚類鍵是

    c.

  • PRIMARY KEY ((a, b), c, d)

    *復合分區鍵是

    (a, b)

    ,復合聚類鍵是

    (c, d).



查看完整回答
反對 回復 2019-11-08
  • 3 回答
  • 0 關注
  • 539 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號