亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

介紹PostgreSQL中的jsonb數據類型

2020-10-29 21:49:50
字體:
來源:轉載
供稿:網友

PostgreSQL 9.4 正在加載一項新功能叫jsonb,是一種新型資料,可以儲存支援GIN索引的JSON 資料。換言之,此功能,在即將來臨的更新中最重要的是,如果連這都不重要的話,那就把Postgres 置于文件為本數據庫系統的推薦位置吧。

自從9.2開始,一個整合JSON 資料類型已經存在,帶有一整套功能(例如資料產生和資料解構功能),還有9.3新增的操作者。當使用JSON 資料類型,資料的被存儲成一完全一樣的副本,功能還在此之上運作,還另外需要后臺運作的重新分析。

這心得JSONB 資料類型以已降解的2元格式存儲,所以,插入此資料會比JSON高效,因為后臺不再需要重新分析,因此讓它更快速運行,而且還兼顧GIN 索引。就是因為最后這個原因,我們實際上建議讀者使用jsonb來代替json制作程式(當然你還可以因應需要而使用json)。請記住jsonb使用相同的操作者和功能,讀者們可以看我之前的帖子去令你得到些什么啟發(或者干脆看Postgres的文件)。
 

現在讓我們看一下JSONB是如何工作的,同時和JSON比較一下。采用的測試數據是860萬的geobase類型數據,大概1.1G大小,包括了城市名,國家代碼(可以在這參見完整列表)等很多字段。首先通過底層復制(raw copy)來把這些數據存儲到數據庫的一個新表里面,之后把這張表通過一組填充因子是100的表轉換成JSON/JSONB,之后來看它們各占多少空間。
 

=# COPY geodata FROM '$HOME/Downloads/allCountries.txt';COPY 8647839=# CREATE TABLE geodata_jsonb (data jsonb) with (fillfactor=100);CREATE TABLE=# CREATE TABLE geodata_json (data json) with (fillfactor=100);CREATE TABLE=# /timingTiming is on.=# INSERT INTO geodata_json SELECT row_to_json(geodata) FROM geodata;INSERT 0 8647839Time: 287158.457 ms=# INSERT INTO geodata_jsonb SELECT row_to_json(geodata)::jsonb FROM geodata;INSERT 0 8647839Time: 425825.967 ms

生成JSONB數據花費稍微長一點時間,大小有沒有區別呢?
 

=# SELECT pg_size_pretty(pg_relation_size('geodata_json'::regclass)) AS json,     pg_size_pretty(pg_relation_size('geodata_jsonb'::regclass)) AS jsonb; json  | jsonb ---------+--------- 3274 MB | 3816 MB(1 row)

在JSON數據上面做索引從9.3版本開始,比如用操作符(注意 因為它返回文本,所以'->>'被采用;并且根據查詢不同,索引采用不同的關鍵字)
 

=# CREATE INDEX geodata_index ON  geodata_json ((data->>'country_code'), (data->>'asciiname'));CREATE INDEX=# SELECT pg_size_pretty(pg_relation_size('geodata_index'::regclass))  AS json_index; json_index ------------ 310 MB(1 row)=# SELECT (data->>'population')::int as population,     data->'latitude' as latitude,     data->'longitude' as longitude  FROM geodata_json WHERE data->>'country_code' = 'JP' AND    data->>'asciiname' = 'Tokyo' AND    (data->>'population')::int != 0; population | latitude | longitude ------------+----------+-----------  8336599 | 35.6895 | 139.69171(1 row)=# -- Explain of previous query                            QUERY PLAN                            ------------------------------------------------------------------------------------------------------------------------- Bitmap Heap Scan on geodata_json (cost=6.78..865.24 rows=215 width=32)  Recheck Cond: (((data ->> 'country_code'::text) = 'JP'::text) AND ((data ->> 'asciiname'::text) = 'Tokyo'::text))  Filter: (((data ->> 'population'::text))::integer <> 0)  -> Bitmap Index Scan on geodata_index (cost=0.00..6.72 rows=216 width=0)     Index Cond: (((data ->> 'country_code'::text) = 'JP'::text) AND ((data ->> 'asciiname'::text) = 'Tokyo'::text)) Planning time: 0.172 ms(6 rows)

在這個例子里,計劃(planner)可以使用bitmap索引掃描,同時使用了之前產生的索引。


現在,JSONB的一個新特點就是檢查包含帶有操作符@>的數據容量,這種數據是可以用GIN來索引的,這種操作符數據也包括了?,?|和?&(為了檢查給定的關鍵字是否存在)。 GIN索引對兩類操作符起作用:

    缺省操作符類,之前列出的四個;

    jsonb_hash_ops,僅支持@>,但是當搜索數據時性能表現不錯,而且所占磁盤空間較??;

下面是它如何工作:
 

=# CREATE INDEX geodata_gin ON geodata_jsonb   USING GIN (data jsonb_hash_ops);CREATE INDEX=# SELECT (data->>'population')::int as population,   data->'latitude' as latitude,   data->'longitude' as longitude  FROM geodata_jsonb WHERE data @> '{"country_code": "JP", "asciiname": "Tokyo"}' AND    (data->>'population')::int != 0; population | latitude | longitude ------------+----------+-----------  8336599 | 35.6895 | 139.69171(1 row) =# SELECT pg_size_pretty(pg_relation_size('geodata_gin'::regclass)) AS jsonb_gin; jsonb_gin----------- 1519 MB(1 row)=# -- EXPLAIN of previous query                   QUERY PLAN                   ------------------------------------------------------------------------------------- Bitmap Heap Scan on geodata_jsonb (cost=131.01..31317.76 rows=8605 width=418)  Recheck Cond: (data @> '{"asciiname": "Tokyo", "country_code": "JP"}'::jsonb)  Filter: (((data ->> 'population'::text))::integer <> 0)  -> Bitmap Index Scan on geodata_gin (cost=0.00..128.86 rows=8648 width=0)     Index Cond: (data @> '{"asciiname": "Tokyo", "country_code": "JP"}'::jsonb) Planning time: 0.134 ms

