Предполагая, что записи всех людей идентифицированы с помощью UUID, и все группы идентифицируются с помощью UUID. Какую модель данных вы создадите, когда вам нужно будет часто запрашивать список всех людей в группе и список всех групп, к которым принадлежит человек. т.е.Хранение группы лиц в группе cassandra
create table membership (
person_uuid uuid,
group_uuid uuid,
joined bigint,
primary key (person_uuid, group_uuid));
выше будет оптимизировать для запросов от человека, и ниже будет оптимизировать для запроса группы.
create table membership (
group_uuid uuid,
person_uuid uuid,
joined bigint,
primary key (group_uuid, person_uuid));
Есть аккуратный способ справиться, так что вы можете оптимально запросить по person_uuid
и group_uuid
без использования «позволяет фильтровать», то есть:
select group_uuid from membership where person_uuid=?
select person_uuid from membership where group_uuid=? allow filtering
Вы просто идти вперед и хранить два копии данных для запросов в обоих направлениях, это имеет проблемы атомарности, хотя верно?