【发布时间】:2013-09-21 05:15:58
【问题描述】:
假设所有人员记录均由 UUID 标识,所有组均由 UUID 标识。当你需要共同查询一个组中所有人的列表,以及一个人所属的所有组的列表时,你会创建什么数据模型。即
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
您是否继续存储两个数据副本以供双向查询,但这存在原子性问题,对吗?
【问题讨论】: