在Cassandra上实现搜索层,数据存储为blob

时间:2016-06-03 03:54:59

标签: search cassandra

我知道在Cassandra上有搜索解决方案,例如cassandra-lucene-index。所以我在这里找不到解决方案,我只是对一些实现感到好奇。

我发现了两个项目:KairosDB(基于Cassandra构建的用于监控数据的时间序列数据库)和Infinispan(可以使用Cassandra作为缓存存储的分布式缓存),两者都实现了自己的搜索层。它们具有类似的Cassandra模式,可以将数据存储为blob,例如,Infinispan:

  

创建KEYSPACE,如果不是EXISTS Infinispan WITH replication =   {' class':' SimpleStrategy',' replication_factor':1};创建表   Infinispan.InfinispanEntries(关键blob PRIMARY KEY,值blob,   元数据blob);

我查看了KairosDB代码,它通过读取一系列数据进行搜索,然后通过某些标记进行内存中过滤。我还没有调查过Infinispan。

我想知道是否有任何算法只是为了这种事情?也就是说,将数据存储为二进制文件然后通过过滤进行搜索?

2 个答案:

答案 0 :(得分:1)

  

那就是说,将数据存储为二进制,然后通过过滤进行搜索?

如果您将数据存储为blob,那么如何将其编入索引?

  

所以我在这里找不到解决方案,我只是对一些实现感到好奇。

只需阅读Stratio Lucene Index的源代码或 SASI index 然后

答案 1 :(得分:0)

我的声誉不够高,无法发表评论,我认为这无法得到答案,但Solr与Cassandra合并。它非常酷,它允许您对Cassandra数据进行搜索。

查询可能看起来像

SELECT name FROM keyspace.table WHERE solr_query='name:euler name:jane -name:john'; 

注意:Solr查询放在where子句中。

问题似乎有点宽泛,但这是另一种选择。它利用了Solr的读取速度,Cassandra的写入速度,以及两者的开销和学习曲线。

https://docs.datastax.com/en/datastax_enterprise/4.0/datastax_enterprise/srch/srchIntro.html

https://docs.datastax.com/en/datastax_enterprise/4.6/datastax_enterprise/srch/srchCql.html