Cassandra 文档

版本

您正在查看预发布版本的文档。

创建具有单个值的列(静态列)

静态列值在分区中的所有行之间共享。在使用 cassandra.apache.org//glossary.html#clustering-column[聚类列] 的表中,非聚类列可以在表定义中声明为静态。 cassandra.apache.org//glossary.html#static-column[静态列] 仅在给定分区内是静态的。

在以下示例中,flag 列是静态的

CREATE TABLE IF NOT EXISTS cycling.country_flag (
  country text,
  cyclist_name text,
  flag int STATIC,
  PRIMARY KEY (country, cyclist_name)
);
INSERT INTO cycling.country_flag (
  country, cyclist_name, flag
) VALUES (
  'Belgium', 'Jacques', 1
);

INSERT INTO cycling.country_flag (
  country, cyclist_name
) VALUES (
  'Belgium', 'Andre'
);

INSERT INTO cycling.country_flag (
  country, cyclist_name, flag
) VALUES (
  'France', 'Andre', 2
);

INSERT INTO cycling.country_flag (
  country, cyclist_name, flag
) VALUES (
  'France', 'George', 3
);
  • CQL

  • 结果

SELECT *
FROM cycling.country_flag;
 country | cyclist_name | flag
---------+--------------+------
 Belgium |        Andre |    1
 Belgium |      Jacques |    1
  France |        Andre |    3
  France |       George |    3

(4 rows)

以下限制适用

  • 没有定义任何聚类列的表不能具有静态列。没有聚类列的表具有一个行分区,其中每列本质上都是静态的。

  • 指定为分区键的列不能是静态的。

您可以对静态列执行 批量条件更新

使用 DISTINCT 关键字选择静态列。在这种情况下,数据库仅检索分区的开头(静态列)。