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:
jsondisimpan dalam format teks biasa, sedangkanjsonbdisimpan dalam beberapa representasi biner
Ada 3 konsekuensi utama dari ini:
jsonbbiasanya membutuhkan lebih banyak ruang disk untuk disimpan daripadajson(kadang tidak)jsonbmembutuhkan lebih banyak waktu untuk membangun dari representasi inputnya daripadajsonjsonoperasi berlangsung secara signifikan lebih banyak waktu daripadajsonb(&penguraian juga perlu dilakukan setiap kali Anda melakukan beberapa operasi dijsonnilai 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.