SQLite,Derby vs文件系统

时间:2009-11-05 09:26:47

标签: java sqlite filesystems derby

我正在开发一个Java桌面应用程序,可以读取和写入不同的文件。我认为更好的解决方案是用SQLite数据库替换文件系统。 迁移到这个系统并在我的应用程序中嵌入数据库有多难?有真正的性能提升吗? 非常感谢

3 个答案:

答案 0 :(得分:7)

我认为只要将数据存储更改为SQLite,您就不会获得性能。您应该将基于FS的存储迁移到关系(SQL)数据库存储,如果。

  • 您需要原子操作。 - 您的应用可能随时崩溃,您不必担心数据损坏)
  • 您需要异步操作。 - 您的应用程序的多个实例可以同时修改数据而不会破坏它/获得无效状态。
  • 您需要数据规范化。 - 产品-m2m->目录
  • 自动索引 - 如果您需要快速搜索功能(如果您的文件系统还不够快)
  • 您需要抽象复杂的数据操作。 - 即SELECT SUM(Price)WHERE Price< 10和喜欢

这些是通过切换到SQLite获得的一些收益。

如果您还正确使用了基于文件的系统没有的关系存储的一个或多个上述属性,则可以从SQLite中获得性能提升。

答案 1 :(得分:2)

我不认为你会在任何标准桌面上获得显着的性能提升 - 只要你的应用程序除了用读写操作折磨文件系统之外别无其他:)最后,性能主要取决于你的代码。

如果您考虑切换到SQLite,您可能需要查看SQLJet, a pure Java implementation of SQLite。我自己没有使用它,但我认为部署它应该类似于Derby:你只需要为你的应用程序添加一些Jars就可以了。我会尽量避免使用外部SQLite(或对外部应用程序的任何其他依赖),因为它会使应用程序的设置变得相当复杂。

答案 2 :(得分:1)

将Derby嵌入Java桌面应用程序非常简单。您只需将Derby jar添加到应用程序中,确定将数据存储在磁盘上的位置,并编写标准SQL和JDBC调用以调用Derby操作。编写良好的Derby应用程序可以提供极高的性能,但您必须注意您的架构和事务设计。 Derby拥有分析和解决性能问题的好工具。