2011-05-04 61 views
-1

我正在開發使用MySql數據庫和Hibernate來訪問它的軟件。 我遇到的問題是,當我查找1個關鍵字時,我正在使用40 000個查詢,而我開發的應用程序應該能夠處理多個關鍵字。高性能數據庫意見

所以基本上我們正在處理填充字符串值的數據庫和大量的比較必須完成。現在,使用一個過濾器,我將所有可能的匹配加載到內存中,然後在java代碼中對它們進行比較。這是高度遞歸和緩慢的。

所以顯然MySql和大多數Hibernate不是要走的路。 任何人都可以提供一些關於哪個數據庫可以提供更好性能的信息。 我正在研究Hypertable,MongoDb,Hbase,圖形數據庫......但我不確定要走哪條路。

請幫忙。 謝謝

+2

這將有助於更多地瞭解您正在使用的算法以及您對字符串所做的操作。你可以使用像獅身人面像,solr等全文搜索索引/引擎? – 2011-05-04 09:20:50

回答

0

你真正的問題是你使用40,000個查詢。

你能解釋你的問題和過程,導致這麼多的查詢?

無論你使用哪個數據庫,你的算法聽起來都太過於苛刻,所以它總是很慢。

我們先來修復它。

0

也許我誤解你的問題,但是...

現在,使用過濾器我加載在memmory所有可能的比賽,我在Java代碼中對它們進行比較。這是高度遞歸和緩慢的。

聽起來像你試圖做你的數據庫的工作,內存?創建一個索引,編寫一個更好的SQL查詢或其他東西,但是你正在加載所有可能的匹配並迭代它們?那時,爲什麼要使用數據庫呢?

基本上,我不認爲這是你選擇的數據庫(MySQL可以處理大於40,000條記錄的查詢,而且沒有問題)。我認爲你的算法需要一些工作。

2

你的方法是錯誤的,你正在做一些MySQL本身的工作 - 它可以將數據集存儲在RAM中,並從那裏使用它,這就是你的算法。

另一件事是,對於文本搜索等特定的東西 - 有已知的方法和專門用於此目的的各種存儲引擎。 例如,Sphinx就是其中之一。

另一件事實際上是使用某種數據結構,使搜索快速,如trie - 這是非常有用的做事情,如自動完成(這只是一個例子,不必直接連接到您的問題 - 這只是暗示有已知的數據結構可以快速處理字符串)。

此外,爲什麼您認爲NoSQL解決方案在比較大量字符串數據時會更快?

正如其他人指出的 - 看起來你的應用程序設計和算法是這裏的罪魁禍首,而不是底層技術。你應該更準確地回答你的問題,並概述你在做什麼,你如何做,以及你想要做什麼。當你回答這些問題時,人們可能會指出你解決問題的正確方向,因爲看起來你採取了錯誤的做法。