您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(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 的方式來理解,你可以找到一點不一樣的地方
可以看到,其實要展示數(shù)據(jù)在POSTGRESQL 中也并不是難事
然后我們創(chuàng)建一個索引,熟悉PG的人都知道他模糊查詢的厲害,下面的索引的建立也頗有那幾分味道。
explain analyze SELECT * FROM json_test WHERE info @> '{"name": "Calor"}';
查詢中也有一些 JSONB 特殊的查詢的方式,但這樣的查詢方式比初次使用MONGODB 的查詢語句對熟悉SQL 的人要親切的多。
到這里我們可以小結(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;
一個10萬行的collection就生成了,照方抓藥,創(chuàng)建索引后,直接查詢,結(jié)果很明顯是可以走索引的。
并且網(wǎng)上提及的某些不能走索引的情況,在PG11 這個版本也是可以開始走索引了。
當(dāng)然如果你統(tǒng)計的數(shù)據(jù)是全表,或大部分?jǐn)?shù)據(jù),則還是要走全表掃描的
這里大致的看了一下POSTGRESQL 對JOSN 的支持,相對于某些數(shù)據(jù)庫還是友好的,并且符合人類快速理解和上手的方式。
當(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è)資訊頻道,感謝大家的支持。
免責(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)容。