将数据存储为blob与cassandra中的列

时间:2016-06-02 20:04:00

标签: java cassandra cql

我有很多事件的行数据。这些事件共享一些公共标识符,但也具有该事件特有的数据。

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

示例

表有一个由event_type

分区的键(event_type,timestamp)

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

将此存储为包含行的表是否有任何优势:

event_type, ts, blob

vs a table

New-Alias

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

1 个答案:

答案 0 :(得分:1)

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

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