PostgreSQL

Jenis Data dan Fungsi PostgreSQL JSONB

Jenis Data dan Fungsi PostgreSQL JSONB

Seperti di 9.2 Versi, PostgreSQL menambah jenis data JSON yang cukup asas. Di bawah sampulnya, jenis data JSON adalah teks, dengan periksa bahawa mungkin susun aturnya adalah input JSON yang betul mirip dengan XML. Akhirnya, pasukan mendapati bahawa jumlah pemprosesan JSON dan pencarian khusus yang diperlukan dalam PostgreSQL pasti sukar atau rasional untuk dilaksanakan atas jenis data teks. Oleh itu, mereka membuat perwakilan binari dari jenis data JSON dengan pelbagai kaedah dan pengendali yang lengkap. Inilah jenis data JSONB. Jenis data JSONB sememangnya susun atur penyimpanan binari serba boleh dengan kemampuan pemprosesan, pengindeksan, dan carian yang lengkap. Akibatnya, ia memproses maklumat JSON ke susun atur dalaman, yang hanya mempunyai satu nilai per kunci dan mengabaikan ruang kosong atau kemurungan tambahan, atau anda mungkin mengatakan lekukan. Dalam panduan ini, anda akan belajar bagaimana berinteraksi dengan borang data JSONB di PostgreSQL, serta beberapa pengendali dan kaedah yang berguna untuk menangani data JSONB.

Jenis data yang kemungkinan besar anda perlukan dan pilih untuk digunakan adalah JSONB, bukan versi awal JSON, yang hanya digunakan untuk keserasian ke belakang. Oleh itu, buka shell arahan PostgreSQL dan berikan nama, pangkalan data, port, dan nama pengguna pelayan.

Contoh 01:

Berikut adalah gambaran ringkas mengenai variasi antara dua jenis data. Kita harus membuat jadual 'Baru' dengan salah satu lajurnya mestilah jenis data 'JSON' seperti berikut:

>> BUAT JADUAL Baru (ID siri PRIMARY KEY, Val JSON);

Masukkan beberapa nilai ke dalam lajur 'Val'.

>> MASUKKAN KE NILAI Baru (Val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"kunci": "nilai"') ;

Penggunaan Operator '@>'

Setelah kami berusaha mencari entri dengan bilangan bulat dalam senarai lajur 'tambahan', kami selalu mendapat mesej ralat seperti yang dilampirkan di bawah.

>> PILIH * DARI BARU DI MANA Val @> '11';

Ya. JSON hanya teks dan tidak begitu cekap, dan tidak mengandungi konfigurasi operator. Biarkan kandungan diubah menjadi jsonb.

>> ALTER TABLE ALTER COLUMN Baru Val JENIS JSONB;

Sekarang jalankan pertanyaan yang sama di shell, dan hasilnya menunjukkan satu baris memiliki nombor '11' dalam arraynya seperti yang diberikan di bawah.

>> PILIH * DARI BARU DI MANA Val @> '11';

Contoh 02:

Mari kita buat jadual 'Bag' untuk digunakan dalam ilustrasi kita sehingga kita mula membincangkan kaedah dan pengendali yang boleh digunakan untuk jenis data PostgreSQL JSONB. Salah satu lajurnya, e.g. 'Jenama' mestilah jenis data 'JSONB' seperti berikut:

>> BUAT TABLE Bag (ID siri PRIMARY KEY, Brand JSONB NOT NULL);

Kami akan menggunakan deklarasi SQL INSERT berikut untuk menambahkan maklumat ke dalam jadual PostgreSQL 'Bag':

>> INSERT INTO Bag (Brand) NILAI ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]') , ('"name": "Allure", "color": ["red", "Grey"], "price": 85000, "sold": false,]'), ('"name": "Kidza", "warna": ["hitam", "putih"], "harga": 75000, "dijual": benar,] ');

Anda dapat melihat bahawa data telah ditambahkan dalam bentuk kamus, e.g., kunci dan nilai.

