2017-01-05 2 views
1

Nous soutenons la multi-location. Est-il préférable d'avoir un identifiant de client dans la colonne de partition ou de clusterMulti-location à Cassandra

L'identification du client dans la clé de partition garantit que les données d'un client ne peuvent pas être visualisées par un autre client.

Avoir un identifiant client dans la colonne clustering, les développeurs doivent s'assurer que l'identifiant client fait partie de la clause where. Prend également plus de place.

Y a-t-il un meilleur moyen que l'autre? Il y aura un impact sur les données de séries temporelles, car les données seront partitionnées par identifiant client et le super utilisateur ayant accès à tous les clients ne pourra pas afficher correctement les données de séries chronologiques.

Merci

Répondre

1

ont-CUSTOMER_ID comme partie de votre clé de partition. Vous en aurez besoin pour vous assurer que les données de chaque client sont stockées ensemble. Toutefois, assurez-vous que customer_id est et non la seule clé de partition. Si vous avez un ensemble de données de séries chronologiques avec des millions de lignes, vous ne voudrez pas essayer de les stocker toutes dans la même partition (cela deviendra trop gros).

Il y aura un impact sur les données de séries temporelles, car les données seront partitionnées par identifiant client et le super utilisateur ayant accès à tous les clients ne pourra pas afficher correctement les données de séries chronologiques.

Cela revient à concevoir vos tables avec une approche par requête. Si vous avez besoin d'une requête pour prendre en charge les requêtes sur les données de séries temporelles pour tous (ou plusieurs) clients à la fois, vous aurez peut-être besoin d'une table conçue pour cela.

+0

Pourquoi y aurait-il un impact sur les données de séries chronologiques? Pouvez-vous expliquer, pourquoi le super utilisateur ayant accès à tous les clients ne pourrait-il pas voir correctement les données de séries chronologiques? – simo

+0

@simo car Cassandra ne trie pas les ensembles de résultats. L'utilisation d'un composant temporel en tant que clé de cluster ordonne les données par heure * dans * la clé de partition. Par conséquent, je suppose que ce que l'OP voulait dire quand il disait "pas capable d'afficher correctement les données de séries temporelles" était qu'un super utilisateur interrogeant des données pour plusieurs clients à la fois (ce que je ne recommande pas) trouverait l'ensemble de résultats ordonné par 'customer_id' et non par write-time lui-même. – Aaron

+0

Je vois maintenant, mais mon cas est différent, car je vais interroger les données pour un client unique, donc, je m'attends à voir les données correctement ordonnées par la clé de clustering de temps, est-ce une hypothèse correcte? – simo