美文网首页
PostgreSQL 与 MySQL 相比,优势何在?

PostgreSQL 与 MySQL 相比,优势何在?

作者: 老陕西 | 来源:发表于2021-08-30 15:01 被阅读0次

    答案

    Pg 不仅仅是 SQL 数据库

    它可以存储 array 和 json, 可以在 array 和 json 上建索引, 甚至还能用表达式索引. 为了实现文档数据库的功能, 设计了 jsonb 的存储结构. 有人会说为什么不用 Mongodb 的 BSON 呢? Pg 的开发团队曾经考虑过, 但是他们看到 BSON 把 ["a", "b", "c"] 存成 {0: "a", 1: "b", 2: "c"} 的时候就决定要重新做一个 jsonb 了... 现在 jsonb 的性能已经优于 BSON.

    现在往前端偏移的开发环境里, 用 Pg + PostgREST 直接生成后端 API 是非常快速高效的办法:
    begriffs/postgrest · GitHub
    postgREST 的性能非常强悍, 一个原因就是 Pg 可以直接组织返回 json 的结果.

    它支持服务器端脚本: TCL, Python, R, Perl, Ruby, MRuby ... 自带 map-reduce 了.

    它有地理信息处理扩展 (GIS 扩展不仅限于真实世界, 游戏里的地形什么的也可以), 可以用 Pg 搭寻路服务器和地图服务器:
    PostGIS — Spatial and Geographic Objects for PostgreSQL

    它自带全文搜索功能 (不用费劲再装一个 elasticsearch 咯):
    Full text search in milliseconds with PostgreSQL 不过一些语言相关的支持还不太完善, 有个 bamboo 插件用调教过的 mecab 做中文分词, 如果要求比较高, 还是自己分了词再存到 tsvector 比较好.

    它支持 trigram 索引.
    trigram 索引可以帮助改进全文搜索的结果: PostgreSQL: Documentation: 9.3: pg_trgm
    trigram 还可以实现高效的正则搜索 (原理参考 https://swtch.com/~rsc/regexp/regexp4.html )

    MySQL 处理树状回复的设计会很复杂, 而且需要写很多代码, 而 Pg 可以高效处理树结构:
    Scaling Threaded Comments on Django at Disqus
    http://www.slideshare.net/quipo/trees-in-the-database-advanced-data-structures

    它可以高效处理图结构, 轻松实现 "朋友的朋友的朋友" 这种功能:
    http://www.slideshare.net/quipo/rdbms-in-the-social-networks-age

    它可以把 70 种外部数据源 (包括 Mysql, Oracle, CSV, hadoop ...) 当成自己数据库中的表来查询:
    Foreign data wrappers

    相关文章

      网友评论

          本文标题:PostgreSQL 与 MySQL 相比,优势何在?

          本文链接:https://www.haomeiwen.com/subject/gkcoiltx.html