並非所有項目都需要數據庫。 我目前正在使用的項目不希望任何數據庫被使用。相反,它應該使用對象序列化來存檔。 該實現會將大量對象序列化/反序列化爲文件。 我的問題在於,什麼是對象序列化文件的最佳做法?對象序列化到文件的最佳做法
1
A
回答
3
它很大程度上取決於數據的性質,您將要寫入磁盤的類會有多大變化,無論您是需要存儲該類的數據還是其數據和代碼,以及它是否意圖成爲人類可讀。
Object serialization to a file是一種技術。另一個將您的對象模型翻譯爲結構化文本記錄(CSV,XML等)。通常,如果文件中引用的對象必須相互引用,則需要將引用編碼爲與該文件相關的ID號,並在解碼器重新載入對象時重建引用。
如果您確實需要控制對存儲進行編組的方式,您可以通過Externalizable接口對其進行詳細控制。當心,一旦你承擔了所有的責任,你將需要正確處理它。
至於最佳實踐去:
- 創建的文件編號爲每個對象實例。
- 在序列化中對對象的類型進行編碼(這是在默認序列化方案中爲您完成的)。
- 添加一個額外的字段來跟蹤類的修訂,因爲將「舊」對象加載到它們類的較新版本中可能會有問題。
- 提供一個可以「轉發」的層,將一個已知修訂的磁盤對象上的「舊」轉換爲當前類修訂。
3
我會建議協議緩衝區,但現在我建議MessagePack
1
我建議你看看XStream。
這是一個將對象序列化爲XML並返回的簡單庫。
相關問題
- 1. 有條件地序列化收集字段的最佳做法?
- 2. 創建對象之前的文件上傳的最佳做法?
- 3. 大JavaScript對象的最佳做法
- 4. 繼承對象的最佳做法
- 5. Java:什麼是讀取序列化對象的最佳方法?
- 6. 文件對象序列化
- 7. 實例化JavaScript對象時的最佳做法是什麼?
- 8. 序列化和反序列化.NET對象的最快方法
- 9. 從父列表中刪除對象的最佳做法?
- 10. 跨版本序列化和反序列化.net對象的最佳實踐
- 11. 將對象添加到數組的最佳做法
- 12. SharePoint列表最佳做法
- 13. 針對某個請求的對象化事務處理的最佳做法
- 14. 追加對象的序列化文件
- 15. 將對象存儲到SQLite數據庫最佳做法
- 16. 本地化的最佳做法
- 17. 請求對象的方法的最佳做法
- 18. 配置文件最佳做法node.js
- 19. 頭文件和包含最佳做法
- 20. 在Django中序列化ModelForm對象的最佳方法是什麼?
- 21. 反序列化到對象
- 22. 反序列化到對象
- 23. 序列化對象到XML
- 24. 更新gemspec文件列表的最佳做法是什麼?
- 25. 對錶格執行可序列化更新的最佳方法
- 26. 問題從XML文件序列化/反序列化對象/
- 27. 的Flex - 節省的對象的序列化的ArrayCollection到文件
- 28. 收集COM文件到WiX碎片的最佳做法
- 29. 將文件上傳到MemoryStream(C#)的最佳做法是什麼?
- 30. 將文件上傳到S3並觸發lambda的最佳做法
我會將數據寫入文本,例如XML或JSon,因此您可以編輯數據並透明地處理數據結構中的微小變化。 – 2011-06-09 14:07:13
您是否只需要一次訪問所有對象或對特定對象的任何隨機訪問? – 2011-06-09 14:10:16
也應該支持對特定對象的隨機訪問。 – YoK 2011-06-09 14:16:41