按非主键列搜索Cassandra的最佳方法

按非主键列搜索Cassandra的最佳方法,cassandra,data-modeling,cqlsh,secondary-indexes,Cassandra,Data Modeling,Cqlsh,Secondary Indexes,我正在将历史时间序列数据存储到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 dcl

我正在将历史时间序列数据存储到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中的一些键来获取记录

  • 我可以通过添加新的集群列来创建一个重复的表 根据要求。或
  • 我能想到二级索引
  • 我的表中有2000多万条记录


    最好的方法是什么

    如果我的理解是正确的,您可以将价格数据作为json存储在值列中。我认为这基本上就是高基数列的定义。在这种情况下,不建议对其进行索引,尤其是在您有大量记录的情况下

    您可以在此处找到进一步的解释:

    我不知道创建辅助表是什么意思,但它可以解决您的问题。例如,如果您计划将json完全分解为列,然后对相关列使用索引。
    如果你能在文章中添加一些例子,那么理解你的问题就更容易了。

    如果我的理解是正确的,你可以将价格数据作为json存储在你的值列中。我认为这基本上就是高基数列的定义。在这种情况下,不建议对其进行索引,尤其是在您有大量记录的情况下

    您可以在此处找到进一步的解释:

    我不知道创建辅助表是什么意思,但它可以解决您的问题。例如,如果您计划将json完全分解为列,然后对相关列使用索引。
    如果您可以在文章中添加一些示例,您将更容易理解您的问题。

    请使用DSE Cassandra的Solr或Spark功能,它为非主键列提供了有用的功能。

    请使用DSE Cassandra的Solr或Spark功能,它为非主键列提供了有用的功能。

    谢谢Mehul已经通过基于Solr文本的搜索获得了解决方案。谢谢Mehul,已经通过基于Solr文本的搜索获得了解决方案。