2012-06-06 53 views
1

我正在開展一項旨在分析從各種終端收集的生物特徵數據的項目。這個過程不是非常關鍵的性能。而是它的I/O有界。數據量非常巨大。 (每桌數億記錄)。不幸的是數據庫是關係的。有20個外鍵。在完成工作期間更改引用鍵的值非常常見。所以在收集數據時會有很多UPDATE和SET NULL。哪個DBMS適合我的需求?

目前,設計了數據庫的語義。所有程序幾乎完成,並且還創建了用於數據庫的MySQL原型。它適用於樣本(小規模)數據。

我做了一個搜索,爲項目找到合適的DBMS。谷歌搜索「DBMS比較」,...沒有幫助。人們說對立面的東西。有人說MySQL會執行更快的插入和更新,有人說Oracle9更好...

我無法在DBMS之間找到任何可靠的,基於基準的比較。我在日常項目中使用MySQL,但這看起來更爲重要。

我們所需要的:DBMS的

  • 許可和成本並不重要,但當然一個開源(GPL或LGPL)是首選(因爲整個項目將LGPL下發布)。
  • 非常快速的插入,非常快速的更新,需要很多外鍵。
  • DBMS應該一次響應0-100個連接。
  • 終端通過本地網絡(LAN)連接到服務器。

我真正在尋找的是各種DBMS的基準。它可能包含圖表,在各種情況下(與參考字段或普通表格的關係)分開比較不同操作(插入,更新,刪除)...

+0

我想知道爲什麼我得到-1這是不是這個問題有建設性? –

+0

可能因爲沒有確定的答案。檢查[faq](http://stackoverflow.com/faq#dontask)。 – BryanH

+0

@ sorush-r,我沒有給出-1,但它不具有建設性,因爲我不能說「你應該使用SQL-Server」並且它是絕對正確的(不同於「多少個2 + 7使?「答案'9',不能有爭議)。請參閱:http://stackoverflow.com/faq#dontask。 – Crisfole

回答

1

對於這種回答,我會推薦PostgreSQL, Informix或Oracle。 PostgreSQL是開源的(BSDL,GPL兼容,大家都同意)。原因與數據建模的某些方面有關,可能對您的案例非常有用。一般來說,你有兩個重要的問題:

1)我可以調整我的分貝,我正在做什麼?我能擴展多少?

2)如何建模我的數據?

首先,Oracle和PostgreSQL更復雜但更靈活。這種靈活性可能派上用場。第二,靈活性可以爲您節省以後的工作量。此外,它開啓了關於優化的新門,這在直接關係模型中是不可能的。首先,我會建議看看這個:http://db.cs.berkeley.edu/papers/Informix/www.informix.com/informix/corpinfo/zines/whitpprs/illuswp/wave.htm,因爲它會給你一些背景知道我在想什麼。另外,如果你看看Stonebraker在談論的是什麼,你會發現,這裏的直線基準測試真的是一個蘋果的比較。

的與ORDBMS的念頭意味着一些重要的事情:

  1. 您還可以模擬數據功能依賴於你的數據。例如,您可以使用Java或Python中的函數來處理數據並返回結果。您可以對這些函數的輸出進行索引,如果需要或不在插入和選擇性能之間進行交易,則交易插入以選擇性能。
  2. 存儲的數據越少意味着插入速度越快。
  3. 能夠使用自定義類型和函數擴展數據,提供更高性能的數據訪問。

PostgreSQL 9.2將在足夠的硬件上支持每秒大約14000次寫入,這是沒有什麼可以打噴嚏的。當然,這取決於寫入的寬度,服務器上的硬件性能等。Affilias使用PostgreSQL來管理.org和.info頂級域(web-scale!),也可以通過Skype的基礎架構(仍然是,即使在微軟收購它們之後)。最後,作爲信息管道的一部分,如果你正在處理大量的數據,並且在發送到PostgreSQL之前需要做一些預處理,你可以看一下數組原生數據庫(對於科學工作中常見的NoSQL方法)或VoltDB(用於高吞吐量處理的內存存儲)。儘管它們是完全不同的系統,但VoltDB和Postgres實際上是由同一個人開始的。

最後關於基準圖表,主要的數據庫供應商或多或少的禁止在許可協議中發佈這樣的內容,所以你不會找到它們。