PGlite – Postgres Tertanam
(pglite.dev)- PGlite adalah solusi ringan untuk menjalankan database Postgres lengkap secara lokal di lingkungan WASM
- Dengan ukuran kurang dari 3MB saat dikompresi, solusi ini dapat dijalankan dengan mudah di browser atau lingkungan klien
- Fitur pemuatan data, sinkronisasi, dan kueri real-time sudah terintegrasi untuk pemrosesan data yang reaktif
- Mendukung fitur pemuatan ekstensi dinamis termasuk pgvector, sehingga dapat memanfaatkan berbagai modul ekstensi
- Melalui database.build berbasis Supabase, database Postgres dapat dibuat dan diterapkan dengan AI, sehingga meningkatkan fleksibilitas pengembangan database berbasis web
Gambaran umum
- PGlite adalah database Postgres tertanam yang berjalan di lingkungan WASM (WebAssembly)
- Dapat menjalankan instance Postgres lengkap di lingkungan lokal
- Mendukung pemrosesan data reaktif dan sinkronisasi real-time
Fitur utama
- Ringan: Menyediakan build Postgres lengkap berukuran kurang dari 3MB berdasarkan kompresi Gzip
- Dapat berjalan di browser maupun lingkungan klien ringan
- Dapat diperluas: Berbagai fitur ekstensi Postgres dapat ditambahkan melalui mekanisme pemuatan ekstensi dinamis
- Mendukung ekstensi pgvector secara bawaan
- Responsif: Mencakup fitur bawaan untuk pemuatan data, sinkronisasi, dan kueri real-time
- Cocok untuk pembaruan data real-time dan membangun aplikasi reaktif
Uji coba dan pemanfaatan
- Di platform database.build, pengguna dapat membuat dan memublikasikan database Postgres berbasis PGlite
- Alat berbasis AI yang dibangun oleh Supabase, memungkinkan pengguna membuat database secara langsung
- Instance Postgres PGlite dapat dijalankan langsung di dalam browser
- Termasuk pgvector
- Ekstensi tambahan dapat diuji di lingkungan playground(REPL)
Makna
- PGlite memperluas kemampuan Postgres hingga ke level browser, sehingga memungkinkan eksekusi database yang berpusat di klien
- Dengan menggabungkan ringan, dapat diperluas, dan responsif, PGlite mendapat perhatian sebagai solusi database yang cocok untuk pengembangan aplikasi web generasi berikutnya
2 komentar
Setelah membaca artikel ini, saya mencoba mengadopsi PGlite secara eksperimental ke proyek saya. Untuk pengujian sederhana, performanya memang sangat cepat dan bagus. Saya jadi makin menantikannya ke depan.
Komentar Hacker News
Saya bekerja di tim PGlite. Senang melihatnya kembali dibahas di HN
Baru-baru ini jumlah unduhan mingguan telah melampaui 3 juta dan sebentar lagi akan mencapai 4 juta — lihat halaman paket npm
Awalnya kami membuatnya untuk di-embed ke web app, tetapi sekarang penggunaannya meledak di alat pengembangan dan lingkungan CLI. Google Firebase dan Prisma juga menanamkan PGlite ke CLI masing-masing untuk mengemulasikan produk server mereka
Maksud saya cara seperti DuckDB atau sql.js-httpvfs yang membaca blok dari URL jarak jauh lewat range request
Lab kami juga sedang mengerjakan proyek seperti ini, tetapi ekosistem http-vfs masih di tingkat prototipe sehingga hampir tidak ada library yang benar-benar optimal
Saya juga penasaran apakah pola akses disk PostgreSQL lebih cocok untuk http-vfs dibanding SQLite
Kalau iya, akan sangat keren jika mendukung protokol jaringan sehingga bisa dipakai juga di lingkungan CI bahasa selain JS
Saya penasaran apakah tujuannya menjadi pengganti SQLite atau DuckDB
Saya ingin memakai PGlite di runtime non-JavaScript
Misalnya di-embed ke CLI Go dengan runtime WASM untuk dipakai sebagai pengganti SQLite
Dari issue #89, sepertinya ada binding pihak ketiga untuk Rust, tetapi saya penasaran apakah ada rencana resmi mendukung binding untuk bahasa lain
PGlite benar-benar luar biasa. Saya memakainya untuk pengembangan sebagai server PostgreSQL di dalam browser
Server tersebut mengimplementasikan protokol PG, dan saat klien terhubung, query diteruskan ke browser lalu PGlite dijalankan di dalamnya
Hasilnya, server PG penuh di dalam browser benar-benar berjalan — dbfor.dev
Proyek ini sangat menarik. Salah satu kelemahan Postgres adalah kita selalu harus menyiapkan server, dan ini menyelesaikan masalah itu
Saya penasaran apakah ada cara untuk mengompilasikannya sebagai library native. Sepertinya sebagian kodenya bisa dipakai ulang
Saya penasaran tentang perbedaan antara PGlite dan SQLite
Selama ini saya kebanyakan memakai SQLite di lingkungan embedded dan sisi klien browser
Kelebihan SQLite adalah kesederhanaannya, tetapi beragam fitur ekstensi di PGlite menarik. Saya ingin tahu apa perbedaan mendasar antara kedua DB tersebut
Kita bisa menjalankan test dengan cepat memakai SQLite, tetapi jika infrastruktur nyatanya PostgreSQL, nilainya jadi terbatas
Untuk unit test saya masih menjalankan Postgres berbasis Docker dengan TestContainers
Tapi berkat alternatif seperti ini, alat pengujian Python seperti py-pglite juga menjadi mungkin
Meski begitu, saya pribadi lebih percaya pendekatan seperti pgserver, yang memungkinkan Postgres sungguhan dijalankan ringan sebagai paket pip
Pendapat saya ini murni dari sudut pandang unit test
Tim kami mengadopsi PGlite di lingkungan test saat membangun layanan internal baru
Kami membuat wrapper agar saat test memakai PGlite, sedangkan saat menjalankan sungguhan memakai instance Postgres, dan hasilnya sangat sukses
Fitur
.clone()khususnya memungkinkan kami membuat checkpoint DB lalu mengembalikannya ke keadaan awal di setiap testMenjalankan 50 test suite secara paralel juga jadi sangat mudah
Saya memakainya untuk test, dan rasanya seperti titik tengah antara SQLite in-memory dan instance Postgres penuh
Saya sudah lama mencari sesuatu seperti ini, dan saya puas karena kecepatan test meningkat. Sejauh ini juga hampir tidak ada kendala
Ada juga Doltgres, yaitu Postgres dalam bentuk single executable
Seperti Deno, cukup unduh satu file
.exelalu jalankan dan Postgres langsung aktif — dokumentasi instalasi Doltgres