En supposant que tous les enregistrements de personnes sont identifiés par un UUID et que tous les groupes sont identifiés par un UUID. Quel modèle de données souhaitez-vous créer lorsque vous avez besoin d'interroger fréquemment la liste de toutes les personnes d'un groupe et la liste de tous les groupes auxquels appartient une personne. à savoirEnregistrement de l'appartenance à un groupe de personnes sous cassandra
create table membership (
person_uuid uuid,
group_uuid uuid,
joined bigint,
primary key (person_uuid, group_uuid));
Ce qui précède optimiser pour l'interrogation par personne, et le serait au-dessous de l'optimisation pour l'interrogation par groupe.
create table membership (
group_uuid uuid,
person_uuid uuid,
joined bigint,
primary key (group_uuid, person_uuid));
Y at-il une belle façon de gérer de sorte que vous pouvez parfaitement interroger par person_uuid
et par group_uuid
sans avoir à utiliser « permettre le filtrage », à savoir:
select group_uuid from membership where person_uuid=?
select person_uuid from membership where group_uuid=? allow filtering
-vous juste aller de l'avant et stocker deux des copies des données pour les requêtes dans les deux directions, cela a des problèmes d'atomicité si bien?