- PostgreSQL 11 - JSONB
- Function: jsonb_pretty

自从 PostgreSQL 9.4 开始,添加新的数据类型JSON Types. 对于传统的关系型数据库而言,可以支持以文档性存贮数据简直是太棒了。 这也就意味着我们不需要再借助其它文档行数据库来存贮这部分数据了。

首先,让我来看看在PostgreSQL中jsonb类型的的数据是什么样子的。

Table: books

columns: book_id: integer data: jsonb

(encore@[local]:5432) [pg10] > select * from books;
 book_id |                                                                       data
---------+--------------------------------------------------------------------------------------------------------------------------------------------------
       1 | {"title": "Sleeping Beauties", "genres": ["Fiction", "Thriller", "Horror"], "published": false}
       2 | {"title": "Influence", "genres": ["Marketing & Sales", "Self-Help ", "Psychology"], "published": true}
       3 | {"title": "The Dictator's Handbook", "genres": ["Law", "Politics"], "authors": ["Bruce Bueno de Mesquita", "Alastair Smith"], "published": true}
       4 | {"title": "Deep Work", "genres": ["Productivity", "Reference"], "published": true}
       5 | {"title": "Siddhartha", "genres": ["Fiction", "Spirituality"], "published": true}
       6 | {"age": 20, "title": "Siddhartha", "genres": ["Fiction", "Spirituality"], "published": true}

正如我们现在看到的,data 中的数据都是以它特别的表现方式在 PSQL 中,data 现有的key值信息比较少,看起来还算可以,可以快速找到你想要找到的信息。

当 key 比较特别多的时候,此时就需要比好友好的显示查询出来的结果,从而方便我们去分析结果。

对此,PostgreSQL中提供了对应的函数 jsonb_pretty, 让我们可以更结构化的去查看和分析jsonb列中的数据.

(encore@[local]:5432) [pg10] > select jsonb_pretty(data) from books;
              jsonb_pretty
-----------------------------------------
 {                                      +
     "title": "Sleeping Beauties",      +
     "genres": [                        +
         "Fiction",                     +
         "Thriller",                    +
         "Horror"                       +
     ],                                 +
     "published": false                 +
 }
 {                                      +
     "title": "Influence",              +
     "genres": [                        +
         "Marketing & Sales",           +
         "Self-Help ",                  +
         "Psychology"                   +
     ],                                 +
     "published": true                  +
 }
 {                                      +
     "title": "The Dictator's Handbook",+
     "genres": [                        +
         "Law",                         +
         "Politics"                     +
     ],                                 +
     "authors": [                       +
         "Bruce Bueno de Mesquita",     +
         "Alastair Smith"               +
     ],                                 +
     "published": true                  +
 }
 {                                      +
     "title": "Deep Work",              +
     "genres": [                        +
         "Productivity",                +
         "Reference"                    +
     ],                                 +
     "published": true                  +
 }
 {                                      +
     "title": "Siddhartha",             +
     "genres": [                        +
         "Fiction",                     +
         "Spirituality"                 +
     ],                                 +
     "published": true                  +
 }
 {                                      +
     "age": 20,                         +
     "title": "Siddhartha",             +
     "genres": [                        +
         "Fiction",                     +
         "Spirituality"                 +
     ],                                 +
     "published": true                  +
 }

希望以上可以帮助到您。

References: