Cassandra 中的静态列

Posted

技术标签:

【中文标题】Cassandra 中的静态列【英文标题】:Static column in Cassandra 【发布时间】:2020-04-08 18:13:35 【问题描述】:

有人可以简单地解释一下 是什么,以及它的用途吗? 我偶然发现了这个链接Static column,但不太了解。

谢谢

【问题讨论】:

【参考方案1】:

静态列是一种将数据与整个分区关联的方法,因此它将在该分区内的所有行之间共享。有一些合法的情况,当所有行都需要相同的数据时,当数据更新时,我们不需要更新每一行。

想到的一个例子是电子商务。例如,你在卖东西,你在不同的国家用不同的货币和不同的价格卖东西。但是它们之间有一些共同点,例如描述、尺寸等。在这种情况下,我们可以将其建模如下:

create table articles (
  sku text,
  description text static,
  country text,
  currency text,
  price decimal,
  primary key (sku, country)
);

在这种情况下,当您执行select * from articles where sku = ... and country = ... 时,无论如何您都会得到描述,并且您只能使用update articles set description = '...' where sku = ... 更新描述,然后下一个选择将拉取更新的描述。

此外,分区中可能存在静态列而没有任何行。我见过的一个用例是聚合信息的收集,其中详细数据存储为具有一些 TTL 的单个行,并且有一个作业将数据聚合到静态列中,所以当行过期时,这个分区仍然只保留聚合数据。

【讨论】:

以上是关于Cassandra 中的静态列的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 静态专栏 - 多少份?

为啥 Cassandra 中的超级列不再受青睐?

Cassandra 中的单数据列与多列

Cassandra 中的数据建模,列可以是文本或数字

Cassandra标准列和超级列

在Cassandra中用新的键值对更新地图类型列,而不是完全覆盖地图。