我有PostgreSQL中的一个项目,以创建多个架构一个数据仓库。模式具有相同的结构(表格,约束)。 我被困在这个问题上:我在DWH中使用的所有模式中都有一个表“employees”。 schema1表员工中的第一个条目是1 John Dow,schema2表员工中的第一个条目是1 Mary Jane(id列是自动增量)。 有没有办法用这种结构创建DWH?有没有办法对模式数据进行分区? 谢谢。DWH
Q
DWH
1
A
回答
0
最简单的方法可能会分配一个号码键的最显著位,成为源ID,从而使你的钥匙在所有的源数据库中是唯一的。例如。假设您将永远不会有超过100个数据库存储,因此7位数据库标识符就足够了。
- 确保数据库具有连续的整数主键或引用这些外键的表,使用相同的数据类型。该数据类型必须足够大,以保存任何表上所有行的值,而不触及最重要的8位。所以
INTEGER
(32位)的密钥将留下剩余的允许多达16777215个插入24位,并BIGINT
(64位)的密钥将离开56位剩余,允许多达72057594037927935个插入。 (要注意的是ALTER TABLE ... ALTER COLUMN SET DATA TYPE
需要一个完整的表重写,并且可用于高容量的表非常慢。) - 分配各个DB一个唯一的,7位数据库标识符将占据每个键的最显著8位。你只能得到7位而不是8位,因为最高位是签名位,你不能触及它。
- 对于数据库中引用它的每个整数主键和外键,更新它,将
DB_ID << 24
(对于32位密钥)或DB_ID << 56
(对于64位密钥)添加到它。例如。对于ID为13和32位密钥的数据库,您应该为每个密钥值添加218103808。 - 任选地,添加
CHECK CONSTRAINT
s至每个表中,确保其关键是在范围[(DB_ID << 24) + 1, ((DB_ID+1) << 24) - 1]
。 - 使用:
ALTER SEQUENCE :seq_name MINVALUE :min_val MAXVALUE :max_val START WITH :start_val RESTART WITH :start_val
重新启动每个表的PK序列,其中min_val = (DB_ID << 24) + 1
,max_val = ((DB_ID+1) << 24) - 1
和start_val = currval(SEQUENCE_NAME)
。
+0
感谢您的回复。我正在努力完成这项工作。再一次感谢你。祝你有美好的一天 ! – k4br4s
0
重新计算作为
<id> * <# of schemas> + <schema number>
例如主键,如果有三个模式中,从第一模式号7将成为7 * 3 + 1 = 22,并且从第三模式号5将成为5 * 3 + 3 = 18。
这样,你可以很容易地在无碰撞的方式转换所有的数字。
+0
谢谢你的回应。我的问题是我的模式编号是动态的。它适用于应用程序,每当客户注册我们的帐户时,应用程序都会为该客户端生成架构。 – k4br4s
相关问题
- 1. SSRS与Azure中的Sql DWH
- 2. DWH和Bigdata测试工具
- 3. 什么是因果维度在DWH
- 4. DWH事实表设计(计算测量)
- 5. 用代理键(和SCD)导入DWH
- 6. 在MySQL中创建“DWH like”星型模式
- 7. DWH不是星型模式不是雪花不是E-R
- 8. 最佳设计模式 - 用于DWH加载的SSIS包装
- 9. Azure SQL DWH:可以连接登录但不是用户
- 10. 使用T-SQL有效地构建DWH从父 - 子表格
- 11. 如何解决实时dwh删除过程?
- 12. 从Azure Db到Azure的Azure数据同步DWH
- 13. 应将什么策略应用于将此源类型加载到DWH?
- 14. 模式中的流量如何:blob(中心us)---> adf复制活动(美国西部)---> azure dwh(中心us)
- 15. 为什么我们应该选择ETL/DWH/BI的解决方案,而不是每个解决方案的专用解决方案?
- 16. 在SQL Server 2008中的行之间添加分钟 - 更新
- 17. 如何在Power BI中使用计算列中的瑕疵?
- 18. puppet:创建符号链接并将文件保留在原始目录中
- 19. 问题截断表在链接服务器
- 20. 访问oracle数据库
- 21. 带有语法错误的SQL查询
- 22. SQL Server中,SELECT
- 23. Azure数据仓库是否可以位于Azure SQL弹性池中?
- 24. 数据仓库中的代理键
- 25. 错误:无法创建目录“基地/ 16386”:没有剩余空间设备
- 26. 是SSIS原始文件是两个SQL Server数据仓库之间交换数据的最佳方式吗?
- 27. 数据集市和决策支持系统(DSS)之间有什么区别?
- 28. 维度和DMQL的主要概念?
- 29. 虚拟主机甲骨文数据库和数据仓库功能
- 30. 避免微服务中的瓶颈
是否有任何理由不能简单地将所有员工数据合并到一个表中,添加一个捕获源模式名称的字段(如果需要),然后为每个数据分配一个新的ID记录? – RADO