高性能数据库意见

时间:2011-05-04 09:18:43

标签: mysql hibernate mongodb hbase hypertable

我正在使用MySql数据库和Hibernate开发软件来访问它。 我遇到的问题是,当我查找1个关键字时,我已经使用了4万个查询 我正在开发的应用程序应该能够处理多个关键字。

所以基本上我们正在处理一个填充了String值的数据库,并且必须进行大量的比较。现在,使用过滤器我在memmory中加载所有可能的匹配项,并在java代码中对它们进行比较。这是高度递归和缓慢的。

显然,MySql和大多数Hibernate都不是可行的方法。 有人可以提供一些关于哪个数据库可以提供更好性能的信息。 我正在研究Hypertable,MongoDb,Hbase,图形数据库......但我不知道该走哪条路。

请帮忙。 感谢

3 个答案:

答案 0 :(得分:2)

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

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

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

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

正如其他人所指出的那样 - 您的应用程序设计和算法似乎是这里的罪魁祸首,而不是基础技术。你应该在你的问题中更加准确,并概述你正在做什么,你是如何做的以及你希望它做什么。当你回答这些问题时,人们可能会指出你正确的方向来解决你的问题,因为你似乎采取了错误的方法。

答案 1 :(得分:0)

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

您能解释一下导致这么多疑问的问题和流程吗?

无论你使用什么数据库,你的算法听起来都太过分了,所以它总是很慢。

我们先解决它。

答案 2 :(得分:0)

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

  

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

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

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