假设我有两个通过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行?
答案 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(没有 随机搜索,如关系数据库)。