【发布时间】:2019-07-01 15:29:53
【问题描述】:
我正在开发一个应该优化以下过程的多步骤数据管道:
1) 从 NoSQL 数据库 (MongoDB) 中提取数据。
2) 转换数据并将其加载到关系 (PostgreSQL) 数据库中。
3) 使用Postgres 数据库构建数据仓库
我手动编写了一个脚本来处理步骤 1) 和 2),这是一个中间 ETL 管道。现在我的目标是使用 Postgres 数据库构建数据仓库,但我对 DW 设计有一些疑问。下面是关系型数据库的维度模型:
有 2 个主表,Occurrence 和 Canonical,从中继承了一组其他表(分别以红色和蓝色绘制)。请注意,有 2 个子数据类型,ObserverNodeOccurrence 和 CanonicalObserverNode,它们与另一个表具有额外的多对多关系。
我就如何在数据仓库中实现继承提出了一些research 并认为最佳实践是将家庭数据类型(父表和子表)合并到一个表中 .这样做意味着添加额外的属性和很多 null 值。我的新维度模型如下所示:
问题 1:您认为这是解决此问题的最佳方法吗?如果不是,那会是什么?
问题 2:有针对本地数据仓库的软件推荐吗? (内部部署是必须的,因为它包含敏感数据)
【问题讨论】:
-
@philipxy 这是“基于实现继承的关系数据库的数据仓库的最佳设计方法”。略有不同。
标签: postgresql database-design data-warehouse class-table-inheritance multi-table-inheritance