Pertama, hstore
adalah modul contrib, yang hanya memungkinkan Anda untuk menyimpan pasangan kunci => nilai, di mana kunci dan nilai hanya dapat berupa text
s (namun nilainya dapat berupa sql NULL
s juga).
Keduanya json
&jsonb
memungkinkan Anda untuk menyimpan nilai JSON yang valid (didefinisikan dalam spesifikasinya).
F.ex. ini adalah representasi JSON yang valid:null
, true
, [1,false,"string",{"foo":"bar"}]
, {"foo":"bar","baz":[null]}
- hstore
hanya subset kecil dibandingkan dengan kemampuan JSON (tetapi jika Anda hanya membutuhkan subset ini, tidak apa-apa).
Satu-satunya perbedaan antara json
&jsonb
adalah penyimpanan mereka:
json
disimpan dalam format teks biasa, sedangkanjsonb
disimpan dalam beberapa representasi biner
Ada 3 konsekuensi utama dari ini:
jsonb
biasanya membutuhkan lebih banyak ruang disk untuk disimpan daripadajson
(kadang tidak)jsonb
membutuhkan lebih banyak waktu untuk membangun dari representasi inputnya daripadajson
json
operasi berlangsung secara signifikan lebih banyak waktu daripadajsonb
(&penguraian juga perlu dilakukan setiap kali Anda melakukan beberapa operasi dijson
nilai yang diketik)
Ketika jsonb
akan tersedia dengan rilis stabil, akan ada dua kasus penggunaan utama, ketika Anda dapat dengan mudah memilih di antara keduanya:
- Jika Anda hanya bekerja dengan representasi JSON di aplikasi Anda, PostgreSQL hanya digunakan untuk menyimpan &mengambil representasi ini, Anda harus menggunakan
json
. - Jika Anda melakukan banyak operasi pada nilai JSON di PostgreSQL, atau menggunakan pengindeksan pada beberapa bidang JSON, Anda harus menggunakan
jsonb
.