我正在开发一个多步数据管道,应该优化以下过程:
1) 从NoSQL数据库 ( MongoDB ) 中提取数据。
2)将数据转换并加载到关系(PostgreSQL)数据库中。
3)使用Postgres数据库建立数据仓库
我手动编写了一个脚本来处理步骤 1) 和 2),这是一个中间 ETL 管道。现在我的目标是使用Postgres数据库构建数据仓库,但我对 DW 设计有一些疑问。下面是关系数据库的维度模型:
有 2 个主表,Occurrence和Canonical,从中继承了一组其他表(分别以红色和蓝色绘制)。请注意,有 2 个子数据类型ObserverNodeOccurrence和CanonicalObserverNode与另一个表具有额外的多对多关系。
我对如何在数据仓库中实现继承进行了一些研究,并认为最佳实践是将家庭数据类型(超级表和子表)合并到一个表中。这样做意味着添加额外的属性和大量的空值。我的新维度模型如下所示:
问题1:您认为这是解决这个问题的最佳方法吗?如果不是,那会是什么?
问题 2:有针对本地数据仓库的软件推荐吗?(内部部署是必须的,因为它包含敏感数据)