2015-09-18 3 views
0

У меня есть существующая таблица с миллионами записей, и изначально у нас есть два столбца как ключ разделения и кластеризация, и теперь я хочу добавить еще два столбца в таблицу в качестве ключа секционирования.Как добавить несколько столбцов в качестве первичных ключей в cassandra?

Как?

ответ

3

Если вы внесете изменения в раздел раздела, вам нужно будет создать новую таблицу и импортировать существующие данные. Это связано, в частности, с тем, что ключ раздела не равен первичному ключу в реляционной базе данных. Ключ раздела хэшируется 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); 

Вы можете экспортировать данные в CSV, используя COPY, а затем импортировать данные в новую таблицу с помощью COPY или использовать SSTABLELOADER. Существует множество документации и пошаговых инструкций о том, как использовать эти инструменты. Например, this Datastax blog post рассказывает об изменениях, внесенных в обновленный SSTABLELOADER. Если вы создадите новую таблицу и импортируете существующие данные, вы создадите новые разделы и новые хэши. Cassandra не позволит вам просто добавить дополнительные столбцы в раздел раздела после создания таблицы.

Понимание ваших данных и методов моделирования данных Cassandra поможет уменьшить объем работы, которую вы можете обнаружить при изменении ключей разделов. Проверьте курсы самообслуживания, предоставленные Datastax. DS220: Data Modeling действительно может помочь.

Смежные вопросы