20 poin oleh GN⁺ 2025-12-05 | 2 komentar | Bagikan ke WhatsApp
  • 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

 
qqq7300 2025-12-10

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.

 
GN⁺ 2025-12-05
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

    • Menarik. Tapi saya penasaran kenapa ini dibuat khusus WASM. Biasanya rasanya urutannya adalah membuatnya jadi library dulu lalu memindahkannya ke WASM, jadi mungkin ada bagian yang saya lewatkan
    • Terima kasih atas kerja hebatnya. Saya penasaran apakah ada rencana mendukung skenario http-vfs read-only
      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
    • Saya ingin bertanya apakah ada rencana library untuk Flutter
    • Saya penasaran apakah PGlite lebih cepat daripada Postgres biasa dalam mode memori
      Kalau iya, akan sangat keren jika mendukung protokol jaringan sehingga bisa dipakai juga di lingkungan CI bahasa selain JS
    • Ini terlihat sangat keren. Saya ingin tahu secara spesifik kasus penggunaan seperti apa yang cocok untuk ini
      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

    • Betul, kombinasi PGlite + Go terdengar sangat bagus
  • 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 sempat bereksperimen mengompilasinya untuk React Native. Postgres berjalan di iOS dan Android — tautan PR
    • Library native saat ini sudah masuk roadmap
    • Saya sangat setuju. Akan sangat keren jika kita bisa beralih dari embedded ke mode jaringan tanpa mengubah SQL maupun perilakunya
  • 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

    • Menurut saya, penggunaan utamanya adalah di lingkungan test/CI
      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

    • Saya penasaran apa trade-off antara dua pendekatan itu. Cerita pengalaman seperti ini selalu membantu
  • 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 test
    Menjalankan 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 .exe lalu jalankan dan Postgres langsung aktif — dokumentasi instalasi Doltgres