MySQL vs PostgreSQL JSON 搜索功能

Posted

技术标签:

【中文标题】MySQL vs PostgreSQL JSON 搜索功能【英文标题】:MySQL vs PostgreSQL JSON search features 【发布时间】:2017-05-17 13:47:59 【问题描述】:

我一直在寻找通过 JSON 功能比较 mysql 和 PostgreSQL 的博客文章或特征矩阵。我找到了一个很好的feature matrix for Postgres,但不适用于 MySQL。还有一堆像this 这样的帖子比较了两者,但是已经过时和/或不是很详细。 到目前为止,我只发现两者都可以使用 JSONB 数据类型保存数据,能够在 JSON 中的字段上建立索引以提高查询性能,并且它们可以在这些字段上进行全文搜索。但不是有多好,有什么缺点。 是什么决定了 MySQL 的 JSON 搜索功能优于 Postgres,反之亦然?

(这个问题是在 MySQL 5.7 和 PostgreSQL 9.6 是当前版本时发布的;这种事情变化很快,所以以后的读者应该记住这一点。)

【问题讨论】:

好问题,但可能会因为过于宽泛并导致主观答案而​​被关闭。在过去,这在 SO 中曾经是一种有效的问题风格,但当前的审核方式意味着即使这是 2017 年的一个很好的问题,您也可能会感到失望。 @VanquiishedWombat 很想将您的评论标记为“不具建设性”,只是为了调整您:p 但老实说,我认为这足够具体,非常有用。不知道有没有这样的资源,我有兴趣自己去看看。 @CraigRinger - 这是 SO 演变的烦恼之一。如果您寻找有关 C 与 C# 的类似问题,您会发现允许存在并生成非常有用的输入的问题。但是,如果您要求将它们作为主观/偏离主题/过于宽泛而关闭,那么您会被击落。似乎 SO 内容变得陈旧,对新技术的用处越来越小。如果您考虑技术的生命周期,它总是从开放性问题开始,随着时间的推移变得更加具体。版主似乎不理解这一点。虽然我可能会吃掉我的帽子。 老实说,我经常同意“过于宽泛”的说法。如果我可以在上面写一本书,这对这里来说不是一件好事,它很可能只是有点腐烂并产生无休止的争论。在***或其他任何地方提出您的论点。这是具体的,可以通过合理的答案来解决。会不会…… 【参考方案1】:

什么是偏爱 MySQL 而不是 Postgres 的决定性因素,反之亦然 对于他们的 JSON 搜索功能?

好吧,事实上,postgresql JSONB 有几个函数可以返回 rows 而 mysql 最多只能返回数组,这是坚持使用 postgresql 而不是 mysql 的充分理由。

如果您认为 mysql 可以从 JSON 返回行,请从 10 月份开始回答这个尚未回答的问题:Convert JSON array in MySQL to rows

Mysql 在子查询方面不如 postgresql 好,但 JSON 功能限制了您对其他表执行连接的能力。相比之下,postgresql 有一个whole heap of functions 可以返回行。

【讨论】:

最新版本的 MySql (8.0.4) 现在支持从 JSON - dev.mysql.com/doc/refman/8.0/en/json-table-functions.html 返回基于表的结果集的能力。

以上是关于MySQL vs PostgreSQL JSON 搜索功能的主要内容,如果未能解决你的问题,请参考以下文章

“王者对战”之 MySQL 8 vs PostgreSQL 10

SQLite vs MySQL vs PostgreSQL

[转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10

数据库对比 | MySQL vs PostgreSQL

“王者对战”之 MySQL 8 vs PostgreSQL 10

MySQL vs PostgreSQL : 5 个你最关注的非技术维度的区别