Cassandra数据模型太多表

时间:2018-02-15 06:56:19

标签: cassandra data-modeling

我有一个结构化的行作为输入,写入速率为每秒10K。每行有20列。应该对这些输入回答一些查询。由于大多数查询需要不同的WHEREGROUP BYORDER BY,因此最终的数据模型最终如下:

primary key for table of query1 : ((column1,column2),column3,column4)
primary key for table of query2 : ((column3,column4),column2,column1)
  and so on

我知道Cassandra数据模型中表的数量限制(200表示警告,500表示失败)

因为对于每个输入行,我应该在每个表中进行插入,每秒的最终写入变得很大*大数据!:

writes per seconds = 10K (input)
                        * number of tables (queries)
                        * replication factor

主要问题:我是走在正确的道路上吗?即使输入速率已经很高,为每个查询设置一个表是否正常?

我不应该使用像spark或hadoop这样的东西而不是依靠裸数据模型吗?或者事件Hbase而不是Cassandra?

1 个答案:

答案 0 :(得分:0)

Elassandra可能会解决您的问题。

查询系统与CQL完全不同,但是索引的重复将由后端的Elassandra自动管理。一个表的所有列都将建立索引,因此Elassandra的Elasticsearch部分可与query anything you'd like的REST API一起使用。

在我的一项测试中,我将大量数据不停地推入Elassandra数据库(8Gb),并且从未超时。而且搜索引擎几乎一直保持就绪状态。或多或少您在说什么。文档说,新添加的数据在Elassandra索引中可用需要5到10秒。我想这在某种程度上取决于您的安装,但是对于大多数应用程序来说,这已经足够了。

使用Elassandra乍一看可能有点毛茸茸,但是一旦安装到位,就难以置信地发现结果有多快。它肯定包括令人难以置信的(强大的)WHEREGROUP BY有点难以放置。 ORDER BY很简单,但是,当(重新)排序时,您会失去速度...需要牢记的一点。不过,在我的测试中,即使是ORDER BY的等效词也非常快。