我正在为一个新的开源应用程序寻找最好的数据库软件。主要的标准是它必须是闪电般的快速搜索成千上万的条目。理想情况下,它将完全基于Java,但只需拥有Java就可以了。我希望在GPL下获得许可,所以这个项目必须与之兼容。到目前为止,SQLite似乎是最普遍的解决方案,但如果结果可能会更好的话,我不想忽视其他的解决方案。
当我搜索一般的互联网时,大多数结果似乎是针对对象数据库的。我不在乎数据库是基于对象的还是关系的,我也不在乎它是否是"NoSQL“。我对MySQL有丰富的经验,但是我并不害怕学习一种新的查询语言或接口,如果这样更快的话。这将管理的主要数据类型是文件名,其中至少附加了20个元数据字段;我希望有多个具有相同字段的数据集,并且最好也将一些应用程序首选项存储在数据库中。
我从一些回复中看到,对于我(以前)在标题中使用"embedded“一词,可能存在混淆。我想澄清的是,我的意思是“嵌入到应用程序中并重新分发”,而不是“在嵌入式设备上使用”。该应用程序目前针对的是全尺寸计算机,尽管“理想情况下它将完全基于java”的原因之一是一个梦想的愿望,即创建Android版本。
发布于 2011-09-14 19:55:11
看看http://www.polepos.org/,有一个基准测试,它认为http://www.db4o.com/是最快的嵌入式dbs之一。
我个人曾与db4o合作过,它非常好,并且在GPL下获得了许可,所以它应该可以满足您的需要。
发布于 2011-09-14 19:52:14
最终这取决于您的应用程序。SQLite的设计并不像标准客户端\服务器数据库(如Oracle和MySQL )那样健壮。在SQLite的FAQ中,他们就这个主题说了以下几句话:
但是,客户机/服务器数据库引擎(如PostgreSQL、MySQL或Oracle)通常支持更高级别的并发性,并允许同时向同一数据库写入多个进程。这在客户机/服务器数据库中是可能的,因为始终有一个控制良好的服务器进程可用于协调访问。如果您的应用程序需要大量并发性,那么您应该考虑使用客户机/服务器数据库。但经验表明,大多数应用程序所需的并发性比它们的设计者想象的要少得多。
尽管如此,SQLite是非常快的,但这也取决于您将如何使用它和什么平台。如果您在嵌入式设备上运行,您可能会发现与在常规桌面\服务器上运行时相比,性能差异很大,这就是为什么很难给出确切的答案。SQlite确实从不遵守标准的client\server模型中获得了显著的性能提升。
最好的选择是选择一些,比如SQLite、PostgreSQL、MySQL,并通过运行一些模拟您在应用程序中遇到的常见场景的测试来查看每个测试对性能的影响。
https://stackoverflow.com/questions/7421852
复制相似问题