- SQLite menulis ulang fungsi JSON yang sudah ada. Bergantung pada pola penggunaan, eksekusinya bisa beberapa kali lebih cepat
- Fungsi JSON awalnya bekerja dalam 3 tahap
- Mengurai JSON ke format biner internal yang mudah diproses oleh kode C
- Menjalankan operasi yang diminta, seperti mencari field tertentu atau memodifikasi JSON
- Jika operasi mengubah JSON, format biner internal diubah menjadi string JSON RFC-8279 untuk ditampilkan atau disimpan
- Selain tahap 2, tahap 1 dan 3 adalah overhead
- SQLite menggunakan JSON dalam bentuk biner internal yang berisi banyak pointer. Ini cocok untuk program C, tetapi sulit diserialisasikan
- Melalui penulisan ulang JSONB, representasi biner internal JSON ini diubah menjadi array byte berurutan yang bisa dibaca atau ditulis sebagai SQL BLOB
- Dengan begitu, representasi JSON yang digunakan secara internal bisa disimpan di database alih-alih sebagai teks JSON, sehingga overhead tahap 1 dan 3 dapat dihilangkan
Perubahan
- Semua fitur yang ada tetap dipertahankan. Hanya fungsi baru yang ditambahkan
- Kini semua fungsi JSON yang menerima teks JSON sebagai input juga menerima konten biner JSONB untuk parameter yang sama
- Tidak perlu memberi tahu fungsi apakah akan mengambil teks atau data biner. Fungsi akan menentukannya sendiri
- Kini fungsi JSON yang menghasilkan JSON tersedia dalam dua versi
- Fungsi
json_ yang lama tetap bekerja seperti sebelumnya
- Ada fungsi
jsonb_ yang mengembalikan JSONB, bukan teks JSON, sehingga tahap 3 dilewati dalam pemrosesan umum
- Jika aplikasi tidak diubah, kecepatannya memang sedikit meningkat (1%), tetapi semuanya tetap bekerja sama seperti sebelumnya
- Namun, jika aplikasi diubah untuk mulai menyimpan JSONB alih-alih teks JSON, setidaknya untuk pekerjaan yang sangat intensif memakai JSON bisa terlihat peningkatan kinerja hingga 3x
- Selain itu, JSONB dalam banyak kasus sedikit lebih kecil daripada teks JSON (sekitar 5% atau 10% lebih kecil), jadi jika banyak memakai JSON, ukuran database juga bisa sedikit berkurang
1 komentar
Komentar Hacker News
Ada banyak kebingungan tentang JSONB
jsonb_.JSONB adalah format yang disediakan Postgres, dan direkomendasikan karena performa baca yang lebih baik dibanding JSON biasa.
Butuh beberapa tahun untuk memahami tujuan document store, dan ini sangat bagus untuk membangun POC (Proof of Concept).
Ada rasa penasaran tentang proses rilis SQLite.
JSONB bisa dicoba di snapshot pra-rilis atau playground.
Ide inti dari spesifikasi JSONB adalah bahwa setiap elemen dimulai dengan header yang berisi ukuran dan tipe.
Familiar dengan BSON milik MongoDB, tetapi tidak dengan JSONB.
JSONB memengaruhi performa.
Andai ada cara untuk mengompresi data JSON di banyak baris.
Terlepas dari format internalnya, ini bisa langsung digunakan di aplikasi.
json_eachdapat menerima parameter yang di-bind dari aplikasi sebagai blob JSONB.