如何在cassandra中添加多列作为主键?

Ama*_*mar 2 cassandra

我有一个包含数百万条记录的现有表,最初我们有两列作为分区键和集群键,现在我想在表中再添加两列作为分区键。

如何?

Nat*_*han 5

如果您更改分区键,您将需要创建一个新表并导入现有数据。部分原因是分区键不等于关系数据库中的主键。分区键由 Cassandra 散列,该散列用于查找磁盘上的分区。如果您更改分区键,您将更改哈希值并且无法再查找分区!

CREATE TABLE KEYSPACE_NAME.AMAR_EXAMPLE (
    COLUMN_1 TYPE,
    COLUMN_2 TYPE,
    COLUMN_3 TYPE,
    ...
    COLUMN_N TYPE
    // Here we declare the partition key columns and clustering columns
    PRIMARY KEY ((COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4), CLUSTERING_COLUMN)
    ) 
    //If you need to change the default clustering order declare that here
  WITH CLUSTERING ORDER BY (COLUMN_4 DESC);
Run Code Online (Sandbox Code Playgroud)

您可以使用将数据导出到 CSV COPY,然后通过COPY或使用.csv 将数据导入新表SSTABLELOADER。有大量关于如何使用这些工具的文档和演练。例如,这篇 Datastax 博客文章讨论了对更新的SSTABLELOADER. 如果您创建一个新表并导入现有数据,您将创建新分区和新哈希。Cassandra 不会让您在创建表后简单地向分区键添加其他列。

了解您的数据和 Cassandra 数据建模技术将有助于减轻您可能会发现自己更改分区键的工作量。查看 Datastax 提供的自定进度课程。DS220:数据建模真的很有帮助