我将历史时间序列数据存储到Cassandra。
cassandra@cqlsh>CREATE TABLE data."InstrumentTimeSeries" (
key blob,
column1 bigint,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND bloom_filter_fp_chance = 0.01
AND comment = ''
AND dclocal_read_repair_chance = 0.0
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE'
AND caching = {
'keys' : 'ALL',
'rows_per_partition' : 'NONE'
}
AND compression = {
'sstable_compression' : ''
}
AND compaction = {
'class' : 'SizeTieredCompactionStrategy'
};
在列'value'中,我在序列化之后存储整个json。 现在我想从存储在value列中的json中获取一些键的记录。
我在表中有2千多万条记录。
最好的方法是什么?
答案 0 :(得分:2)
如果我的理解是正确的,您可以将价格数据存储为价值列中的json。我认为基本上是高基数列的定义。在这种情况下,如果您有大量记录,则不建议对其进行索引。
您可以在此处找到进一步说明: https://docs.datastax.com/en/cql/3.3/cql/cql_using/useWhenIndex.html#useWhenIndex__when-no-index
我不确定你创建一个辅助表是什么意思,但它可以解决你的问题。例如,如果您计划将json完全分解为列,然后对相关的json使用索引。 如果您可以在帖子中添加一些示例,则更容易理解您的问题。
答案 1 :(得分:0)
请使用DSE Cassandra的Solr或Spark功能,它为非主键列提供了有用的功能。