【问题标题】:Storing data as a blob vs columns in cassandra在 cassandra 中将数据存储为 blob 与列
【发布时间】:2016-10-02 17:41:50
【问题描述】:

我有很多事件的行数据。这些事件共享一些通用标识符,但也具有事件独有的数据。

由于 Cassandra 不允许在未索引的字段上使用 where 子句,为这些键中的每一个创建一行是否有任何优势,或者将 json 数据存储在 blob 中是否更容易?

例子

表在 (event_type, timestamp) 上有一个键,由 event_type 分区

event_type click 可能有 ts:12345 page_uri: "ABC1234" user_id: "1235567" click_location: "1234,564" event_type keyboard_input 可能有ts:1245 page_uri: "ABC345" words_entered: "foobar"

将其存储为带有行的表有什么好处:

event_type, ts, page_uri, user_id, click_location, words_entered

相对于桌子

event_type, ts, blob

其中 blob 是其余数据的 json 编码映射。

【问题讨论】:

    标签: java cassandra cql


    【解决方案1】:

    我想到了将数据存储在列中的一些直接优势:

    1. 如果您确定突然需要通过其他字段查询,可以在以后添加新索引。
    2. 您可以只更新特定字段而不更新整行。使用 blob,您需要读取和更新整个 blob。因此,在 blob 情况下,对不同字段的并发更新可能会被清除。
    3. 由于上述 #2,您可以在每次更新时写入更少的数据。
    4. 如果您不需要所有列,则每次选择可以读取更少的数据
    5. 上面的#3 和#4 可能会带来性能优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 2015-09-29
      • 2016-10-03
      • 1970-01-01
      • 2012-11-12
      • 2014-10-01
      相关资源
      最近更新 更多