gpt4 book ai didi

elasticsearch - cassandra vs Elasticsearch vs任何其他设计建议

转载 作者:行者123 更新时间:2023-12-03 01:30:14 26 4
gpt4 key购买 nike

我们需要对存储在 rds 中的数据运行分析查询。由于查询分组和表的大小不断增加,这变得非常非常慢。
例如,我们在 RDS 中有以下 3 个表:

alm(id,name,cli, group_id, con_id ...)
group(id, type,timestamp ...)
con(id,ip,port ...)

每个表都有非常大量的数据,并且随着新数据的进入每分钟更新几次。

现在我们要运行聚合查询,例如:
select name from alm, group, con where alm.group_id=group.id and alm.con_id=con.id group by name, group.type, con.ip

我们还希望用户将来运行自定义聚合查询,而不是我们将来提供的修复查询。

到目前为止,我们正在考虑的选项正在迁移到 Cassandra、Elasticsearch 或 Dynamo db,以便聚合更快。有人可以指导如何解决这个问题吗?或者任何经验的碎屑?有人知道任何技术比其他技术具有严重优势吗?

最佳答案

Cassandra 和 DynamoDB 与 ElasticSearch 有很大不同。这三个都与关系数据库产品非常不同。
对于 ad-hoc 分析,具有良好设计模式的关系数据库可能非常好,直到您需要将数据拆分到多个服务器(然后复制问题开始占据优势)。这确实是非关系数据库的主要动机。但问题是,为了解决水平扩展问题,它们通常会交换一些特征,例如加入和聚合。
Elasticsearch 非常擅长回答搜索查询,但不是特别擅长聚合(除了非常基本的计数、总和及其估计值)。它在索引大量数据方面令人惊叹,但它无法回答需要复杂交叉索引操作的查询。它也没有那么健壮(有时可能需要重建索引)
如果您有大量数据并且需要聚合,那么您几乎有两种选择:

  • 如果您可以摆脱离线分析,那么 Spark 等分布式数据处理框架可以非常有效地为您提供所需的答案
  • 如果您需要在线分析,最常见的方法是预先计算聚合并在获得更多数据时进行更新,这样查询的答案可以非常快速,而无需为每个查询处理大量数据

  • 不要害怕混搭。关系数据库与非关系数据库一样有其用途。虽然没有银弹。

    关于elasticsearch - cassandra vs Elasticsearch vs任何其他设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385652/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com