“序列化”是将数据(可能包括数组,对象和类似结构)转换为单个字符串以便可以轻松存储或传输的过程。例如,单个数据库字段无法存储数组,因为数据库引擎不了解该概念。要存储在数据库中,必须将数组分解为单个元素并存储在多个字段中(仅当元素本身不是数组或对象时才起作用),或者必须对其进行序列化才能将其存储为单个单个字段中的字符串。以后,可以从数据库中检索该字符串并对其进行反序列化,从而生成原始数组的副本。
“编码”是一个非常笼统的术语,是指可以表示数据的任何格式或将数据转换为特定表示的过程。
例如,在大多数编程语言中,可以将数据元素序列编码为数组。(通常,我们称数组为“数据结构”而不是“编码”,但是从技术上讲,所有数据结构也是编码。)同样,单词“ encoding”本身也可以编码为英文字母序列。这些字母本身可以被编码为书面符号,或者被编码为诸如ASCII或UTF8之类的文本编码中的位模式。
编码过程将给定的数据转换为另一种表示形式(如果您希望对此进行技术性处理,则使用另一种编码)。
您可能已经意识到,序列化是编码过程的一个示例。它将复杂的数据结构转换为单个字符序列。
然后可以将该字符序列进一步编码为某种二进制表示形式,以实现更紧凑的存储或更快的传输。我不知道BSON使用哪种形式的二进制编码,但是大概它比文本编码中使用的位模式更有效。