Belajar JSONB di PostgreSql

Dasar operator, json, dan jsonb di PostgreSql

Mufti
Mufti
Jul 30 · 3 min read
Image for post
Image for post
PostgreSQL with JSON

Hi kawan kalian tahu PostgreSql ga? bagi yang belum tahu PostgreSql adalah salah satu database relasi yang open source, seperti yang kita tahu PostgreSql adalah database yang datanya di representasikan dalam bentuk tabel. Mungkin dulu sebelum kalian mengenal database yang menyimpan datanya dalam bentuk dokumen kalian sering menggunakan database yang berbentuk tabel, mungkin Mysql, MariaDB, atau Oracle.

Schemaless

Ada beberapa alasan kenapa kita menggunakan database relasional, Seperti kita dapat melakukan join beberapa tabel, agregasi dan kita sudah tahu bahwa data yang akan kita simpan itu memiliki schema yang pasti. Namun, apa yang terjadi jika ternyata tiba-tiba ada suatu data yang schemanya belum jelas?, hal yang mungkin difikirkan adalah akan menggunakan database lain yang memang mendukung untuk struktur data yang schemanya belum pasti. Di Indonesia sendiri yang cukup populer adalah MongoDB, sebuah database NoSQl yang merepresentasikan datanya dalam bentuk dokumen(MongoDB menyebutnya BSON). Namun ingat tujuan dari NoSQL bukan hanya schemaless masih banyak keuntungan lain yang kita dapatkan menggunakan NoSQL.

JSON dan JSONB

Salah satu jenis tipe data yang dapat digunakan untuk menyimpan data schemaless adalah JSON, PostgreSQL sendiri merilis dukungan untuk menyimpan data dalam bentuk JSON pada versi 9.2(CMIIW), dalam menyimpan data JSON PostgreSQL membuat suatu tipe data tersendiri lagi yang disebut JSONB lalu apa bedanya JSON dan JSONB?. JSON adalah suatu format data yang berbasis text dengan struktur sederhana yang mudah dibaca manusia, JSON ini tidak peduli jika ada whitespace, urutan key, duplikat antara key dan value. Untuk menghindari hal-hal tersebut maka dibuatlah JSONB, bentuk data sama seperti JSON namun disimpan dalam bentuk binary code serta dapat melakukan operasi-operasi yang tidak bisa dilakukan oleh JSON. PostgreSql sendiri mendukung kedua tipe data tersebut, bagi saya jika kalian hanya membutuhkan operasi dasar JSON saya sarankan menyimpan data dalam bentuk JSON saja, tetapi jika membutuhkan operasi yang tidak bisa dilakukan JSON maka JSONB dapat menjadi pilihan.

Operator JSON dan JSONB

Apa saja sebenarnya operator yang dapat digunakan untuk tipe data json dan jsonb?. Untuk mengetahui operator apa saja kalian dapat membaca langsung dalam dokumentasi PostgreSql atau membacanya dalam database pg_catalog, dengan menjalankan query berikut:

Image for post
Image for post
hasil query untuk operator json

Memang tidak ada penjelasan maksud dari operator tersebut, namun query tersebut menunjukan ke kita bahwa kita dapat menggunakan oprname untuk query data atau oprcode, kenapa kita perlu tahu tersebut? karena ketika kita membangun sebuah aplikasi kadang kita tidak bisa langsung menggunakan operator name dalam membangun query sebagai contoh ada operator yang mengecek apakah ada nilai string[] itu ada di data tersebut atau tidak, jika kita menggunakan secara langsung akan dibaca sebagai prepared statement di query yang mana ketika dijalankan kode kamu mungkin akan menyebabkan error karena kamu tidak memberikan value kepada prepared statement tersebut, maka dari itu untuk mencari alternatif lain kalian dapat menggunakan oprcode.

Operator JSON dan JSONB:

Operator JSONB:

Jadi berikut operator-operator yang ada di JSON dan JSONB biasanya operator tersebut digunakan ketika kalian data atau query , sebenarnya masih ada fungsi lain seperti fungsi untuk , dan yang dapat kalian baca di dokumentasi postgresql.

Kesimpulan

Jadi berikut tentang dasar-dasar JSON dan JSONB kapan kita harus memakai json dan jsonb? adalah berdasar dari akan ada operasi data seperti apa yang terjadi di dalam database kita, jika operasi tersebut operasi JSON dasar kita dapat menggunakan JSON dan jika ternyata membutuhkan operasi lain kita bisa menggunakan JSONB, selain itu JSONB punya keunggulan sbb:

  • Pemrosesan data lebih cepat
  • Mendukung indexing

Tapi juga memiliki kelemahan:

  • Input data menjadi lebih lambat karena di konversi ke bytecode
  • Kemungkinan memakan ruang penyimpanan lebih besar

See you guys selamat belajar :D

Easyread

Easy read, easy understanding.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store