2010-03-24 48 views
0

我一直在使用mysql(與innodb;在亞馬遜的rds),因爲它是一種普遍的默認,但它是可笑的表現不佳,並調整它只會延遲不可避免的。什麼數據庫可以很好地處理200 + GB的數據?

數據大多比較短(每個字節有1kB的<)可以獲得大約100M的URL的信息。有(或應該是,mysql似乎無法處理它)非常高的插入/更新/檢索量,但很少有複雜的查詢 - 並不複雜的查詢不會有用,但是因爲mysql太慢了以至於得到更快數據輸出,本地處理,並在某處緩存結果。

我可以不斷調整mysql並拋出更多的硬件,但它似乎越來越徒勞。

那麼有什麼選擇? SQL /關係模型/等等。可選 - 只要速度快,網絡化和語言無關,任何事情都可以做到。

+0

200GB沒有那麼多。它可能是你的代碼使用數據庫的方式嗎?可能會缺少索引,甚至會出現問題的亞馬遜rds。你是否解釋了你的疑問,看看有什麼不對? – 2010-03-24 17:16:20

回答

1

那麼「快速,網絡化和語言無關」+「少數複雜查詢」讓我們想起了各種NoSQL解決方案。僅舉幾例:

如果這不夠快,總是有惡人快速Redis這是我個人最喜歡的大氣壓。 :)它本身不是數據庫,但對大多數場景來說它已經足夠好了。

我相信其他人可以列出更多的NoSQL數據庫...
和總有http://nosql-database.org/

一般而言,此類別中的數據庫在您的方案中更好,速度更快,因爲它們已經放寬了約束條件,因此可以更頻繁地插入/更新/檢索。但是這要求您更加認真考慮數據模型,並且通常不可能直接進行SQL風格的複雜查詢 - 而是編寫更多預先計算的數據或使用更爲非規範化的設計來解決複雜性問題查詢。

但是由於複雜的查詢在你的情況下是一個小問題,我認爲NoSQL解決方案對你來說很理想。

+0

哪些NoSQL解決方案能夠很好地處理100GB數據? – taw 2010-03-24 01:57:55

+0

那麼,你可以嘗試Apache Cassandra ...來自Cassandra網站:「Cassandra在Digg,Facebook,Twitter,Reddit,Rackspace,Cloudkick,Cisco中使用」... – chakrit 2010-03-24 02:02:06

+0

@taw關於你對'ALTER TABLE' ,我想補充一點,像CouchDB這樣的解決方案是無模式的......這意味着一個文檔可能與另一個文檔看起來不同 - 沒有強制模式 - 這可能對您有幫助。 – chakrit 2010-03-24 02:06:08

1

您是否對應用程序和MySQL數據庫進行過任何類型的端到端分析?爲了提供更好的建議,理解你嘗試實現的改進和數據庫結構也是很好的。您還沒有提供關於如何配置MySQL數據庫的大量信息。它提供了很多調整選項。

如果您還沒有進一步瞭解產品,您應該拿起High Performance MySQL的副本。

除非你知道你的問題是什麼,否則沒有任何意義。 NoSQL解決方案可以提供性能優勢,但您幾乎沒有提供MySQL無法滿足您的需求的證據。

+0

儘管我喜歡做任何類型的端到端分析,但100GB +表上簡單的ALTER TABLE ADD KEY需要幾天的時間,所以我在做什麼樣的測試方面極其有限。我看不出有多大規模的多TB容量的希望。 – taw 2010-03-24 02:02:29

+0

你需要做更多的閱讀。這將幫助你剖析mysql http://serverfault.com/questions/3120/how-do-i-profile-mysql – 2010-03-24 11:33:15

1

利用您提供的有關應用程序數據和工作負載的數據,幾乎不可能確定問題究竟是MySQL本身還是其他問題。您似乎認爲您可以將任何工作負載投入到關係引擎,並且它應該處理它。因此,其他評論者提出的關於更仔細地分析性能的建議在我看來是有效的。沒有更多的數據(交易/秒等),關於其他合適的發動機的進一步分析也是徒勞的。

1

我不確定我是否同意跳轉到傳統數據庫的建議。它可能不是最有效的工具,但它是FAR得到更廣泛理解和使用的工具,並且非常懷疑您有一個無法通過高效建立的關係數據庫來處理的問題。 明顯的答案是Oracle,SQLServer等,但它可能只是你的數據庫結構是不正確的。我對MySQL不太瞭解,但是我知道它用於一些非常大的項目(eBay值得注意)。

+0

你可以考慮找到一位MySQL專家,你可以花幾天時間查看你的數據庫嗎? – 2010-03-24 16:33:03

相關問題