我正在尝试使用Cassanda设计一个Key / Value NOSql数据库 从一个小社交网络的关系数据库开始,我想使用NOSql数据库模型制作一个“等效”模式。
关系数据库有3个表,如下所示:
-------------
| User |
-------------
|id |
|name |
|bday |
|... |
-------------
-------------
| Statut |
-------------
|Userid |
|Statutid |
|text |
|timestamp |
|... |
-------------
-------------
| Comment |
-------------
|User1id |
|User2id |
|text |
|timestamp |
|...... |
-------------
在创建密钥空间时,我对我应该创建的许多列族感到困惑:
什么是最佳解决方案,最少的数据冗余和避免连接。
答案 0 :(得分:1)
如果您想减少冗余并避免连接,MongoDB将是最好的数据库。
请记住使用集合SET
数据类型
Straight from the docs,收藏价值不得超过64KB。
因此,使用SET
可能会根据您存储的内容给您带来问题。
在Cassandra中,您可以使用3个列族来创建它。
DROP KEYSPACE your_keyspace ;
CREATE KEYSPACE your_keyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
USE your_keyspace;
CREATE TABLE user(
id TIMEUUID PRIMARY KEY,
name TEXT,
bday TEXT,
...
);
CREATE TABLE user_statut(
id TIMEUUID,
userid TIMEUUID,
body TEXT,
created_at TIMESTAMP,
...
PRIMARY KEY(userid, id)
);
CREATE TABLE user_comment(
id TIMEUUID,
user1id TIMEUUID,
user2id TIMEUUID,
body TEXT,
created_at TIMESTAMP,
...
PRIMARY KEY(user1id, user2id, id)
);
但当然这需要您进行3个不同的查询才能加入所有数据。但这取决于您最终使用的任何查询。