高性能数据库意见

高性能数据库意见

问题描述:

我正在开发使用MySql数据库和Hibernate来访问它的软件。 我遇到的问题是,当我查找1个关键字时,我正在使用40 000个查询,而我开发的应用程序应该能够处理多个关键字。高性能数据库意见

所以基本上我们正在处理填充字符串值的数据库和大量的比较必须完成。现在,使用一个过滤器,我将所有可能的匹配加载到内存中,然后在java代码中对它们进行比较。这是高度递归和缓慢的。

所以显然MySql和大多数Hibernate不是要走的路。 任何人都可以提供一些关于哪个数据库可以提供更好性能的信息。 我正在研究Hypertable,MongoDb,Hbase,图形数据库......但我不确定要走哪条路。

请帮忙。 谢谢

+2

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

你真正的问题是你使用40,000个查询。

你能解释你的问题和过程,导致这么多的查询?

无论你使用哪个数据库,你的算法听起来都太过于苛刻,所以它总是很慢。

我们先来修复它。

也许我误解你的问题,但是...

现在,使用过滤器我加载在memmory所有可能的比赛,我在Java代码中对它们进行比较。这是高度递归和缓慢的。

听起来像你试图做你的数据库的工作,内存?创建一个索引,编写一个更好的SQL查询或其他东西,但是你正在加载所有可能的匹配并迭代它们?那时,为什么要使用数据库呢?

基本上,我不认为这是你选择的数据库(MySQL可以处理大于40,000条记录的查询,而且没有问题)。我认为你的算法需要一些工作。

你的方法是错误的,你正在做一些MySQL本身的工作 - 它可以将数据集存储在RAM中,并从那里使用它,这就是你的算法。

另一件事是,对于文本搜索等特定的东西 - 有已知的方法和专门用于此目的的各种存储引擎。 例如,Sphinx就是其中之一。

另一件事实际上是使用某种数据结构,使搜索快速,如trie - 这是非常有用的做事情,如自动完成(这只是一个例子,不必直接连接到您的问题 - 这只是暗示有已知的数据结构可以快速处理字符串)。

此外,为什么您认为NoSQL解决方案在比较大量字符串数据时会更快?

正如其他人指出的 - 看起来你的应用程序设计和算法是这里的罪魁祸首,而不是底层技术。你应该更准确地回答你的问题,并概述你在做什么,你如何做,以及你想要做什么。当你回答这些问题时,人们可能会指出你解决问题的正确方向,因为看起来你采取了错误的做法。