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

如何在cassandra中将多列添加为主键?,cassandra,Cassandra,我有一个包含数百万条记录的现有表,最初我们有两列作为分区键和集群键,现在我想在表中添加两列作为分区键 如何更改?如果更改分区键,则需要创建新表并导入现有数据。部分原因是分区键不等于关系数据库中的主键。分区键由Cassandra散列,该散列用于查找磁盘上的分区。如果更改分区键,则会更改哈希值,并且无法再查找分区 CREATE TABLE KEYSPACE_NAME.AMAR_EXAMPLE ( COLUMN_1 TYPE, COLUMN_2 TYPE, COLUMN_3 T

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


如何更改?

如果更改分区键,则需要创建新表并导入现有数据。部分原因是分区键不等于关系数据库中的主键。分区键由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);
您可以使用
COPY
将数据导出到CSV,然后通过
COPY
或使用
SSTABLELOADER
将数据导入新表。有大量关于如何使用这些工具的文档和演练。例如,讨论对更新的
SSTABLELOADER
所做的更改。如果创建新表并导入现有数据,则将创建新分区和新哈希。Cassandra不允许您在创建表之后简单地向分区键添加额外的列


了解您的数据和Cassandra数据建模技术将有助于减少您在更改分区键时可能会遇到的工作量。查看Datastax提供的自定进度课程。我真的能帮上忙

如果更改分区键,则需要创建一个新表并导入现有数据。部分原因是分区键不等于关系数据库中的主键。分区键由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);
您可以使用
COPY
将数据导出到CSV,然后通过
COPY
或使用
SSTABLELOADER
将数据导入新表。有大量关于如何使用这些工具的文档和演练。例如,讨论对更新的
SSTABLELOADER
所做的更改。如果创建新表并导入现有数据,则将创建新分区和新哈希。Cassandra不允许您在创建表之后简单地向分区键添加额外的列

了解您的数据和Cassandra数据建模技术将有助于减少您在更改分区键时可能会遇到的工作量。查看Datastax提供的自定进度课程。我真的能帮上忙