Mysql json 二进制编码

Mysql json binary encoding

MySQL 是否使用 bson 进行 json 编码?或者它有自定义的二进制编码吗?例如:

Optimized storage format. JSON documents stored in JSON columns are converted to an internal format that permits quick read access to document elements. When the server later must read a JSON value stored in this binary format, the value need not be parsed from a text representation. The binary format is structured to enable the server to look up subobjects or nested values directly by key or array index without reading all values before or after them in the document.

https://dev.mysql.com/doc/refman/8.0/en/json.html

MySQL 中 JSON 的内部编码不是字面上的 BSON。

https://elephantdolphin.blogspot.com/2019/01/mysql-shell-8014-now-with-bson.html 说:

The import utility can process documents that use JSON extensions to represent BSON data types, convert them to an identical or compatible MySQL representation, and import the data value using that representation.

这篇博文post的留言是BSON需要转换才能存储在MySQL。

但在某些方面,MySQL 的 JSON 的二进制编码与 BSON 具有相似的目标。

MySQL 的 JSON 编码将一些数据类型转换为二进制表示而不是字符串。此外,对象和数组各自包含一种“table 内容”作为它们的键和值。

您可以在此处的源代码中阅读有关 MySQL JSON 编码的更多信息:

https://github.com/mysql/mysql-server/blob/8.0/sql/json_binary.h

综上所述,您没有理由需要知道 MySQL 中二进制 JSON 扩展的编码,因为文本 JSON 在插入时被转换为二进制,然后再转换回来获取文本。