elasticsearch 具有多个分片键的数据存储,elasticsearch,cassandra,bigdata,datastore,elasticsearch,Cassandra,Bigdata,Datastore" /> elasticsearch 具有多个分片键的数据存储,elasticsearch,cassandra,bigdata,datastore,elasticsearch,Cassandra,Bigdata,Datastore" />

elasticsearch 具有多个分片键的数据存储

elasticsearch 具有多个分片键的数据存储,elasticsearch,cassandra,bigdata,datastore,elasticsearch,Cassandra,Bigdata,Datastore,我一直在研究几种不同的数据存储技术,它们可以用来存储大量的半结构化日志,供人们以后搜索。到目前为止,我已经研究了cassandra、riak和elastic search,而elastic search似乎最适合我感兴趣的内容(主要是因为它透明地索引了所有内容)。然而,有一个我感兴趣的特性似乎没有被所有人注意到,我想知道是否有一个具有此特性的数据存储 我想的是在多个键上透明切分的能力。要明确的是,我不是在谈论使用复合键进行切分。我的意思是,如果您有一个由user\u id、time\u of_c

我一直在研究几种不同的数据存储技术,它们可以用来存储大量的半结构化日志,供人们以后搜索。到目前为止,我已经研究了cassandra、riak和elastic search,而elastic search似乎最适合我感兴趣的内容(主要是因为它透明地索引了所有内容)。然而,有一个我感兴趣的特性似乎没有被所有人注意到,我想知道是否有一个具有此特性的数据存储

我想的是在多个键上透明切分的能力。要明确的是,我不是在谈论使用复合键进行切分。我的意思是,如果您有一个由
user\u id
time\u of_creation
ip\u address
分割的表,并且您插入了一行,那么将创建该行的三个副本,每个副本位于不同的集群中,由不同的键分割(或者可能它们实际上都在同一个集群中。重要的是数据会被复制)。当您以后想要查询此表时,数据存储将透明地选择使用哪个集群

在我读到的关于卡桑德拉的文章中,人们经常建议这样做,但这肯定是一个手动过程,至少有三种方式:

  • 对于插入,您必须自己插入到每个表中
  • 在查询时,您必须找出要查询的表(需要选择使用正确集群键的表)
  • 而且,如果您想要向shard on添加另一个键,那么必须编写一个例程,将现有数据写入新表中

虽然我以cassandra为例,但我相信riak和elastic search的情况类似。我知道提供此功能的数据存储可能需要进行大量交易才能实现。更新/删除可能不再可能(或者性能极低),一致性也会受到影响。但是,在处理日志时,我发现这是一组可以接受的交易,所以我想知道是否有人熟悉提供此功能的技术。

为什么要在三个“位置”使用相同的数据因为我不明白?相同数据的这三个副本的用例是什么?当你读回数据时,你会得到更高效的查询。你可以通过数据分片的任何列进行搜索,你会得到分片的好处。这是cassandra的一个非常常见的设计:这是ES,而不是Cassandra。我想问你想要涵盖的用例是什么?你提到了列和切分。这些词通常不用于Elasticsearch。那么,你想用ES实现什么呢?请描述一个你认为“切分”(ES使用切分的概念,与切分的关系是什么)和“列”的实际用例会修复吗?在弹性搜索中,我描述的概念称为[.在任何数据存储技术中,这种做法都允许引用用于分片的密钥的查询只在一台服务器上执行,而不必聚合所有服务器的结果。例如,如果查询非常常见,则按
用户id
ip\u地址
进行过滤(但不一定同时进行),则能够使用这两个键进行切分会很有帮助。好的。为什么您认为需要
路由
?很少有用例需要这种功能()。如果您认为在多个服务器/节点上运行数据,然后在另一个服务器/节点上聚合该数据是有问题的,这就是Elasticsearch的真正本质和功能,它从一开始就考虑到了一个非常重要的思想:在节点之间拆分数据,所有节点都执行“部分”对于较大的作业,则聚合数据并返回给用户。