web-dev-qa-db-fra.com

modifier la clé primaire composite dans cassandra CQL 3.0

Je suis dans une situation où je dois modifier la clé primaire composite comme suit:

Ancienne clé primaire: (id, source, attribut_name, updated_at);

Nouvelle clé primaire que je veux: (source, id, attribut_name, updated_at);

J'ai émis la commande suivante (comme mysql):

ALTER TABLE general_trend_table 
DROP PRIMARY KEY, 
ADD PRIMARY KEY(source, id, attribute_name, updated_at);

J'ai eu l'erreur suivante:

Bad Request: ligne 1:38 pas d'alternative viable à l'entrée 'PRIMARY'

une idée de comment contourner ce problème? plus précisément, je veux savoir s'il existe un moyen de changer la clé primaire dans cassandra?

28
aroyc

Il n'y a aucun moyen de modifier une clé primaire, car elle définit la façon dont vos données sont stockées physiquement.

Vous pouvez créer une nouvelle table avec la nouvelle clé primaire, copier les données de l'ancienne, puis supprimer l'ancienne table.

56
Mikhail Stepura

S'il existe une possibilité d'utiliser l'ancienne clé primaire, vous pouvez créer une vue matérialisée: http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html Mais il n'est recommandé que si vous avez besoin de l'ancienne clé.

1
CordlessWool