Unsur-unsur jadual 'Bag' ini dapat dilihat menggunakan kalimat PILIH, seperti yang dilihat di bawah:

>> PILIH * DARI Beg;

Penggunaan Operator '->'

Mari cari nilai di lajur 'Jenama' melalui kunci 'nama' menggunakan operator '->' dalam pertanyaan kami.  Ia akan mengambil semua rekod kunci 'nama' dari lajur 'Jenama'. Keluaran akan ditunjukkan dalam lajur 'jenama' baru. Hasil akhir akan muncul seperti yang dilampirkan di bawah. Seperti yang anda lihat, kami mempunyai tiga nilai: 'Gucci, Allure, kidza' untuk kunci 'name'.

>> PILIH Jenama -> 'nama' SEBAGAI jenama DARI Beg;

Penggunaan Operator '->' Menggunakan Fasal DI MANA

Mari ambil semua baris dari jadual 'Bag' di mana lajur 'Jenama' mendapat nilai 'benar' untuk kuncinya 'dijual'. Pertanyaan untuk pemilihan ini adalah seperti berikut:

>> PILIH * DARI Beg DI MANA Jenama -> 'terjual' = 'benar';

Di sana anda dapat melihat, pertanyaan hanya mengambil dua baris dari meja 'Bag' kerana hanya dua baris yang mempunyai nilai 'true' untuk kunci 'terjual'.

Fungsi PostgreSQL JSONB:

Dengan maklumat JSONB, nampaknya ada berbagai kaedah bawaan yang dapat digunakan. Mari kita lihat satu persatu.

JSONB Setiap Fungsi:

JSONB Setiap fungsi mengambil data dan menukarnya menjadi pasangan key_value. Pertimbangkan pertanyaan berikut kaedah jsonb_each di mana kami telah memberikan nilai. Data JSON peringkat tertinggi diperluas menjadi rangkaian kombinasi nilai-kunci dalam hasilnya. Kami mempunyai dua pasangan nilai-kunci, seperti yang ditunjukkan di bawah.

>> PILIH jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);

Fungsi Kekunci Objek JSONB:

Sekarang, kita akan melihat fungsi Jsonb_object_keys. Fungsi ini mengambil data, dan dengan sendirinya memisahkan dan mengenal pasti nilai-nilai penting di dalamnya. Cuba pertanyaan SELECT di bawah ini, di mana kami telah menggunakan kaedah jsonb_object_keys dan memberikan beberapa nilai. Kaedah ini hanya akan mengembalikan kunci dokumen peringkat tertinggi JSON untuk data tertentu, seperti yang ditunjukkan di bawah.

>> PILIH jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);

Fungsi Laluan Ekstrak JSONB:

Fungsi JSONB Extract Path mengambil jalan untuk menunjukkan nilai dalam hasil. Cuba pertanyaan di bawah di shell arahan, di mana kami telah menyediakan 'jenama' sebagai jalan ke kaedah JSONB jsonb_extract_path. Dari output yang ditunjukkan dalam gambar di bawah, anda dapat melihat bahawa 'Gucci' adalah nilai yang dikembalikan ke jalan 'nama'.

>> PILIH jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');

Fungsi JSONB Pretty:

Sekiranya anda ingin memaparkan fail JSON anda dengan susun atur yang mudah dibaca, maka fungsi JSONB Pretty adalah pilihan terbaik. Cubalah pertanyaan di bawah, dan anda akan mendapat output yang mudah.

>> PILIH jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);

Kesimpulan:

Apabila anda menyimpan maklumat JSONB dalam pangkalan data PostgreSQL, anda memperoleh hasil yang terbaik: kesederhanaan dan kebolehpercayaan pangkalan data NoSQL yang digabungkan dengan kelebihan pangkalan data hubungan. Dengan menggunakan banyak pengendali dan kaedah, kami menunjukkan cara menggunakan PostgreSQL JSONB. Anda akan dapat bekerja dengan data JSONB menggunakan ilustrasi kami sebagai rujukan.

Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...