2009-11-05 45 views
1

我正在研究从不同文件读写数据的Java桌面应用程序。我认为更好的解决方案是用SQLite数据库替换文件系统。 迁移到此系统并在我的应用程序中嵌入数据库有多难?有真正的表现收益吗? 非常感谢SQLite,Derby与文件系统

+0

如果没有关于你在做什么的更多细节,难以说出你的难处。有一个使用文件存储配置的应用程序与构建整个相册应用程序并将所有照片作为文件存在很大的区别。 –

回答

7

我不认为只需将数据存储更改为SQLite即可获得性能。您应该将基于FS的存储迁移到关系(SQL)数据库存储。

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

这些都是一些你切换到SQLite的获得的收益。

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

2

我不认为你会在任何标准桌面上获得显着的性能提升 - 只要你的应用程序没有别的什么,只是用读写来折磨文件系统:)最后,性能主要取决于你的代码。

如果你考虑切换到SQLite,你可能想看看SQLJet, a pure Java implementation of SQLite。我自己并没有使用它,但我认为部署它应该与Derby类似:您需要的只是添加一些Jars到您的应用程序中,然后解决。我会尽量避免使用外部SQLite(或任何其他对外部应用程序的依赖),因为它会使应用程序的设置复杂化。

1

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