序列化与物化的区别

6

有人能指出这些术语的差别吗?在何时使用每个术语是适当的?

例如,在处理对象/关系映射器(ORM)时,对象创建涉及到材料化,而使用Json / Xml格式创建对象则被视为反序列化。

我可以想到一些核心区别,但我很好奇是否存在更正式的定义,因为我无法找到它。


2
这个问题可能更适合 programmers.SE - Morwenn
1个回答

18
“反序列化”几乎总是与“序列化”一起使用。这些术语描述了一个“工作流程”,当您的对象或对象图完全转换为“数据流”以存储,例如文件或单个数据库记录时,通常是单个的。然后,在某个时间点上,它被检索并“反序列化”,因此“解压缩”回对象或对象图中。它们成对使用。如果您曾经说过您的XYZ对象已序列化,则稍后它将被反序列化。尽量不要在对象以无法称为“序列化”的方式存储时使用“反序列化”词。
关键字在于“串行”。De 'serial'ization。串行形式数据、数据流。文件(txt、bin、xml等:文件)、DB中的BLOB等。
“实体化”描述了一个抽象的“过程”,将“查询描述”和“原始数据”以任何形式转换为与查询匹配的一些“可用数据”。它比“de/serialization”更一般。后者几乎总是明确意味着对象(s)意味着从类似于流的数据中“解压缩”,而“实体化”意味着对象是从任何适当/可用的描述重建的。
关键字在于,恩...实体化。在某个时间点上,您拥有'抽象想法',它在某个时间点上被'实体化'为具体形式。“Materialization”用于查询和分析数据。构建查询时,可以定义一些源、过滤器、聚合、投影等。但往往不能在代码的某个时间或地点“只构建查询”。因此,查询将分部分构建。但有些查询的部分可能已经格式良好且可执行,并被传递以进行扩展。它仍然是一个“定义”,是抽象的东西,还没有“具体化”。稍后,在某个时间点上,您的查询将被执行并获取结果。现在,结果将被“具体化”并变得可读,与之前只有“准备就绪”的“查询”相反。现在将其连接到ORM及其自定义的类和表之间映射的方式以及表达过滤器等的自定义方式。
讽刺的是,我没有看到“去物质化”这个术语,它应该意味着一种抽象的方法来拆解对象并以某种方式存储它们。可能听起来太奇怪了,就像要删除它一样。人们倾向于不正确地使用“序列化”这个词,或者只是使用“保存/存储/写入”,这有时会增加一些混淆。因此,您可能会听到人们使用ORM并将“对象序列化”为具有15个列的三个表的数据库,但...我认为这并不严格是序列化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接