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":
-- 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;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'.
Tunjukkan petunjuk
Transmisikan ke ::json atau ::jsonb, dan gunakan ->'pengguna'->>'nama'.
Solusi tersedia setelah 3 upaya
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'.
Tunjukkan petunjuk
->>1 (berbasis nol!)
Solusi tersedia setelah 3 upaya