database - 如何在物理/逻辑上分离集成层和数据仓库,是否有必要?

标签 database schema etl data-warehouse vertica

在我们的测试 DWH 服务器上,我们使用的是 Vertica Community Edition。我们对 ETL 过程和查询性能非常满意。

我们从几个来源(Informix、SQL Server、MySQL、Google Docs)导入数据,将其放在一个模式中,前缀为 bussinessProcessName_stage_

在 ETL 过程结束时,有许多名为 bussinessProcessName_factbussinessProcessName_dim_dimName 的表,只有少数 shared_dim_dimName

是否需要在不同的模式或不同的数据库中分离这些表? 同样的问题也适用于 DWH 内部的数据集市。

我们主要使用 star-schema,很少使用 show-flake,甚至还有一个平面设计的数据集市。

最佳答案

大多数数据库系统使用数据库级别作为最高的逻辑层次结构。但是,Vertica 只允许单个数据库同时运行。这意味着逻辑设计发生在模式级别。例如,传统的数据库系统可能有客户订单等数据库。在 Vertica 中,这些将在模式级别识别。

逻辑组织和命名约定因组织而异。重要的是它是标准的并且始终如一地使用。您可能想要查看逻辑上适合的内容,并相应地对表进行分组。例如,每个业务流程名称都可以有自己的架构 (business_process_name.fact_table)。更好的做法是明确而不是使用单一模式,即使您的表很少。如果将来您添加更多表,将更易于管理。

使用模式的另一个好处是便于管理。在执行备份或维护任务时,它们可以在架构级别执行。

关于database - 如何在物理/逻辑上分离集成层和数据仓库,是否有必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085968/

相关文章:

php - fatal error :未捕获错误:调用未定义函数堆栈跟踪:引发#0 {main}

mysql - 根据另一个元表的条件和用户输入从表中选择

c# - SSIS使用脚本任务重命名目录中的文件

ssis - Camel 与 ETL 工具

sql - 正则表达式作为 SQL 模式的一部分

java - 使用 sql 数据库数据填充 jtable 时出现 nullpointerException

mysql - 我有一个具有挑战性的 MySQL SELECT 查询,涉及库存和阈值边界

sql - 如何授予数据库角色对架构的执行权限?我究竟做错了什么?

database - 数据库架构组织

sql-server - SSIS For Loop容器成功运行,但循环内的数据流任务和脚本间歇运行