溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么進行PostgreSQL的JSON處理

發(fā)布時間:2021-12-13 17:46:51 來源:億速云 閱讀:1370 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)怎么進行PostgreSQL的JSON處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

首先POSTGRESQL 支持兩種JSON格式,JSON and  JSONB ,在PG 9.X 版本對JSON的支持就已經(jīng)出具規(guī)模了(MONGODB 中的支持BSON格式),拿在postgresql 中大概率的你是要使用JSONB 這樣的格式,這樣的格式有以下一些好處

1 處理的速度快

2 可以添加索引

當(dāng)然也有一些東西是有限制的,這里先不表,另外學(xué)習(xí)的過程,我發(fā)現(xiàn)一個點,就是如果你能在學(xué)習(xí)的過程中,先得到一點甜頭,則你后續(xù)的學(xué)習(xí)就會有興趣,并且很可能越學(xué)越快

所以下面我們先做一點實踐,增加興趣

我們建立一個表,如果按照MONGODB 來說,應(yīng)該叫collection, 然后我們插入一條 document ,格式是jsonb ,但如果你用MONGODB 的方式來理解,你可以找到一點不一樣的地方

怎么進行PostgreSQL的JSON處理

可以看到,其實要展示數(shù)據(jù)在POSTGRESQL 中也并不是難事

怎么進行PostgreSQL的JSON處理

然后我們創(chuàng)建一個索引,熟悉PG的人都知道他模糊查詢的厲害,下面的索引的建立也頗有那幾分味道。

怎么進行PostgreSQL的JSON處理

explain analyze SELECT * FROM json_test WHERE info @> '{"name": "Calor"}';

查詢中也有一些 JSONB 特殊的查詢的方式,但這樣的查詢方式比初次使用MONGODB 的查詢語句對熟悉SQL 的人要親切的多。

怎么進行PostgreSQL的JSON處理

怎么進行PostgreSQL的JSON處理

到這里我們可以小結(jié)一下,PostgreSQL 里面的JSON 可以使用JSONB 的方式來進行存儲,并且大部分時間創(chuàng)建一個GIN 的索引就可以滿足大部分查詢,如果使用過MONGODB 的,可以知道MONGODB 本身存儲是B+樹來存儲索引的,特定的查詢也要配合特定建立的索引,這點上就....... 

下面我們繼續(xù)做測試,看看是不是POSTGRESQL 可以一個索引就將所有的查詢都HOLD 住。

下面我們創(chuàng)建,一個新的collection

 create  table test_json_2 (info jsonb);

插入數(shù)據(jù)

insert into test_json_2 select ('{"name": "nn-' || round(random()*20000000) || '", "ajon": "address", "tags": ["system", "database", "langrage"]}')::jsonb from (select * from generate_series(1,100000)) as temp;

怎么進行PostgreSQL的JSON處理

一個10萬行的collection就生成了,照方抓藥,創(chuàng)建索引后,直接查詢,結(jié)果很明顯是可以走索引的。

怎么進行PostgreSQL的JSON處理

并且網(wǎng)上提及的某些不能走索引的情況,在PG11 這個版本也是可以開始走索引了。

怎么進行PostgreSQL的JSON處理

當(dāng)然如果你統(tǒng)計的數(shù)據(jù)是全表,或大部分?jǐn)?shù)據(jù),則還是要走全表掃描的

怎么進行PostgreSQL的JSON處理

這里大致的看了一下POSTGRESQL 對JOSN 的支持,相對于某些數(shù)據(jù)庫還是友好的,并且符合人類快速理解和上手的方式。

怎么進行PostgreSQL的JSON處理

當(dāng)然在面對專業(yè)文檔數(shù)據(jù)庫MONGODB 的強大的處理能力下,沒有其他的數(shù)據(jù)庫可以抗衡,因為那個是他的 飯碗,如果不是很復(fù)雜(就是那種嵌套,嵌套,嵌套,還有數(shù)組的讓人頭要炸開的那種)的JSON 或者你沒有專業(yè)的MONGODB 的支持,想使用JSON 或文檔的方式在數(shù)據(jù)庫里面不想失望的使用,POSTGRESQL 是一個選擇,不錯的。

看完上述內(nèi)容,你們對怎么進行PostgreSQL的JSON處理有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI