为快速即席查询构建100M记录表的好方法是什么?

Jak*_*old 7 sql database search database-design nosql

场景很简单,一个表中有大约100M记录,有10列(分析数据类型),我需要能够对这10列的任意组合执行查询.例如这样的事情:

  • a = 3 && b > 100过去3个月有多少条记录?

基本上所有查询都将是一种在时间间隔中有多少具有属性的记录XY,其中X可以是这10列的任意组合.

数据将继续存在,它不仅仅是预先给定的100M记录集,而是随着时间的推移而增长.

由于列选择可以是完全随机的,因此很可能无法为流行组合创建索引.

这个问题有两个部分:

  • 我应该如何在SQL数据库中构建它以尽可能快地进行查询,以及我可以采取哪些一般性步骤来提高性能?
  • 是否有任何类型的NoSQL数据库针对此类搜索进行了优化?我只能想到ElasticSearch,但我不会在这个大型数据集上表现得很好.

Die*_*ego 0

您应该构建一个 SSAS 多维数据集并使用 MDX 来查询它。

多维数据集具有“聚合”,这意味着提前计算的结果。根据您配置多维数据集(和聚合)的方式,您可以在度量值组上拥有 SUM 属性(例如 A),并且每次询问多维数据集如何使用时A 有很多记录,它只会读取聚合,而不是读取所有表并计算它。