- Memperkenalkan pendekatan untuk memanfaatkan fitur JSON SQLite dengan menyimpan dokumen JSON asli apa adanya, lalu mengekstrak field yang diperlukan ke kolom terbuat virtual (virtual generated columns) untuk diindeks
- Dengan fungsi
json_extract, data di dalam JSON dapat diperlakukan seperti kolom, sehingga kueri dapat dijalankan dengan kecepatan indeks B-tree
- Setiap kali pola kueri baru dibutuhkan, kolom dan indeks dapat ditambahkan tanpa migrasi data
- Pendekatan ini sekaligus menghadirkan fleksibilitas data tanpa skema dan kinerja basis data relasional
- Ditekankan sebagai pola praktis yang memberikan struktur ringkas dan kinerja tinggi bagi pengembang yang menggunakan SQLite
Menggabungkan SQLite dan fitur JSON
- SQLite mendukung fungsi dan operator JSON, sehingga data JSON bisa disimpan dan dimanipulasi secara langsung
- Dokumen JSON disimpan apa adanya dalam satu kolom, lalu hanya informasi yang diperlukan yang diekstrak sebagai kolom virtual
- Pendekatan ini memungkinkan penanganan data yang fleksibel tanpa definisi skema
- Tim DB Pro telah menggunakan SQLite secara intensif selama beberapa bulan terakhir dan memverifikasi fitur ini dalam praktik kerja nyata
- Jika dikonfigurasi dengan tepat, SQLite dapat digunakan secara stabil bahkan di lingkungan produksi
Kolom terbuat virtual (Generated Columns)
- Menggunakan
json_extract untuk mendefinisikan nilai tertentu di dalam JSON sebagai kolom terbuat virtual
- Kolom ini tidak menyimpan data aktual, melainkan dihitung saat kueri dijalankan dan bisa langsung digunakan
- Tidak diperlukan proses backfill terpisah atau duplikasi data
- Misalnya, dimungkinkan membuat struktur yang mengekstrak field tertentu dari data JSON dan memperlakukannya seperti kolom
Menambahkan indeks dan meningkatkan kinerja
- Jika indeks ditambahkan ke kolom virtual, data JSON juga dapat dicari dengan kecepatan indeks B-tree seperti kolom biasa
- Kolom virtual yang telah diindeks memberikan kinerja yang sama seperti kolom dalam basis data relasional
- Pendekatan ini memungkinkan pencarian cepat bahkan ketika ukuran data JSON membesar
Menambahkan pola kueri baru
- Jika nanti perlu melakukan pencarian berdasarkan field baru, cukup tambahkan kolom virtual dan indeks baru
- Contoh: mengekstrak field
user_id lalu membuat indeks
- Tidak perlu memodifikasi baris data yang sudah ada atau melakukan migrasi
- Dengan demikian, skalabilitas kueri instan dapat diperoleh tanpa mengubah struktur data
Keunggulan dan makna pola ini
- Pola ini menggabungkan fleksibilitas penyimpanan JSON tanpa skema dan kinerja indeks DB relasional
- Tidak perlu menentukan strategi pengindeksan sejak tahap desain awal
- Optimasi dapat dilakukan dengan menambahkan kolom dan indeks pada saat dibutuhkan
- Disajikan sebagai cara pengolahan data yang sederhana namun kuat bagi pengembang yang memanfaatkan SQLite
- DB Pro juga mengisyaratkan akan membahas lebih banyak fitur SQLite dalam artikel-artikel berikutnya
Belum ada komentar.