反对将 Elasticsearch 用作 OLAP 多维数据集的原因

Reasons against using Elasticsearch as an OLAP cube

乍一看,似乎使用 Elasticsearch 作为后端,可以轻松快速地构建具有传统商业智能环境中使用的类似于数据透视表的功能的报告。

"pivot-like" 我的意思是,在 SQL 术语中,数据按一到两个维度分组、过滤、按一个或两个维度排序并按多个指标聚合,例如用总和或计数。

"easy" 我的意思是,对于足够大的集群,不需要预先聚合数据,这样可以节省 ETL 和数据工程时间。

"fast" 我的意思是,与传统的商业智能系统相比,由于 Elasticsearch 的近乎实时的能力,报告延迟在许多情况下都可以减少。

是否有任何理由不将 Elasticsearch 用于上述目的?

ElasticSearch 是多维数据集的绝佳替代品,我们今天将其用于相同的目的。 巨大 的一个好处是,使用多维数据集,您需要知道要针对哪些维度创建报告。使用 ES,您只需输入越来越多的数据,然后再弄清楚您希望如何报告它。

在我们公司,我们经常让数据经历以下生命周期。

  1. 记录写入SQL
  2. 来自 SQL 的主键被写入 RabbitMQ
  3. 我们很快回复客户
  4. Rabbit有空的时候,用主键把我们要上报的所有数据都收集起来
  5. 该数据写入 ElasticSearch

忠告:如果您认为自己可能想要报告它,请从头开始。向 ES 插入 100 万行很容易,更新 100 万行更痛苦。