并非所有项目都需要数据库。 我目前正在使用的项目不希望任何数据库被使用。相反,它应该使用对象序列化来存档。 该实现会将大量对象序列化/反序列化为文件。 我的问题在于,什么是对象序列化文件的最佳做法?对象序列化到文件的最佳做法
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