【问题标题】:How to store use activity data in Cassandra如何在 Cassandra 中存储使用活动数据
【发布时间】:2019-08-23 16:47:09
【问题描述】:

我需要将此数据结构存储在我的数据库中:

Activity:
  user_id: UUID ( Partition Key )
  created_at: timestamp ( Clustering Key )
  activity_id: UUID ( Clustering Key )
  activity_data: map<string, string>

我获取数据的查询将是这样的

SELECT * FROM activities WHERE user_id=SOME-UUID LIMIT 500;

据我了解,当 cassandra 在其文件中搜索一行时,即使使用 LIMIT,它也会将整个数据加载到内存中。

  1. 是真的吗?
  2. 如果是这样,我将如何保存数据,否则当考虑到我只想执行单个查询时(据我所知,复合分区键需要我进行多个查询)
  3. 如果我还需要过滤“activity_data”字段中的值,我将如何存储数据?地图字段上的索引是否足够?

谢谢。

【问题讨论】:

    标签: database cassandra data-modeling cql


    【解决方案1】:

    是的,它会合并磁盘中的数据并响应客户端。如果启用,还会更新缓存。请澄清其他两个问题。

    【讨论】:

    • 2.如果一行可以在内存中达到数十或数百 GB 而不会导致系统崩溃,我应该如何保存数据? 3. 我想过滤 activity_data 中的数据,像这样 SELECT * FROM 活动 where user_id=SOME-UUID AND activity_data.activity_name="SOMETHING" LIMIT 500;
    • 在 cassandra 中,您无法保存数据,同时返回它是一个流动的过程,但应该管理您的分区或限制选择。你也可以调内存一段时间。
    猜你喜欢
    • 2015-01-11
    • 2011-11-22
    • 1970-01-01
    • 2015-08-12
    • 2014-01-24
    • 1970-01-01
    • 2014-10-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多