Lompati ke konten utama
Modul 15 · Pelajaran 1 dari 256/57 dalam kursus~15 min
Pelajaran modul (1/2)

Integrasi JSON dan JSONB

Integrasi JSON dan JSONB

PostgreSQL menulis ulang aturan database dengan menggabungkan sifat ACID SQL yang meyakinkan dan kokoh dengan fleksibilitas dinamis dan lancar yang khas dari NoSQL. Itu dilakukan dengan menawarkan kolom yang awalnya didedikasikan untuk menyimpan data JSON.

Perhatian: di Postgres hampir selalu disarankan untuk menggunakan JSONB. "B" adalah singkatan dari Biner: Dokumen JSON yang disimpan dalam kolom ini kehilangan format tekstual murninya, namun memperoleh kemampuan untuk divalidasi, ditanyakan dengan kinerja sangat tinggi, dimanipulasi, dan bahkan diindeks dengan B-tree klasik atau GIN INDEX.

Menavigasi JSON: operator "Panah".

Sayangnya database ecommerce saat ini tidak memiliki kolom JSON murni yang telah ditentukan sebelumnya. Namun, kita dapat membuat nilai JSON sementara dan "mentransmisikannya" dari teks!

Saat bekerja dengan JSON, operator yang menelusuri objek dan array adalah -> (menyimpan data dalam bentuk jsonb/json murni) atau versi "diperpanjang" ->> (mengonversi data JSON yang ditemukan menjadi teks).

Contoh akademis, seolah-olah ada kolom JSON "metadata":

SQL
-- Look up the value associated with the info key
SELECT metadata->'info' FROM users;

-- Drill into info, and grab city as text
SELECT metadata->'info'->>'city' FROM users;
Latihan#sql.m15.l1.e1
Upaya: 0Memuat…

Mari kita menanyakan JSON dengan cepat. Proyeksikan json literal \`'{"user": {"name": "Mario"}}'::json\` ini dan gunakan operator \`->\` yang dikombinasikan dengan versi tekstual (\`->>\`) untuk mengekstrak 'nama', beri nama kolom yang diekstraksi 'nama_pengguna'.

Memuat editor…
Tunjukkan petunjuk

Transmisikan ke ::json atau ::jsonb, dan gunakan ->'pengguna'->>'nama'.

Solusi tersedia setelah 3 upaya

Latihan#sql.m15.l1.e2
Upaya: 0Memuat…

Bagaimana jika kita melewatkan sebuah array? Akses array di json_b di Postgres bekerja dengan INDEX (berbasis nol). Ekstrak elemen KEDUA sebagai teks dari \`'["A", "B", "C"]'::json\` dan beri nama 'huruf'.

Memuat editor…
Tunjukkan petunjuk

->>1 (berbasis nol!)

Solusi tersedia setelah 3 upaya