我有一个单一的结构化的行作为具有10K写入速率每秒输入。每行有20列。某些查询应这些输入来回答。由于大多数查询都需要不同的WHERE
,GROUP BY
或ORDER 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
主要的问题:我是在正确的道路上?这是正常有一个表,每个查询即使输入率已经如此之高?
我不应该使用类似火花或Hadoop的,而不是依靠裸露的数据模型?或事件HBase的,而不是卡桑德拉?
这可能是因为Elassandra将解决您的问题。
该查询系统是CQL完全不同,但是对于索引复制将自动Elassandra在后端进行管理。一个表中的所有列将被索引,以便Elassandra的Elasticsearch一部分能够与REST API可用于query anything you'd like。
在我的测试之一,我推了大量的数据到数据库Elassandra(8GB)去不停,我从来没有超时。另外,搜索引擎随时准备几乎全部时间。或多或少你在说什么。该文档说,它需要5到10秒,新添加的数据在Elassandra指标变得可用。我想这将一定程度上取决于你的安装,但我认为这不是足够的速度对于大多数应用更多。
使用Elassandra的乍一听有点毛茸茸的,但一次到位,这是难以置信的你能多快找到结果。它包括令人难以置信的(强大)WHERE
肯定。该GROUP BY
是有点难以到位。该ORDER BY
是很简单的,但是,当(重新)命令你失去了速度......事情要记住。在我的测试中,不过,即使是ORDER BY
等价物是非常快的。