我有这些表
CREATE TABLE user_info (
userId uuid PRIMARY KEY,
userName varchar,
fullName varchar,
sex varchar,
bizzCateg varchar,
userType varchar,
about text,
joined bigint,
contact text,
job set<text>,
blocked boolean,
emails set<text>,
websites set<text>,
professionTag set<text>,
location frozen<location>
);
create table publishMsg
(
rowKey uuid,
msgId timeuuid,
postedById uuid,
title text,
time bigint,
details text,
tags set<text>,
location frozen<location>,
blocked boolean,
anonymous boolean,
hasPhotos boolean,
esIndx boolean,
PRIMARY KEY(rowKey, msgId)
) with clustering order by (msgId desc);
create table publishMsg_by_user
(
rowKey uuid,
msgId timeuuid,
title text,
time bigint,
details text,
tags set<text>,
location frozen<location>,
blocked boolean,
anonymous boolean,
hasPhotos boolean,
PRIMARY KEY(rowKey, msgId)
) with clustering order by (msgId desc);
CREATE TABLE followers
(
rowKey UUID,
followedBy uuid,
time bigint,
PRIMARY KEY(rowKey, orderKey)
);
我在BATCH中执行3个INSERT语句,将数据放入publishMsg
publishMsg_by_user
followers
表中。
要显示单个消息,我必须在不同的表上查询三个SELECT查询:
publishMsg
- 获取发布消息详细信息rowkey
&amp; msgId
给出了。
userInfo
- 根据fullName
postedById
followers
- 了解postedById
是否跟踪某个特定主题
这是使用cassandra的合适方式吗?这将是有效的,因为给定的scanerio数据不能适合单表。
答案 0 :(得分:0)
很抱歉在回答中提出这个问题,但我没有让代表发表评论。
暂时忽略这些表格,您的应用程序需要提供哪些信息?理想情况下,在Cassandra中,您只需在一个表上执行一个查询即可获得返回客户端所需的数据。您不应该必须执行3个查询才能获得所需内容。
此外,您的关注者表似乎缺少订单键字段。