我有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加載的SSIS包裝
- 5. 從Azure Db到Azure的Azure數據同步DWH
- 6. DWH不是星型模式不是雪花不是E-R
- 7. 在MySQL中創建「DWH like」星型模式
- 8. 使用T-SQL有效地構建DWH從父 - 子表格
- 9. 如何解決實時dwh刪除過程?
- 10. Azure SQL DWH:可以連接登錄但不是用戶
- 11. 應將什麼策略應用於將此源類型加載到DWH?
- 12. 爲什麼我們應該選擇ETL/DWH/BI的解決方案,而不是每個解決方案的專用解決方案?
- 13. 在SQL Server 2008中的行之間添加分鐘 - 更新
- 14. 如何在Power BI中使用計算列中的瑕疵?
- 15. 訪問oracle數據庫
- 16. Azure數據倉庫是否可以位於Azure SQL彈性池中?
- 17. 數據集市和決策支持系統(DSS)之間有什麼區別?
- 18. 維度和DMQL的主要概念?
- 19. 虛擬主機甲骨文數據庫和數據倉庫功能
- 20. 避免微服務中的瓶頸
- 21. Pentaho多個作業/轉換導入到存儲庫
- 22. 緩慢變化事實
- 23. 從ETL轉到ELT?
- 24. 如何在不存在位置路徑的情況下在Azure中創建外部表
- 25. 在openrowset中克服8000限制
- 26. Teradata - 如何選擇不鎖定作家? (鎖定行訪問與鎖定表訪問)
- 27. 的Sql鍊金術不能在事務塊
- 28. Azure機器學習工作室備份
- 29. 如何在Vertica中創建表後創建分段?
- 30. 獨立SSIS服務器的msdb數據庫在哪裏
是否有任何理由不能簡單地將所有員工數據合併到一個表中,添加一個捕獲源模式名稱的字段(如果需要),然後爲每個數據分配一個新的ID記錄? – RADO