我正在研究從不同文件讀寫數據的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文件系統
如果沒有關於你在做什麼的更多細節,難以說出你的難處。有一個使用文件存儲配置的應用程序與構建整個相冊應用程序並將所有照片作爲文件存在很大的區別。 –