Postgres 9.2
Manfaat dari fitur baru ini adalah dua kali lipat. Kolom tipejson
memverifikasi validitas kontennya sehingga apa yang ada di kolom JSON valid secara otomatis dan Anda mendapatkan kesalahan jika Anda mencoba menuliskan hal lain ke dalamnya.
Dan Anda memiliki fungsi dasar untuk membuat JSON yang valid dengan cepat dari baris atau array - yang merupakan kasus penggunaan yang sangat umum.
Saya mengutip Andrew Dunstan pada daftar pgsql-hacker :
Pada tahap tertentu mungkin akan ada beberapa fungsi pemrosesan json (sebagai lawan pembuatan json), tetapi tidak di 9.2.
Saya menggunakan kutipan itu sebelumnya di bawah pertanyaan terkait ini di SO .
Postgres 9.3
.. akhirnya membawa sejumlah fungsi dan operator. Lihat halaman manual untuk fungsi JSON .
Jawaban terkait pada SO:
@Akan memasang posting blog. Lihat komentar di bawah.
Postgres 9.4
Pastikan untuk memeriksa jsonb
tipe baru dengan sejumlah fungsi baru.
Di atas semua itu, penyimpanan biner yang terurai memungkinkan penyimpanan yang lebih kecil pada disk dan operator kesetaraan untuk jsonb
(tidak seperti json
), yang memungkinkan sejumlah operasi tambahan dimungkinkan (seperti DISTINCT
atau UNIQUE
indeks).
Namun lebih banyak fungsi telah ditambahkan untuk keduanya json
dan jsonb
. json_to_record()
, json_to_recordset()
dll. Lebih banyak di catatan rilis.
Singkatnya, tipe data JSON (dan ekstensi HSTORE dan tipe data yang lebih lama juga) memungkinkan Anda untuk menggunakan PostgreSQL sebagai penyimpan data "tanpa skema" (atau menggabungkan data "tanpa skema" relasional dan non-relasional), alih-alih harus menggunakan beberapa opsi NoSQL lainnya (seperti MongoDB). Anda bahkan mendapatkan beberapa hal yang tidak dapat Anda lakukan dengan MongoDB, seperti pengindeksan yang difilter, pengindeksan ekspresi, dll. Satu-satunya kelemahan adalah bahwa PostgreSQL tidak mendukung pengabaian di luar kotak seperti yang dilakukan MongoDB ... namun, saya benar-benar mempertanyakan seberapa sering pecahan benar - benar dibutuhkan. Dengan database PostgreSQL 9.3 yang dikonfigurasikan dengan baik, sumber daya O / S yang cukup, dan beberapa indeks ekspresi yang difilter dengan cukup baik, Anda harus dapat dengan mudah mencapai pencarian baris tanpa skema dalam kisaran 0,25 milidetik.
HTH, Dave Sisk
sumber
Pada dasarnya saya melihat tiga use case di sini:
Yang pertama dapat dilakukan langsung dari PostgreSQL tanpa tambahan. Anda harus dapat melakukan sesuatu seperti:
Ini kemudian dapat digunakan untuk membuat array bersarang dll di output Anda dan menghindari banyak masalah parsing berantakan di sisi aplikasi.
yang kedua adalah mengirimkan data kompleks ke db untuk diproses. Saat ini tidak ada fungsi bawaan untuk memfasilitasi ini, tetapi dengan addon seperti pl / v8js, Anda dapat memprogram basis data Anda dalam Javascript dan menggunakan json sebagai format pertukaran. Ini dapat memungkinkan pembuatan antarmuka yang lebih kaya di dalam basis data Anda. Perhatikan bahwa karena Anda dapat mengindeks output fungsi, Anda dapat menggunakan ini untuk membuat indeks aspek JSON untuk disimpan dalam db Anda.
Yang ketiga adalah satu area yang kami rencanakan untuk menggunakannya di LedgerSMB. Idenya adalah bahwa kami mungkin ingin mengizinkan integrator sistem untuk menyimpan informasi yang sangat sederhana bersama dengan akun pelanggan. Ini kemudian bisa dikemas dalam bidang JSON yang akan disimpan. Ini tidak akan dapat langsung ditanyakan oleh aplikasi utama, tetapi jika orang ingin menambahkan ini menggunakan pl / v8js ini bisa dilakukan untuk bisnis individu menggunakan perangkat lunak.
sumber