2014-10-17 51 views
3

比方說,我有兩個表(列家族)通過CQL定義。Cassandra中的表是否共享分區(「低級別行」)?

CREATE TABLE a (
    pk uuid, 
    cka int, 
    val text, 
    PRIMARY KEY (pk, cka) 
); 

CREATE TABLE b (
    pk uuid, 
    ckb text, 
    val1 boolean, 
    val2 decimal, 
    PRIMARY KEY (pk, ckb) 
); 

如果我現在行插入每個表使用相同的分區鍵:

INSERT INTO a (pk, cka, val) 
    VALUES ('f47ac10b-58cc-4372-a567-0e02b2a3d379', 5, 'hi'); 

INSERT INTO b (pk, ckb, val1, val2) 
    VALUES ('f47ac10b-58cc-4372-a567-0e02b2a3d379', 'x', 'hello', 'hey'); 

會不會有現在是已在存儲1個或2行?

回答

3

將提供卡桑德拉2.

數據寫入到磁盤上的「memtables」,然後刷新到「SSTables」。 memtables和SSTable在每個列家庭基礎上保持,因此不同列家族(表)中的行將始終在存儲級別創建不同的行。

參見http://www.datastax.com/docs/1.1/dml/about_writes

卡桑德拉寫入被首先寫入到提交日誌(耐久性), ,然後在內存中的表結構稱爲memTable中。寫入寫入提交日誌和內存後,寫入成功,因此 是寫入時最小的磁盤I/O。寫入內容爲 ,並定期寫入磁盤到永久表 結構稱爲SSTable(排序後的字符串表)。 Memtables和 SSTables是按列系列維護的。 Memtables按 排序,按行鍵排序並順序刷新到SSTables(沒有 隨機在關係數據庫中查找)。

相關問題