【问题标题】:Cassandra data model too many tableCassandra 数据模型太多的表
【发布时间】:2019-02-12 11:42:43
【问题描述】:

我有一个结构化的行作为输入,写入速率为每秒 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?

【问题讨论】:

  • 您使用的是普通 Cassandra 还是 DSE?
  • 普通卡桑德拉

标签: cassandra data-modeling


【解决方案1】:

Elassandra 可能会解决您的问题。

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

在我的一个测试中,我不断地将大量数据推送到 Elassandra 数据库 (8Gb),而且我从未超时。此外,搜索引擎几乎一直处于准备状态。或多或少你在说什么。文档说,新添加的数据需要 5 到 10 秒才能在 Elassandra 索引中可用。我想这在某种程度上取决于您的安装,但我认为这对于大多数应用程序来说已经足够了。

一开始使用 Elassandra 可能听起来有点麻烦,但一旦到位,您就能以多快的速度找到结果。它肯定包括令人难以置信的(强大的)WHEREGROUP BY 有点难以落实。 ORDER BY 很简单,但是,当(重新)订购时,您会失去速度......要记住的事情。不过,在我的测试中,即使是 ORDER BY 等效项也非常快。

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 2017-08-10
    • 1970-01-01
    • 2012-09-19
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多