数据模型指南,根据不断变化的过滤条件进行聚合的数据库选择

Data model guidance, database choice for aggregations on changing filter criteria

问题:

我们正在寻找有关使用什么数据库以及如何对我们的数据建模以有效查询聚合统计信息以及与特定实体相关的统计信息的指导。

我们有不同的基础数据,但这个例子应该展示基本问题:

假设您有一段时间内的 Facebook 好友请求和互动数据。您现在想回答如下问题:

普遍的问题是,对于我们要计算统计数据的实体和计算这些统计数据的相关实体,我们有很多不断变化的过滤条件(国家、主题、兴趣、时间)。

非功能性要求:

问题:

到目前为止我们尝试了什么:

您谈到要使用哪个数据库,但听起来您需要一个 数据仓库或商业智能 解决方案,而不仅仅是一个数据库。

区别(简而言之)是数据仓库 (DW) 可以支持多个报告视图、自定义数据模型、and/or 预聚合,这些可以让您进行高级分析和详细过滤。数据仓库倾向于保存大量数据,并且通常被构建为非常可扩展和灵活(就数据的使用方式而言)。有关 DW 和数据库之间区别的更多详细信息,请查看 this article.

商业智能 (BI) 工具是数据仓库的 "lighter" 版本,其目标是极快地回答特定的数据问题,而无需大量的最终用户技术知识。 BI 工具提供了大量可视化功能(易于配置图形和过滤器)。 BI 工具通常与数据仓库一起使用:数据被建模、清理并存储在仓库内部,BI 工具将准备好的数据提取到特定的可视化或报告中。然而,许多公司(尤其是较小的公司)确实在没有数据仓库的情况下使用 BI 工具。

现在,问题是使用哪个数据仓库 and/or BI 解决方案。

这本身就是一个完整的主题,远远超出了我在这里所写内容的范围,但这里有一些流行的工具名称可以帮助您入门:Tableau、PowerBI、Domo、Snowflake、Redshift 等

最后是数据建模部分。

为了总结您的要求,您有 "lots of changing filter criteria" 和您需要的各种统计数据,用于各种实体。

DW 内部的数据模型通常使用星型、雪花型或数据保险库模式。 (网上有很多解释这些的文章。)如果您使用纯粹的 BI 工具,您可以将数据去规范化为一个组合数据集,这将允许您使用多种过滤和计算选项,同时仍然保持高性能和速度。

让我们看看你举的例子:

Data of Facebook friend requests and interactions over time. You need to answer:

  1. In 2018 which American had the most German friends that like ACDC?

  2. Which are the friends that person X most interacted with on topic Y?

You want to filter/re-calculate the answers to those questions based on country, topic, interests, time.

一个潜在的数据集可以像这样构造:

互动日期 |发起人国家 |回复人的国家 |话题 |交互类型 |发起人的最大兴趣 |回复者的最大兴趣

这样您就可以轻松计算互动的数量,并按这些列中的任何一列过滤 and/or 分组。

如您所知,这只是一个庞大主题的冰山一角,但您提出的问题绝对可行,希望 post 能帮助您入门。还有很多咨询公司也很乐意提供帮助。 (免责声明:我在其中一家咨询公司工作 :)