我正在开发一个java桌面应用程序,它可以读写不同的文件。我认为更好的解决方案是用sqlite数据库替换文件系统。迁移到这个系统并在我的应用程序中嵌入数据库有多难?是否有真正的绩效提升?谢谢
lymgl2op1#
在java桌面应用程序中嵌入derby非常简单。您只需将derbyjar添加到应用程序中,决定在磁盘上存储数据的位置,并编写标准sql和jdbc调用来调用derby操作。编写良好的derby应用程序可以提供极高的性能,但您必须注意您的模式和事务设计。derby有很好的工具来分析和解决性能问题。
ckocjqey2#
我不认为在任何标准桌面上都会获得显著的性能提升—只要应用程序不是在做其他事情,而是在读写方面折磨文件系统:)最后,性能主要取决于代码。如果您考虑切换到sqlite,您可能想看看sqljet,它是sqlite的纯java实现。我自己还没有使用过它,但我认为部署它应该类似于derby:您所需要的只是向应用程序中添加一些jar,然后就解决了。我会尽量避免使用外部sqlite(或任何其他对外部应用程序的依赖),因为它会使应用程序的设置相当复杂。
zsohkypk3#
我不认为仅仅通过将数据存储更改为sqlite就可以获得性能。如果需要,应该将基于fs的存储迁移到关系(sql)数据库存储。你需要原子操作。-你的应用程序随时可能崩溃,你不必担心数据损坏)你需要异步操作。-应用程序的多个示例可以同时修改数据,而不会损坏数据/获得无效状态。你需要数据规范化。-产品-m2m->目录自动索引-如果您需要快速搜索功能(如果您的文件系统还不够快)你需要抽象复杂的数据操作。-i、 e.选择价格<10的总和(价格)等这些是您通过切换到sqlite获得的一些好处。如果您还正确地利用了关系存储的上述一个或多个属性,而这些属性在使用基于文件的系统时是不存在的,那么您可以从sqlite获得性能增益。
3条答案
按热度按时间lymgl2op1#
在java桌面应用程序中嵌入derby非常简单。您只需将derbyjar添加到应用程序中,决定在磁盘上存储数据的位置,并编写标准sql和jdbc调用来调用derby操作。编写良好的derby应用程序可以提供极高的性能,但您必须注意您的模式和事务设计。derby有很好的工具来分析和解决性能问题。
ckocjqey2#
我不认为在任何标准桌面上都会获得显著的性能提升—只要应用程序不是在做其他事情,而是在读写方面折磨文件系统:)最后,性能主要取决于代码。
如果您考虑切换到sqlite,您可能想看看sqljet,它是sqlite的纯java实现。我自己还没有使用过它,但我认为部署它应该类似于derby:您所需要的只是向应用程序中添加一些jar,然后就解决了。我会尽量避免使用外部sqlite(或任何其他对外部应用程序的依赖),因为它会使应用程序的设置相当复杂。
zsohkypk3#
我不认为仅仅通过将数据存储更改为sqlite就可以获得性能。如果需要,应该将基于fs的存储迁移到关系(sql)数据库存储。
你需要原子操作。-你的应用程序随时可能崩溃,你不必担心数据损坏)
你需要异步操作。-应用程序的多个示例可以同时修改数据,而不会损坏数据/获得无效状态。
你需要数据规范化。-产品-m2m->目录
自动索引-如果您需要快速搜索功能(如果您的文件系统还不够快)
你需要抽象复杂的数据操作。-i、 e.选择价格<10的总和(价格)等
这些是您通过切换到sqlite获得的一些好处。
如果您还正确地利用了关系存储的上述一个或多个属性,而这些属性在使用基于文件的系统时是不存在的,那么您可以从sqlite获得性能增益。