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

时间:2015-11-01 14:28:38

标签: elasticsearch cassandra bigdata datastore

我一直在研究几种不同的数据存储技术,这些技术可用于存储大量半结构化日志,供人们稍后搜索。到目前为止,我已经查看了cassandra,riak和弹性搜索,看起来弹性搜索最适合我感兴趣的内容(主要是因为它透明地对所有内容进行索引)。但是,我感兴趣的一个功能似乎是逃避了它们,我想知道是否有一个具有此功能的数据存储。

我想到的是在多个密钥上透明分片的能力。要清楚,我谈论使用复合键进行分片。我的意思是,如果您有一个按user_idtime_of_creationip_address分片的表,并且您插入了一行,则会创建该行的三个副本,每个副本都在一个不同的集群被不同的密钥分割(或者它们可能在某种程度上实际上都在同一个集群中。重要的部分是数据将被复制)。当您想稍后查询此表时,数据存储将透明地选择要使用的集群。

在我读过关于Cassandra的文章中,人们经常建议做这样的事情,但它至少在三个方面肯定是一个手动过程:

  • 要插入,您需要自己插入每个表格。
  • 在查询时,您必须确定要查询的表(您需要选择使用正确群集密钥的表)。
  • 并且,如果您想要将另一个密钥添加到shard上,则必须将现有数据的例程编写到新表中。

虽然我使用cassandra作为例子,但我相信riak和弹性搜索的情况类似。据我所知,提供此功能的数据存储可能必须进行大量交易才能这样做。可能无法再更新/删除(或者性能极差),并且一致性会受到影响。但是,这是我在处理日志时可以接受的一组交易,所以我想知道是否有人熟悉提供此功能的技术。

0 个答案:

没有答案