根據應用的需求,你或許想采用空間消耗低的索引,比如BTree建立在JSON數據上的索引類型;GIN索引有著更多的優點,因為它覆蓋了所有的JSON字段,并且檢查容量;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区三区免费视频| 高清欧美性猛交| 亚洲欧美在线看| xxxx欧美18另类的高清| 性日韩欧美在线视频| 北条麻妃在线一区二区| 成人午夜高潮视频| 日韩高清免费观看| 国产精品福利久久久| 中文字幕在线看视频国产欧美| 欧美性猛交xxxx黑人猛交| 成人网在线免费看| 欧美国产日韩二区| 亚洲色图日韩av| 黄色一区二区三区| 蜜臀久久99精品久久久无需会员| 福利视频一区二区| 性欧美在线看片a免费观看| 欧美日韩免费在线| 国内精品久久久久久影视8| 欧美精品免费播放| 欧美香蕉大胸在线视频观看| 91国内产香蕉| 欧美黄色免费网站| 国产精品视频26uuu| 色婷婷av一区二区三区在线观看| 日韩综合中文字幕| 久久久精品久久久| 91在线直播亚洲| 久久精品国产欧美亚洲人人爽| 欧美成人免费一级人片100| 国产成人高清激情视频在线观看| 性色av一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 韩国福利视频一区| 亚洲无限av看| 亚洲色图激情小说| 91国内揄拍国内精品对白| 欧美另类xxx| 在线国产精品视频| 久久久国产精品x99av| 色综久久综合桃花网| 2019中文字幕在线| 色多多国产成人永久免费网站| 亚洲最大在线视频| 国产亚洲欧美日韩精品| 久久久久久国产| 国产精品视频最多的网站| 日本亚洲欧美三级| 亚洲社区在线观看| 亚洲九九九在线观看| 成人激情视频在线观看| 8050国产精品久久久久久| 亚洲一区二区日本| 亚洲欧美在线第一页| 精品福利在线看| 国产男女猛烈无遮挡91| 色阁综合伊人av| 欧美日韩裸体免费视频| 伊人久久大香线蕉av一区二区| 69精品小视频| 亚洲а∨天堂久久精品喷水| 久久精品国产v日韩v亚洲| 久久久在线免费观看| 久久久日本电影| 激情成人在线视频| 国产a∨精品一区二区三区不卡| 亚洲国产精品99| 欧美片一区二区三区| 中文字幕视频一区二区在线有码| 国模精品系列视频| 国产精品免费看久久久香蕉| 亚洲人av在线影院| 久久香蕉精品香蕉| 亚洲欧洲日产国产网站| 97人人爽人人喊人人模波多| 久久免费视频在线| 亚洲网址你懂得| 亚洲理论片在线观看| 亚洲精品欧美一区二区三区| 欧美亚洲国产视频小说| 久久97精品久久久久久久不卡| 国产精品第一第二| 久久国产精品久久久久久| 中文字幕在线观看亚洲| 最近2019年手机中文字幕| 国产综合久久久久久| 综合网日日天干夜夜久久| 精品久久久久久久中文字幕| 欧美亚洲伦理www| 久久精品成人动漫| 欧美日韩亚洲视频| 精品国内产的精品视频在线观看| 亚洲人a成www在线影院| 亚洲精品美女久久久久| 日韩成人激情视频| 一本一道久久a久久精品逆3p| 亚洲www永久成人夜色| 欧美高跟鞋交xxxxhd| 久久久精品在线| 一夜七次郎国产精品亚洲| 日韩中文字幕在线播放| 国产精品一区二区久久精品| 久久精品国产亚洲精品| 久久亚洲综合国产精品99麻豆精品福利| 国产精品一二三在线| 亚洲美女动态图120秒| 国产精品美女主播在线观看纯欲| 中文字幕亚洲一区二区三区| 久久男人资源视频| 亚洲精品久久久久中文字幕二区| 高清一区二区三区日本久| 亚洲社区在线观看| 98精品国产高清在线xxxx天堂| 国产91色在线| 最好看的2019年中文视频| 欧美视频专区一二在线观看| 91精品国产综合久久香蕉的用户体验| 91av在线视频观看| 亚洲国产97在线精品一区| 国产成人鲁鲁免费视频a| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产成人高清激情视频在线观看| 亚洲在线www| 中文字幕日韩视频| 欧美福利视频网站| 疯狂蹂躏欧美一区二区精品| 日韩国产精品亚洲а∨天堂免| 一区二区三区回区在观看免费视频| 91在线观看免费高清| 日韩视频中文字幕| 日韩少妇与小伙激情| 海角国产乱辈乱精品视频| 伊人伊成久久人综合网站| 欧美国产一区二区三区| 国产日韩欧美另类| 欧美日韩中文字幕| 日韩av免费观影| 亚洲人成在线电影| 日韩中文字幕亚洲| 亚洲欧美在线一区| 色偷偷av一区二区三区| 一区二区三区美女xx视频| 91精品久久久久久久久不口人| 欧美成人精品影院| 欧美日韩国产999| 国产欧美精品xxxx另类| 亚洲性xxxx| 中文字幕亚洲一区二区三区| 欧美色道久久88综合亚洲精品| 92版电视剧仙鹤神针在线观看| 国产精品69久久| 欧美人与性动交a欧美精品| 日韩成人在线观看| 欧美日韩国产综合新一区| 国产欧美精品一区二区| 国产一区二区精品丝袜| 欧美xxxx18国产| 欧美国产高跟鞋裸体秀xxxhd| 久久亚洲欧美日韩精品专区| 亚洲午夜国产成人av电影男同| 国产91色在线播放| 久久免费在线观看| 91国语精品自产拍在线观看性色|