Postgres 9.2
Saya mengutip Andrew Dunstan di daftar pgsql-hacker:
Pada tahap tertentu mungkin akan ada beberapa fungsi pemrosesan json (sebagai lawan dari produksi json), tetapi tidak pada 9.2.
Tidak mencegahnya memberikan contoh implementasi di PLV8 yang seharusnya menyelesaikan masalah Anda. (Tautan mati sekarang, lihat PLV8 modern sebagai gantinya.)
Postgres 9.3
Menawarkan gudang fungsi dan operator baru untuk menambahkan "pemrosesan json".
- Panduan tentang fungsionalitas JSON baru.
- Wiki Postgres tentang fitur baru di hal 9.3.
Jawaban atas pertanyaan awal di Postgres 9.3:
SELECT *
FROM json_array_elements(
'[{"name": "Toby", "occupation": "Software Engineer"},
{"name": "Zaphod", "occupation": "Galactic President"} ]'
) AS elem
WHERE elem->>'name' = 'Toby';
Contoh lanjutan:
- Kombinasi kueri dengan array record bersarang dalam tipe data JSON
Untuk tabel yang lebih besar, Anda mungkin ingin menambahkan indeks ekspresi untuk meningkatkan kinerja:
- Indeks untuk menemukan elemen dalam larik JSON
Postgres 9.4
Menambahkan jsonb
(b untuk "biner", nilai disimpan sebagai tipe Postgres asli) dan lebih banyak fungsi untuk keduanya jenis. Selain indeks ekspresi yang disebutkan di atas, jsonb
juga mendukung indeks GIN, btree, dan hash, GIN adalah yang paling ampuh.
- Manual tentang
json
danjsonb
tipe dan fungsi data. - Wiki Postgres di JSONB di hal 9.4
Manual ini sejauh menyarankan:
Secara umum, sebagian besar aplikasi sebaiknya memilih untuk menyimpan data JSON sebagai
jsonb
, kecuali jika ada kebutuhan yang cukup khusus, seperti asumsi lama tentang pengurutan kunci objek.
Penekanan saya yang berani.
Manfaat kinerja dari peningkatan umum pada indeks GIN.
Postgres 9.5
Lengkapi jsonb
fungsi dan operator. Tambahkan lebih banyak fungsi untuk memanipulasi jsonb
di tempat dan untuk ditampilkan.
- Kabar baik utama dalam catatan rilis Postgres 9.5.