假設我有1000條記錄,可變大小,範圍從大約256字節到幾K.我不知道是否有將它們放入一個SQLite數據庫而不只是讀/寫1000頁鬆散的文件在iOS上的任何優勢?我不需要做任何操作,只能通過一個單獨的密鑰訪問,我可以使用它作爲文件名。似乎文件系統將成爲贏家,除非記錄數量增長非常大。iOS SQLite或1000個鬆散文件?
回答
如果你的系統是隻讀的,我要說的是,文件系統是明顯的贏家:一個簡單的二進制文件,也許一個小的指數知道每條記錄開始將所有你所需要的。您可以將整個索引讀入內存,然後根據需要從文件系統中獲取記錄,以獲得與任何RDBMS相匹配的性能。
但是,因爲你是在寫數據計劃後,我會建議使用SQLite會因爲潛在的數據完整性問題。
性能的關注不應該被低估,也:因爲你的記錄是大小可變的,寫回的數據可能被證明是困難的情況下,當記錄需要擴大。此外,由於您正在使用移動平臺,因此在寫入過程中意外終止程序時,您需要構建某些內容以避免數據損壞。 SQLite負責這個;你的代碼將不得不構建與之相媲美的東西,否則將面臨數據損壞問題。
另一個支持SQLite的投票是1000個文件需要更多的磁盤空間,並且需要比包含相同數據量的單個數據庫文件多得多的時間進行復制。 – rmaddy
您的第一段可能[錯](http://www.sqlite.org/intern-v-extern-blob.html)。 –
@CL。測試不適用於我描述的場景。鏈接頁面討論了無論如何還存在SQLite表的情況以及blob中的數據。在這種情況下,您已經「花時間」通過加載適當的頁面訪問數據庫中的文件名,所以當您的BLOB較小時,您可以用相對較少的開銷獲得它們。我正在描述一種情況,即整個索引結構(無論可能如此)如此之小以至於它適合主內存。然後從文件讀取幾乎沒有開銷。 – dasblinkenlight
- 1. 在網站中的鬆散文件夾
- 2. Wix刻錄文件鬆散安裝
- 3. 鬆散的QProcess
- 4. 驗證一個鬆散定義的文件
- 5. SQLITE,集團由1000
- 6. xml或sqlite文件?
- 7. 鬆散依賴性
- 8. Filemaker鬆散查詢
- 9. iOS,CoreData,SQLite,文件丟失
- 10. XML文檔的鬆散合併
- 11. TextChange事件在asp.net中鬆散焦點
- 12. 使用SQLite或文件
- 13. PHP:「熱」文件寫或sqlite
- 14. Lua和鬆散的圖案
- 15. 我鬆散hotdeploy jboss功能
- 16. 鬆散的搜索方法
- 17. 鬆散類型的indexOf()?
- 18. 「鬆散」裝箱算法
- 19. 鬆散的xsd驗證
- 20. 鬆散的xaml文件導致的對象數
- 21. 簽名包含鬆散類文件的Java小應用程序
- 22. 鬆散的目錄/文件權限:陷阱,安全問題?
- 23. 1個具有〜1000個對象的文檔或1001個文檔,其中1個doc鏈接到1000個對象
- 24. 核心數據或sqlite或plist文件
- 25. ios sqlite api文檔
- 26. FileSystemWatcher的失敗,1000個文件創作
- 27. SSH複製1000個文件一次
- 28. iPad - 添加1000個mp3文件
- 29. git(Bitbucket)從另一個repo推送文件夾:鬆散對象已損壞
- 30. iOS - 1000個字符串,如何處理?
這取決於您使用它們的時尚了一點,但使用SQLite「斑點」或字符字段時,這些文件的數量超過一百元左右可能會是一個更好的選擇。 –