2011-12-30 61 views
3

我正在構建一個數據倉庫。我需要從不同來源獲取數據並將它們放在一起,以便我可以生成報告。我會做大量的表格連接。我說的可能是總共20張桌子,每張桌子將從100MB到5場演出。何時將表分成多個數據庫?

我想知道是否應該爲每個表創建不同的數據庫,因爲每個表可能具有完全不同的數據集類型。

例如,我可能有一張桌子上有1 GB有關汽車設計的數據。我將在這些車上安裝另一張帶有3 GB銷售數據的表格。

把它們分成不同的數據庫是否合適?

請讓我知道什麼額外的信息是需要建議我在這種情況下。

+0

您是否打算將生產數據複製到倉庫? – UnhandledExcepSean 2011-12-30 23:59:21

回答

6

如果存在邏輯或業務分離,通過一切手段將它們放在不同的數據庫中。這只是乾淨的數據應用程序開發。但是,如果您打算加入或合併不同的數據集,則可以通過擁有單個數據庫來節省一些開銷和管理成本。總共20桌並不是很多(我正在研究一個擁有大約3700個桌子的系統,不過〜1600是審計)。請記住,如果您有一個體面的模型,索引等,SQL Server可以擴展到TB級數據。

如果您對倉庫的性能感興趣,可以將該服務器塞滿RAM和硬盤。要充分利用硬盤驅動器,您需要考慮利用多個文件/文件組並適當地將表格放在適當位置。

+3

+1干擾:) – cairnz 2011-12-30 23:49:24

+1

Cuz dats我如何搖滾週一! – jklemmack 2011-12-30 23:53:05

+0

@ssyladin謝謝!想知道你是否可以幫助http://stackoverflow.com/questions/8685034/sql-server-2008-importing-5-gig-file-into-table – 2012-01-01 06:23:05

3

如果你打算在這些表之間建立外鍵關係(聽起來你會這樣做),那麼我會把它全部保存在一個數據庫中。通常我使用單獨的數據庫來完全分離數據體。

如果您將它們分開,那麼當您嘗試同時查詢兩者時,您將碰到一些有趣的挑戰。

+0

謝謝!想知道你是否可以幫助http://stackoverflow.com/questions/8685034/sql-server-2008-importing-5-gig-file-into-table – 2012-01-01 06:23:16

5

分裂到不同的數據庫通常是爲了傳播I/O負載。在SQL Server中,如果要跨多個磁盤組/磁盤分佈I/O,則可以在數據庫本身中擁有不同的文件組。在倉儲場景中,您通常會處理數據庫存儲的SAN解決方案,並且根據您的場景,這些並不真正關心性能方面,而其他人可能會在給定計劃時爲您提供額外的性能。

你也有表格分區,你可以查看你的數據庫的增長情況,但在我看來,只要確保你有足夠多的舊內存,它將比你花費更多的時間和精力來爲數據庫文件。

我們在單個數據庫文件中運行100個數據庫,性能非常好。許多常見的訪問數據都駐留在內存中,但具有體面的表結構和邏輯索引,您立即就能擁有一個響應式倉庫。

+0

+1提及IO瓶頸。分離數據庫使得以後在這方面很容易管理,特別是因爲數據集之間不需要JOIN。 – believesInSanta 2016-12-16 07:26:50

相關問題