表在Cassandra中共享分区(“低级行”)吗?

时间:2014-10-17 10:27:47

标签: cassandra cql3

假设我有两个通过CQL定义的表(列族)。

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行?

1 个答案:

答案 0 :(得分:3)

将会有2个。

Cassandra中的数据写入“memtables”,然后刷新到磁盘上的“SSTables”。 memtables和SSTable都是以每列系列为基础维护 ,因此不同列系列(表)中的行将始终在存储级别创建不同的行。

请参阅http://www.datastax.com/docs/1.1/dml/about_writes

  

Cassandra写入首先被写入提交日志(为了持久性),   然后到一个名为memtable的内存表结构。写是   一旦将其写入提交日志和内存,就会成功   写入时磁盘I / O非常小。写入是批量编写的   内存并定期写入磁盘到持久表   结构称为SSTable(排序字符串表)。记事本和   每列系列维护SSTable。记事本是组织的   按行键排序并按顺序刷新到SSTables(没有   随机搜索,如关系数据库)。