0

我想为用户点设计一个系统。该系统的主要两点是点和日志。

我想使用 Cassandra 来存储数据。两个原因:

  1. Cassandra 提供了计数器功能,我可以使用它来存储积分。
  2. 点变化的日志可能太多了,我不得不考虑存储的规模。Cassandra 可以轻松扩展。

基本数据结构:

// row
name: user_id,
values: {
    point: {
        name: point,
        values: 1000
    },
    log: {
        name: log,
        values: {
            log_timestamp: {
                 name: timestamp,
                 values: xxxx
            },
            log_timestamp: {
                 name: timestamp,
                 values: xxxx
            },
            log_timestamp: {
                 name: timestamp,
                 values: xxxx
            },
            ……
        }
    }
}

我的问题是:

如果日志太多,有什么问题吗?

4

1 回答 1

1

@lifei

你想要的是一张桌子:

  1. 行键(分区键)= userId
  2. 1点计数器
  3. 1 个日志收集,尽可能多的 log_timestamp

创建这样的表确实非常容易:

CREATE TABLE logs
(
  userId: int,
  log_timestamp long, //timestamp
  value text,
  PRIMARY KEY (userId,log_timestamp)
);

它是一个集群实体(宽行),最多有 20 亿个 log_timestamp/value 对。

对于点计数器,不幸的是您必须创建另一个列族来存储它,因为 Cassandra 不允许将计数器值与其他类型混合。

于 2013-09-04T20:31:30.297 回答