Lewati ke konten utama

Menggunakan JSONB di PostgreSQL

Pendahuluan

PostgreSQL mendukung tipe data JSON dan JSONB untuk menyimpan dan mengelola data berformat JSON. JSONB (Binary JSON) lebih disarankan karena lebih cepat dalam pencarian dan manipulasi data dibandingkan JSON biasa.

Perbedaan JSON dan JSONB

FiturJSONJSONB
PenyimpananDisimpan dalam format teksDisimpan dalam format biner
Kecepatan QueryLambat, karena harus diurai setiap kali digunakanCepat, karena sudah diindeks dan dioptimalkan
Dukungan IndeksTidak mendukungMendukung indeks GIN untuk pencarian cepat
Urutan KeyDipertahankanTidak dipertahankan

Membuat Kolom JSONB

Untuk menggunakan JSONB, buat tabel dengan kolom bertipe JSONB:

CREATE TABLE produk (
id SERIAL PRIMARY KEY,
nama TEXT,
spesifikasi JSONB
);

Menyisipkan Data JSONB

Data dapat dimasukkan dalam format JSON:

INSERT INTO produk (nama, spesifikasi) VALUES 
('Laptop', '{"prosesor": "Intel i7", "ram": "16GB", "storage": "512GB SSD"}');

Query JSONB

Untuk mengambil data dari kolom JSONB, gunakan operator ->> atau ->:

SELECT nama, spesifikasi->>'prosesor' AS prosesor FROM produk;

Mencari Data dalam JSONB

Gunakan operator @> untuk mencari objek JSONB tertentu:

SELECT * FROM produk WHERE spesifikasi @> '{"ram": "16GB"}';

Indeks pada JSONB

Gunakan indeks GIN untuk mempercepat pencarian dalam JSONB:

CREATE INDEX idx_spesifikasi ON produk USING GIN (spesifikasi);

Mengupdate Data JSONB

Untuk memperbarui nilai tertentu dalam JSONB, gunakan jsonb_set:

UPDATE produk SET spesifikasi = jsonb_set(spesifikasi, '{ram}', '"32GB"') WHERE nama = 'Laptop';

Kesimpulan

JSONB di PostgreSQL memberikan fleksibilitas dalam menyimpan data semi-struktur dengan performa yang lebih baik dibandingkan JSON biasa. Dengan penggunaan indeks dan query yang tepat, JSONB bisa menjadi solusi yang efisien untuk menyimpan data dalam format JSON.