Yazar: Tarih: Thu May 14

MeridianDB: Local-First Sync Engine

Kendi PostgreSQL'iniz üzerinde Firebase benzeri gerçek zamanlı veri senkronizasyonu. Çevrimdışı çalışır, anlık sync yapar, çakışmaları kendi çözer.

Projeye git
MeridianDB Sync Engine

Proje Hakkında

Günümüzde modern web ve mobil uygulamaların standart beklentilerinden biri de “gerçek zamanlılık” (real-time) ve “çevrimdışı çalışma” (offline-first) yetenekleridir. Notion, Figma veya Linear gibi uygulamaları kullanırken internetiniz kesildiğinde bile sorunsuzca çalışmaya devam edebilir, bağlantı geri geldiğinde ise yaptığınız değişikliklerin diğer tüm kullanıcılarla anında ve kayıpsız bir şekilde eşitlendiğini (sync) görürsünüz.

Geliştiriciler bu tarz bir altyapı kurmak istediklerinde genellikle zorlu bir ikilemle karşılaşırlar: Ya Firebase, Supabase veya Convex gibi yönetilen bir bulut (SaaS) servisi kullanarak verilerinin kontrolünü (data sovereignty) başkasına devrederler; ya da WebSocket, çevrimdışı işlem kuyrukları (offline queues), yeniden bağlanma stratejileri ve en zoru olan çakışma çözümlerini (conflict resolution) sıfırdan yazmak zorunda kalırlar.

MeridianDB, bu iki dünyanın en iyi yönlerini birleştiren açık kaynaklı bir senkronizasyon motorudur (Sync Engine). Sizin kendi PostgreSQL veritabanınız üzerinde çalışır. Size Firebase’in sunduğu kusursuz geliştirici deneyimini (DX) sunarken, verilerinizin %100’ünün sizin sunucularınızda ve sizin kontrolünüzde kalmasını sağlar.

Çekirdek Özellikler ve Algoritma

  • Kusursuz Anlık Senkronizasyon: Uygulama içerisinde bir form alanını değiştirdiğiniz anda, o veri arka planda otomatik olarak sunucuya iletilir ve o belgeyi görüntüleyen diğer tüm kullanıcılara WebSocket/WebRTC aracılığıyla milisaniyeler içinde yansıtılır. Geliştiricinin veri çekme (refetch) veya WebSocket dinleme gibi işlemleri manuel yapmasına gerek kalmaz.
  • Kesintisiz Çevrimdışı Deneyim (Offline-First): İnternet bağlantısı koptuğunda uygulamanız kilitlenmez. Tüm okuma ve yazma işlemleri cihazın yerel belleğinde (IndexedDB / SQLite) gerçekleşmeye devam eder. Bağlantı tekrar sağlandığında, cihazdaki birikmiş değişiklik paketleri sunucuya topluca ve sırayla iletilir.
  • Alan Seviyesinde Çakışma Çözümü (Field-Level CRDT): MeridianDB’nin kalbinde gelişmiş bir Çatışmasız Çoğaltılmış Veri Türü (CRDT) motoru bulunur. İki farklı kullanıcı, aynı anda ve tamamen çevrimdışıyken aynı veritabanı satırını güncellerse (örneğin biri “başlık” alanını, diğeri “içerik” alanını değiştirirse), internete bağlandıklarında veriler asla üzerine yazılmaz (no data override). Meridian, değişiklikleri alan (field) seviyesinde matematiksel olarak birleştirerek veri kaybını kesin olarak önler.
  • Uçtan Uca Şifreleme (E2EE): İstemciler (client) arasında aktarılan ve veritabanında saklanan hassas veriler, cihaz tarafında (tarayıcıda) AES-256-GCM kullanılarak şifrelenir. Sunucu, sadece şifrelenmiş paketlerin (blob) transferini ve depolanmasını sağlar, içeriği asla okuyamaz.
  • Platform Bağımsız İstemci SDK’ları: React, Vue ve Svelte gibi modern web framework’lerinin yanı sıra, React Native ve Flutter gibi mobil platformlar için de optimize edilmiş, tip güvenli (type-safe) hazır SDK’lar sunar.

Neden Rakiplerinden Farklı?

Piyasadaki diğer senkronizasyon çözümleri (örneğin Yjs, Automerge) genellikle belge (document) tabanlı veri yapılarına odaklanır ve büyük JSON objeleri taşır, bu da zamanla performans darboğazlarına neden olur. MeridianDB ise ilişkisel veri modelini (Relational Model) benimser.

Performans açısından rakiplerinden 2 ila 3 kat daha hızlı çalışacak şekilde optimize edilmiştir. MeridianDB’nin çekirdek CRDT motoru ve matematiksel vektör saatleri (vector clocks) tamamen Rust diliyle yazılmış ve tarayıcıda WebAssembly (WASM) olarak çalıştırılmıştır. Bu sayede tarayıcı tarafındaki işlemci yükü minimuma indirilmiş ve native hızlara ulaşılmıştır. Ayrıca Transport-Agnostic mimarisi sayesinde, varsayılan WebSocket iletişiminin yanı sıra MQTT, TCP veya Redis Pub/Sub üzerinden de iletişim kurabilir.

Kimler Kullanmalı?

  • Ortak Çalışma Uygulamaları Geliştirenler: Kullanıcıların aynı belge, proje veya tahta üzerinde aynı anda çalıştığı (Google Docs, Figma, Trello benzeri) araçları inşa eden ekipler.
  • Offline Uygulama Geliştiricileri: Mobil ağın çekmediği saha görevleri, envanter sayımları veya yer altı çalışmaları için geliştirilen mobil uygulamalar.
  • Veri Güvenliği ve Regülasyon Kısıtı Olanlar: Sağlık (HIPAA), finans veya devlet sektörü için yazılım üreten ve kullanıcı verilerini üçüncü parti SaaS veritabanlarında tutması yasal olarak yasak olan şirketler.
  • Modern Geliştirici Deneyimi Arayanlar: Firebase veya Supabase Realtime altyapısından ayrılmak isteyen, ancak sundukları rahatlıktan vazgeçmek istemeyen Full-Stack geliştiriciler.

Teknolojik Altyapı ve Lisanslama

Proje tamamen TypeScript kullanılarak şekillendirilmiş, ancak hız kritik olan tüm algoritmalar Rust ve WebAssembly ile güçlendirilmiştir. Mimarisi 12 adet farklı monorepo npm paketinden oluşur ve 70’ten fazla uçtan uca (E2E) test ile test edilmiştir. PostgreSQL tarafında JSONB kolon yapısını kullanarak veri bütünlüğünü sağlar. MIT Açık Kaynak lisansı ile yayınlanmıştır.

GitHub Repository: github.com/vahapogut/MeridianDB

Canlı Demo ve Dokümantasyon: meridiandb-demo.vercel.app

Bültenimize abone olun!