我正在研究从不同文件读写数据的Java桌面应用程序。我认为更好的解决方案是用SQLite数据库替换文件系统。 迁移到此系统并在我的应用程序中嵌入数据库有多难?有真正的表现收益吗? 非常感谢SQLite,Derby与文件系统
1
A
回答
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应用程序可以提供极高的性能,但您必须注意您的架构和事务设计。德比拥有分析和解决性能问题的好工具。
相关问题
- 1. 嵌入式文件系统和sqlite
- 2. 使用SQLite替换文件系统
- 3. Blackberry sqlite DatabaseIOException错误文件系统12
- 4. spark与cassandra文件系统
- 5. LVM与Lustre文件系统
- 6. ASP MVC从SQLite db与文件系统获取图像
- 7. 与exFAT文件系统的Android sqlite崩溃
- 8. SQLite数据库Blob字段与Android文件系统
- 9. 锁定NFS文件系统上的sqlite文件可能吗?
- 10. 的Hadoop文件系统是物理文件系统或虚拟文件系统
- 11. 操作系统 - SSD上的文件系统与旋转
- 12. 与操作系统无关的文件系统访问
- 13. 与操作系统无关的API来监视文件系统?
- 14. 64位文件系统与32位文件系统最大区别是什么
- 15. 文件系统统计
- 16. 核心数据与文件系统
- 17. Eclipse源与文件系统不同步
- 18. 存储图像 - mysql与文件系统
- 19. Cygwin cygdrive与文件系统不同步
- 20. Linux与Hadoop文件系统的区别
- 21. 获取文件名与系统IO
- 22. 系统错误android sqlite insert
- 23. 如何SQLite的android系统
- 24. Xcode文件系统
- 25. 从文件系统
- 26. C++文件系统
- 27. BlackBerry文件系统
- 28. VMWare文件系统
- 29. iPhone文件系统
- 30. Android文件系统
如果没有关于你在做什么的更多细节,难以说出你的难处。有一个使用文件存储配置的应用程序与构建整个相册应用程序并将所有照片作为文件存在很大的区别。 –