20 puan yazan GN⁺ 2025-12-05 | 2 yorum | WhatsApp'ta paylaş
  • PGlite, WASM ortamında tam bir Postgres veritabanını yerelde çalıştırabilen hafif bir çözüm
  • Sıkıştırıldığında 3MB'tan küçük boyutuyla, tarayıcı veya istemci ortamlarında da kolayca çalıştırılabiliyor
  • Veri yükleme, senkronizasyon ve gerçek zamanlı sorgu özellikleri yerleşik olarak sunuluyor ve reaktif veri işleme sağlıyor
  • pgvector dahil dinamik eklenti yükleme özelliğini destekleyerek çeşitli genişletme modüllerinin kullanılmasına imkan tanıyor
  • Supabase tabanlı database.build üzerinden yapay zeka ile Postgres veritabanı oluşturup dağıtabilmeye olanak vererek web tabanlı veritabanı geliştirmenin esnekliğini artırıyor

Genel Bakış

  • PGlite, WASM(WebAssembly) ortamında çalışan gömülü bir Postgres veritabanı
    • Yerel ortamda tam bir Postgres örneği çalıştırabiliyor
    • Reaktif veri işleme ve gerçek zamanlı senkronizasyonu destekliyor

Başlıca Özellikler

  • Hafiflik: Gzip sıkıştırma baz alındığında 3MB'tan küçük tam bir Postgres derlemesi sunuyor
    • Tarayıcı veya hafif istemci ortamlarında da çalışabiliyor
  • Genişletilebilirlik: Dinamik eklenti yükleme mekanizması ile çeşitli Postgres genişletmelerini eklemek mümkün
    • pgvector eklentisini varsayılan olarak destekliyor
  • Reaktiflik: Veri yükleme, senkronizasyon ve gerçek zamanlı sorgu için yerleşik özellikler içeriyor
    • Gerçek zamanlı veri güncellemeleri ve reaktif uygulama geliştirme için uygun

Deneme ve Kullanım

  • database.build platformunda PGlite tabanlı bir Postgres veritabanı oluşturup yayımlamak mümkün
    • Supabase tarafından geliştirilen yapay zeka tabanlı araç sayesinde kullanıcılar veritabanını doğrudan oluşturabiliyor
  • Tarayıcı içinde PGlite Postgres örneğini doğrudan çalıştırmak mümkün
    • pgvector dahil
    • Ek genişletmeler playground(REPL) ortamında denenebiliyor

Önemi

  • PGlite, Postgres'in yeteneklerini tarayıcı seviyesine taşıyarak istemci odaklı veritabanı çalıştırmayı mümkün kılıyor
  • Hafiflik, genişletilebilirlik ve reaktifliği bir araya getirerek yeni nesil web uygulaması geliştirme için dikkat çeken bir veritabanı çözümü olarak öne çıkıyor

2 yorum

 
qqq7300 2025-12-10

