我不是在谈论动态列,而是在询问本机列JSON数据类型。简而言之,我可以在任何MariaDB版本上运行以下代码吗?
CREATE TABLE example (names JSON);
据我所知,它不是,但我仍然不确定,因为有很多话题讨论了对MariaDB的JSON支持已有很长时间了,但是没有人说它最终实现了。
-更新-
刚刚发现,关于JSON数据类型支持,MariaDB Jira仍然存在三个问题,这意味着它尚未实现,对吗?
我不是在谈论动态列,而是在询问本机列JSON数据类型。简而言之,我可以在任何MariaDB版本上运行以下代码吗?
CREATE TABLE example (names JSON);
据我所知,它不是,但我仍然不确定,因为有很多话题讨论了对MariaDB的JSON支持已有很长时间了,但是没有人说它最终实现了。
-更新-
刚刚发现,关于JSON数据类型支持,MariaDB Jira仍然存在三个问题,这意味着它尚未实现,对吗?
Answers:
JSON支持将在MariaDB 10.2中提供。请参阅2017年2月28日的MariaDB官方博客文章。有一些示例SQL语句和验证。
JSON正在迅速成为数据交换和非结构化数据的标准格式,并且即使尚未实现JSON数据类型,MariaDB 10.2也在JSON支持功能上增加了一个范围。有一些原因为什么没有JSON数据类型,但是一个原因是实际上没有那么多优点,因为JSON是基于文本的格式。这篇博客文章旨在描述JSON及其用例,以及描述MariaDB 10.2 JSON函数和这些函数的用途,并展示对MariaDB 10.2的其他一些对JSON处理有用的补充。
这取决于您说“数据类型”时的意思。某些数据库(例如PostgreSQL)具有JSON数据类型,该数据类型允许全文搜索,二进制存储机制,索引以及用于访问数据的全套运算符。玛丽亚还没有那个。MDEV-9144专门跟踪数据类型。
即使如此,从其中一个错误维护者那里带给MySQL的类型非常有限,
JSON数据类型直接与SQL标准相矛盾,也就是说,JSON_ *函数将字符串作为参数。此外,根据我们的基准,速度明智的 MariaDB不需要二进制JSON,我们的JSON解析器在文本JSON上的运行速度与在二进制JSON上的MySQL一样快。也就是说,在MariaDB中,可以将VARCHAR或TEXT用于JSON。如果需要验证,则可以使用CHECK约束进行验证:
my_json_column TEXT CHECK (JSON_VALID(my_json_column))
不过,我们将添加JSON“类型”以实现MySQL兼容性。
根据我的阅读,这并不是二进制JSON的重点,让我们参考MySQL文档
二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需读取文档中它们之前或之后的所有值。
此外,PostgreSQL的jsonb
做了很多不止于此。
jsonb数据以分解后的二进制格式存储,由于增加了转换开销,因此输入速度稍慢,但由于不需要重新解析,因此处理速度明显加快。jsonb还支持索引编制,这是一个很大的优势。
tldr; Maria DB还没有JSON类型。即使当它获得“类型”时,它也只是对文本验证(如PostgreSQL的json
类型)的一个薄包装。对于二进制JSON类型(例如PostgreSQL的JSON),没有计划,jsonb
因为开发人员似乎不了解其优势。