2013-11-01 103 views
-1

有大約6百萬條記錄的數據集。每個記錄具有相同數量的字段。有8個領域共:針對特定需求的最佳SQL NoSQL解決方案?

ID Title Color Date1 Date2 Date3 Date4... 

應該有由標題和所有日期字段(或在RDBMS而言,「列」)來過濾這些記錄的方式。

數據的大小並不是很大,幾千兆字節。我們沒有很長的文本字段等(我們在架構創建過程中擺脫了它們,所以現在我們在數據集中只有非常重要的字段)。

後臺讀取&寫入數據相當密集。我們真的希望儘可能加快讀取\寫入(並按字段進行過濾)。目前我們使用的是Postgres,我們喜歡它的可靠性,但看起來並不是很快。是的,我們做了一些調整和優化,增加了索引,將它安裝在32GB內存的機器上,並設置了所有必要的設置。換句話說,它可行,但我仍然相信它可能會更好。我們需要的是速度:按日期和標題過濾記錄應該快速,非常快。數據插入可能會比較慢。後端過濾所有未處理的記錄,處理它,並設​​置日期標記(處理日期時間)。每5-10秒就會有大約50個後端「工人」執行,因此數據庫應該能夠執行得非常快。我們也做一些數據庫迭代(一種map \ reduce作業),所以數據庫解決方案應該能夠執行這種類型的任務(這裏RDBMS並不是很好)。

我們沒有加入,數據已經針對大數據解決方案進行了優化。只有一個'大桌子'。

而且我們希望在單個節點上或許多小型實例上運行它。數據並不重要。但是我們希望避免使用昂貴的解決方案,所以我們正在尋找一種SQL或NoSQL解決方案,這種解決方案在相同便宜的硬件上執行速度會比Postgres快。

我記得大約一兩年前我嘗試過MongoDB。從我記憶中來看,過濾並不是那麼快。卡桑德拉更好,但我記得它只能執行一小部分過濾查詢。 Riak很好,但只適用於擁有很多機器的大集羣。這是我非常基本的經驗,如果你們知道這些解決方案中的一個表現出色,請寫下。或建議另一種解決方案

謝謝!

+3

「數據量不是很大,幾千兆字節。」 - 這對Postgres來說很小。它可以(並且確實)處理數千次更大的數據庫而沒有任何性能問題。堅持你目前使用的是什麼;只是學會更好地使用它。 –

回答

1

我同意丹尼斯,你應該堅持使用Postgres。根據我的經驗,正確調諧的關係數據庫具有令人難以置信的快速結果。換句話說,我發現調整Mongo以使得在10ms或更短的時間內返回複雜的查詢比調整SQL Server和MySQL更困難。

閱讀本網站http://use-the-index-luke.com/瞭解如何進一步調整的想法。那傢伙還寫了一本可能對你有用的書。

就像丹尼斯說的那樣,數據量不是很大,以至於值得用NoSQL解決方案從頭開始。

+0

作爲一個說明,vanilla PostgreSQL處理數十TB的數據庫,並且像Postgres-XC或聯合存儲等方法,您可能會獲得多倍的大小。此外,我預計最終會解決大數據集中的主要瓶頸問題,所以我不會在這裏考慮大小。 –

2

我同意上面的Ryan。堅持使用PostgreSQL。

你還沒有描述你的寫入負載實際上是什麼樣的(你是不是更新了幾條記錄,而是有很多並行查詢?用更少數量的並行查詢更新,但更新了很多行一次等)。所以我不能告訴你你需要做些什麼來獲得更多的速度。

但是,根據您的問題以及您所說的迄今爲止所嘗試的內容,我建議您考慮聘請顧問以新鮮眼光來看待您的數據庫,查看您的環境等,並提出改進建議。我的猜測是,你有很多事情可以進行優化,你會在這種優化上花費很少,而不是轉換到新的環境。