用于大型数据集的嵌入式Java数据库

用于大型数据集的嵌入式Java数据库,java,sql,sqlite,hsqldb,h2,Java,Sql,Sqlite,Hsqldb,H2,我想移植一个基于PHP/MySQL的客户机/服务器应用程序,使之成为一个用Java编写的独立桌面应用程序。数据库已经发展到相当大的规模,有好几张数十万行的表。我预计某些表的条目数可能会增加到100多万条 哪种嵌入式数据库最适合处理此问题?HSQLDB和Sqlite似乎是显而易见的选择,尽管我猜还有其他选择。我的主要优先事项是能够高效地对大量数据执行查询(似乎证实了Sqlite可以处理这一点),以及能够轻松地从MySQL导入旧数据(我记得HSQLDB是一种痛苦) 注意:我知道以前也曾发布过类似的问

我想移植一个基于PHP/MySQL的客户机/服务器应用程序,使之成为一个用Java编写的独立桌面应用程序。数据库已经发展到相当大的规模,有好几张数十万行的表。我预计某些表的条目数可能会增加到100多万条

哪种嵌入式数据库最适合处理此问题?HSQLDB和Sqlite似乎是显而易见的选择,尽管我猜还有其他选择。我的主要优先事项是能够高效地对大量数据执行查询(似乎证实了Sqlite可以处理这一点),以及能够轻松地从MySQL导入旧数据(我记得HSQLDB是一种痛苦)


注意:我知道以前也曾发布过类似的问题,比较嵌入式数据库(例如和),但由于考虑到大规模数据迁移,我的优先级与大多数应用程序有所不同,因此我认为这是一个新问题。

随着时间的推移,您的担忧将变得越来越少,是否会有内存不足的用户来处理嵌入式数据库中的数百万行

当每个人都有64位操作系统和8GB或更大的RAM时,你就没有问题了

我同意SQLLite或Hypersonic可以处理它,只要有足够的内存。我想知道在记忆变得稀少的情况下,每个人都会做些什么


您当然可以选择在服务器模式下运行Hypersonic,并让它将数据保存在磁盘上。这可能是一个有吸引力的替代方案,尤其是在SSD变得普遍的情况下。您可以保持不需要安装数据库的便利性,并且仍然可以在不耗尽可用RAM的情况下管理大型数据集。

最新版本的HSQLDB用于具有千兆字节数据的商业应用程序。HSQLDB的持久化机制已经过全面测试,它系统地使用fsync避免了数据丢失。查询优化得到了改进。使用HSQLDB SqlTool,从CSV或SQL转储导入数据现在非常容易。看起来您有一个专业的HSQLDB附件,fredt。我不担心,但很高兴知道这里表达的观点受到了什么影响。