2010-01-22 38 views
4

我需要處理幾個數據樣本,說,N。樣本代表相似的數據,但來自不同的來源。例如,不同商店的訂單歷史。所以所有樣本的結構都是一樣的。與數據操作我有幾個可能性:什麼是更好的:有許多相似的數據庫或一個數據庫與相似的表或一個數據庫與一個表?

  1. 使用N數據庫具有相同 架構,每個樣品

  2. 使用一個數據庫,但N套表。例如,User_1,...,User_N; Product_1,...,Product_N,Order_1,...,Order_N等等。

  3. 使用一個數據庫,一套表用戶,產品,訂單,但是添加到每個表格,它表示一個樣本指數的輔助列。顯然,這個列應該是一個索引。

最後的變種似乎是最方便的使用,因爲所有的查詢變得簡單。在第二種情況下,我需要將一個表名稱作爲參數發送給一個查詢(存儲過程)(有可能嗎?)。

那麼你會建議哪種方式?表現非常重要。

回答

5

第1步。獲取有關數據倉庫的書 - 因爲這就是你正在做的。

第2步:分區你的數據轉化爲事實(可測量的東西像$的,權重等)和尺寸

步驟(如產品名稱,訂單號,用戶名等非可測量的屬性) 3.建立一個事實表(例如,訂購物品),由事實的維度包圍。訂單項目的產品,訂單項目的客戶,訂單項目的訂單號碼,訂單項目的日期等等。這將是單個數據庫中的一個事實表和多個維度表。每個「起源」或「來源」只是基本事實的一個維度。

第4步。使用非常簡單的「SELECT SUM()GROUP BY」查詢來彙總和分析您的數據。

這是性能最高,最具擴展性的做生意的方式。購買Ralph Kimball的數據倉庫工具包書籍以獲取更多詳細信息。

不要構建Ñ數據庫具有相同的結構。建立一個用於測試,一個用於生產,但不建立N

不要構建Ñ表具有相同的結構。這就是關鍵所在。

+0

步驟2和步驟3:還有誰提供這種解決方案的商業人士。 – 2010-01-22 18:27:13

1

那麼,如果你分開數據庫,你會有更小的表。這通常更高效。 如果您需要訪問另一個數據庫,那麼使用Microsoft SQL Server即可。如果你需要到另一臺服務器上的數據庫,那也是可能的。

這取決於數據的相關程度。

+0

不同樣本之間的數據不存在依賴關係。每個樣本都是來自其他的獨立樣本。 BUt ...如果將有100個數據庫呢?沒關係? – flashnik 2010-01-22 18:24:38

+0

這取決於:服務器有多少RAM,有多少服務器,有多少人訪問每個數據庫,每秒有多少讀/寫,有多少帶寬可用。 通過建議幾個數據庫,我已經猜測你每個樣本將有數百兆字節的數據。如果每個樣本僅使用50-100兆數據庫空間,那麼就像前面提到的那樣,只需添加一個帶有每個樣本ID的表格就可以堅持到一個數據庫並讓您的生活更輕鬆。 – Trevoke 2010-01-22 18:33:41

2

這裏是一個例子。示例中的事實表的每一行都有一個來自訂單的行項目。 OrderID字段可用於查找特定訂單中的所有項目。

sales_model_03

+1

+1讚賞圖。 – 2011-06-03 12:51:21

相關問題