【发布时间】:2018-11-05 15:17:58
【问题描述】:
我有这两张表:
create table users (
id UUID,
email ascii,
created_at timeuuid,
primary key(id, email)
);
create table groups (
id UUID,
name ascii,
created_at timeuuid,
primary key(id, name)
);
一个用户可以在多个组中,一个组显然可以有多个用户。
所以我有两种方法来维持多对多的关系(取自here),一种是:
CREATE TABLE user_group (
user UUID,
group UUID,
PRIMARY KEY (user, group)
)
另一个是(使用集合):
CREATE TABLE user_jn_group (
user UUID PRIMARY KEY,
groups set<UUID>
)
CREATE TABLE group_jn_user (
group UUID PRIMARY KEY,
users set<UUID>
)
我使用的是 Cassandra 3.9.0。我知道这两种方法都有自己的优点和缺点。我想要最少的重复性,但我对读/写速度也有同样的重视。另外,这两种方法背后是否还有更多隐藏成本?
【问题讨论】:
-
您有查询给定组中所有用户的用例吗?
-
嗯,是的。
标签: cassandra cql cassandra-3.0