2009-11-19 49 views
2

我被要求爲我們的應用程序考慮一個數據庫。大約有7種不同的數據需要存儲。一種是標識數據,其可能包含唯一的序列號,時間,地點。所有其他6個數據集(4個二進制原始數據,2個文本數據)必須由識別數據標識。其中3個是大約2 MB的記錄,其他的只有幾KB。是一張9 GB的數據庫好設計嗎?

的記錄存儲的最大數量爲1500每行大約6 MB,所以最大總數據將在約9 GB。

我想只有一張桌子。但對我來說,看起來很醜,有一張關於9 GB數據的表格。

你有這樣的數據庫嗎?我們可能會使用MySQL RDBMS。你可以打破這個是

+0

謝謝你們。二進制原始數據是用各種掃描儀機器生成的。訪問數據庫非常輕。一個站,一個數據庫,掃描得到一個原始數據,保存它,機器處理它,保存另一個原始數據。 我想到的只是保存數據庫和原始數據保存到文件的路徑。但安全性如何?我們在窗戶。 – 5YrsLaterDBA

回答

0

一種方式是通過具有隻是有序列號,時間和地點一個表。 然後,在其他表中,使用引用該表的外鍵存儲數據集。

如果沒有關於數據庫如何使用的更多信息,很難提供更多的建議。

7

我有一個很難可視化你的數據結構,但我給這個作爲一個一般的經驗法則:

只要表不能被更多的標準化,有什麼本質這個尺寸的單個表格是錯誤的,除了性能。但是,如果數據正常化並且您已考慮所有其他因素,則我沒有太多建議。

但是,我會考慮是否真的有必要將二進制數據存儲在數據庫中。如果這些是圖片文件或文檔,或者您可以在文件系統上存儲的文件,我建議將這些文件存儲在數據庫中的文件系統和路徑中。 (這是一個反覆出現在這個網站上的話題,我同意大多數人在不必要的時候存儲BLOBS是一個壞主意。)

+0

如果將二進制數據保存在文件中並將路徑放入數據庫中,備份和安全性如何? – 5YrsLaterDBA

+0

備份應該是正常操作的一部分,無論您是單個PC所有者還是大型公司。如果您是開發人員/ DBA,您需要了解安全性,您有什麼。如果這不屬於你的專業領域,我會建議聘請具有該專業知識的人或者讓有經驗的人協助,因爲安全性不是你想通過反覆試驗學習的東西。 – David

+1

+1。非結構化BLOB不適合由SQL處理。查看外部Blob存儲(EBS)。在MySQL中,在設置下,您可以添加EBS作爲存儲引擎。 –

0

想想你需要檢索的數據以及每個查詢需要什麼,特別是常見的查詢,從那裏找出最佳的數據庫結構。另外,您是否需要將二進制數據與所有其他元素一起檢索?這可能是基於文件的,只有存儲在數據庫中的文件路徑。數據配置文件越細,查詢和整體性能就越快。

2

我認爲MySQL將這樣的工作量死:)和關係型數據庫是不適合這樣的任務。

所以你的描述看起來很像Google Big Table。你可以在YouTube上找到有趣的介紹。

採取開源實現這樣的數據庫Hadoop

+0

+1。有趣的答案。我需要查看Google Big Table。謝謝。 – David

+0

你是說9GB對於MySQL來說太大了,或者一個表加上了9GB會導致MySQL很難? – 5YrsLaterDBA

+0

也許9GB數據庫對於MySQL來說可以,但是大的BLOB數據可能會成爲問題。 – Elalfer

1

我會稍微改變丹尼爾的解決方案的樣子:創建一個表的簡單數據字段,然後爲每個類型的二進制對象的單獨的表。像這樣:

Records 
======= 
SerialNumber (PK) 
Time 
Location 
Text1 
Text2 

Images 
======= 
SerialNumber (FK) 
Image1 
Image2 

Files 
======= 
SerialNumber (FK) 
File1 
File2 
0

如果沒有更多關於數據實際的信息,很難回覆。

但是,當你說的標識「可能包含一個唯一的序列號,時間,地點」,這聽起來你把三個不同的東西喜歡到一個領域,它幾乎總是一個壞主意。你的意思是說有時它是一個序列號,有時候是一個時間,有時它是一個位置?如果一個對象有三個不同的標識符,那麼很可能這是三種不同的對象,應該是三個不同的表。當有人告訴我他們的表的主鍵是一個有時包含客戶帳號的字符串,有時存儲郵政編碼,有時還有產品部件號,我的直接反應是這應該是三個表:一個用於客戶,一個用於商店,還有一個產品。

同樣,您正在存儲的這個「其他數據」是什麼?如果它總是同一種Blob,那麼比單個表是有意義的。如果他們不同,那麼強迫他們進入同一張桌子可能是一個錯誤。

那麼,也許這不是你的意思,我不能確定。

1

表中的BLOB和TEXT列不是'內聯'存儲的,即它們不會影響表的大小。 BLOB /二進制數據和文本由MySQL存儲/管理在單獨的內存區域中。

如果排除這兩種字段,則您的行大小將爲100個字節(比方說)。對於1500行,這將達到150,000字節 - 150千字節。 BLOB和Text是表格的一部分,但從某種意義上說,它們不會影響9 GB的表格大小。

因此,不要擔心或不舒服的表大小。