我有效地使用cassandra吗?

时间:2015-07-30 16:16:13

标签: cassandra cql cassandra-2.0 datastax

我有这些表

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)
);
  1. 我在BATCH中执行3个INSERT语句,将数据放入publishMsg publishMsg_by_user followers表中。

  2. 要显示单个消息,我必须在不同的表上查询三个SELECT查询:

  3. publishMsg - 获取发布消息详细信息rowkey&amp; msgId给出了。

    userInfo - 根据fullName

    获取postedById

    followers - 了解postedById是否跟踪某个特定主题

    这是使用cassandra的合适方式吗?这将是有效的,因为给定的scanerio数据不能适合单表。

1 个答案:

答案 0 :(得分:0)

很抱歉在回答中提出这个问题,但我没有让代表发表评论。

暂时忽略这些表格,您的应用程序需要提供哪些信息?理想情况下,在Cassandra中,您只需在一个表上执行一个查询即可获得返回客户端所需的数据。您不应该必须执行3个查询才能获得所需内容。

此外,您的关注者表似乎缺少订单键字段。