Cassandra 中的静态列

Alp*_*and 3 cassandra

有人可以简单地解释一下 Cassandra 中的静态列是什么及其用途吗?我遇到了这个链接Static column,但不太能理解它。

Ale*_*Ott 5

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

我想到的一个例子是电子商务。例如,您正在销售某种商品,并且您在不同的国家/地区以不同的货币和不同的价格进行销售。但它们之间有一些共同之处,例如描述、尺寸等。在这种情况下,我们可以将其建模如下:

create table articles (
  sku text,
  description text static,
  country text,
  currency text,
  price decimal,
  primary key (sku, country)
);
Run Code Online (Sandbox Code Playgroud)

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

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