Bu haberi gördükten sonra kendi projeme deneme amaçlı olarak PGlite’ı eklemeyi denedim. Özellikle basit testlerde gerçekten çok hızlı ve iyi olduğunu gördüm. Gelecek için de umut verici görünüyor.

 
GN⁺ 2025-12-05
Hacker News görüşleri
  • Ben PGlite ekibinde çalışıyorum. HN'de yeniden yer almasından memnunum
    Son dönemde haftalık indirme sayısı 3 milyonu geçti ve yakında 4 milyona ulaşacak — bkz. npm paket sayfası
    Başlangıçta web uygulamalarına gömmek için yapmıştık ama şimdi geliştirme araçları ve CLI ortamları içindeki kullanım çok hızlı artıyor. Google Firebase ve Prisma da kendi CLI'larında PGlite'ı gömülü kullanarak sunucu ürünlerini emüle ediyor

    • İlginç. Ama neden bunu yalnızca WASM olarak yaptığınızı merak ediyorum. Normalde önce kütüphaneleştirilip sonra WASM'e taşınır gibi geliyor; sanırım benim kaçırdığım bir nokta var
    • Harika çalışma için teşekkürler. Acaba http-vfs read-only senaryosunu destekleme planınız var mı?
      Yani DuckDB veya sql.js-httpvfs gibi, uzak bir URL'den range request ile blok okuma yaklaşımı
      Bizim laboratuvarda da böyle bir proje yürütülüyor ama http-vfs ekosistemi hâlâ prototip düzeyinde, bu yüzden optimize edilmiş kütüphane neredeyse yok
      PostgreSQL'in disk erişim örüntüsünün SQLite'a göre http-vfs için daha uygun olup olmadığını da merak ediyorum
    • Flutter için bir kütüphane planı olup olmadığını sormak istiyorum
    • PGlite'ın bellek modunda normal Postgres'ten daha hızlı olup olmadığını merak ediyorum
      Eğer öyleyse, ağ protokolü desteği eklenip JS dışındaki dillerin CI ortamlarında da kullanılabilse gerçekten çok iyi olur
    • Gerçekten çok etkileyici görünüyor. Bunu özellikle hangi kullanım senaryolarında tercih etmek gerektiğini bilmek istiyorum
      Hedefin SQLite veya DuckDB için bir alternatif olmak olup olmadığını merak ediyorum
  • Ben PGlite'ı JavaScript dışı çalışma zamanlarında kullanmak istiyorum
    Örneğin bir Go CLI içine WASM çalışma zamanı olarak gömüp SQLite yerine kullanmak gibi
    Issue #89'a bakınca Rust için üçüncü taraf binding'ler var gibi görünüyor; resmi olarak başka diller için binding desteği planlanıyor mu merak ediyorum

    • Evet, PGlite + Go kombinasyonu gerçekten harika olurdu
  • PGlite gerçekten mükemmel. Ben bunu geliştirme amaçlı olarak tarayıcı içi PostgreSQL sunucusu şeklinde kullanıyorum
    Sunucu PG protokolünü uyguluyor, istemci bağlandığında sorguları tarayıcıya iletiyor ve içeride PGlite çalışıyor
    Sonuç olarak tarayıcının içinde tam bir PG sunucusu çalışıyor — dbfor.dev

  • Bu proje çok ilgi çekici. Postgres'in dezavantajlarından biri her zaman bir sunucu kurmayı gerektirmesi; bu da o sorunu çözüyor
    Acaba bunu yerel kütüphane olarak derlemenin bir yolu var mı diye merak ediyorum. Kodun bir kısmı yeniden kullanılabilir gibi görünüyor

    • Ben deneme amaçlı olarak bunu React Native için derledim. iOS ve Android'de Postgres çalışıyor — PR bağlantısı
    • Yerel kütüphane şu anda yol haritasında yer alıyor
    • Kesinlikle katılıyorum. SQL'i ya da davranışı değiştirmeden gömülü moddan ağ moduna geçebilmek çok harika olurdu
  • PGlite ile SQLite arasındaki farkların ne olduğunu merak ediyorum
    Ben daha çok gömülü ortamlarda ve tarayıcı istemci tarafında SQLite kullandım
    SQLite'ın gücü sadeliği ama PGlite'ın çeşitli genişletme özellikleri ilginç görünüyor. İki veritabanı arasındaki temel farkların ne olduğunu bilmek istiyorum

    • Bence ana kullanım alanı test/CI ortamları
      SQLite ile testleri hızlıca çalıştırabilirsiniz ama gerçek altyapınız PostgreSQL ise bunun değeri sınırlı kalır
  • Unit testlerde hâlâ TestContainers ile Docker tabanlı Postgres çalıştırıyorum
    Ama bu tür alternatifler sayesinde py-pglite gibi Python test araçları da mümkün oldu
    Yine de ben pgserver gibi gerçek Postgres'i hafif bir pip paketi olarak çalıştırabilen yaklaşımlara daha çok güveniyorum
    Benim görüşüm tamamen unit test perspektifinden

    • Bu iki yaklaşımın trade-off'larının ne olduğunu merak ediyorum. Bu tür deneyim paylaşımları her zaman faydalı oluyor
  • Ekibimiz yeni bir dahili servis geliştirirken test ortamına PGlite ekledi
    Test sırasında PGlite'ı, gerçek çalıştırmada ise Postgres instance'ını kullanacak şekilde bir wrapper kurduk ve sonuç çok başarılı oldu
    Özellikle .clone() özelliğiyle veritabanı checkpoint'leri oluşturup her test için başlangıç durumuna geri dönebiliyoruz
    50 test paketini paralel çalıştırmak da çok kolay hâle geldi

  • Bunu test için kullanıyorum ve bellek içi SQLite ile tam Postgres instance'ı arasında bir orta nokta gibi hissettiriyor
    Uzun zamandır böyle bir şey arıyordum; testler hızlandığı için memnunum. Şimdiye kadar neredeyse hiç kısıtla karşılaşmadım

  • Doltgres adında tek çalıştırılabilir dosya biçiminde bir Postgres de var
    Deno gibi tek bir .exe dosyasını indirip çalıştırınca doğrudan Postgres ayağa kalkıyor — Doltgres kurulum dokümanı