9 puan yazan GN⁺ 2024-11-04 | 1 yorum | WhatsApp'ta paylaş
  • PostgreSQL veritabanları arasında verileri taşımanın ve dönüştürmenin en kolay yolunu sunar
  • Gerçek zamanlı akış: PostgreSQL mantıksal çoğaltmasını kullanarak veri değişikliklerini neredeyse gerçek zamanlı olarak akışa alır
  • Toplu kopyalama: Paralel işlenebilen toplu kopyalama ile ilk veri senkronizasyonunu hızlıca gerçekleştirir
  • Güçlü dönüşümler: Regex tabanlı dönüşümler uygular, hassas verileri maskeler ve sütun değerlerine göre filtreleme yapar
  • Esnek yönlendirme: Verileri tablolar arasında sorunsuz biçimde yönlendirir; farklı adlı tablolara ya da aynı tabloya, özel sütun eşlemeleriyle yönlendirme yapar
  • Dönüşüm kuralı örnekleri
    • E-posta adresi maskeleme: E-posta sütununu maskeleme karakterlerine dönüştürür.
    • Telefon numarası biçimlendirme: Regex kullanarak telefon numarası biçimini dönüştürür.
  • Tablo yönlendirme ve sütun eşleme
    • Esnek tablo yönlendirme: users tablosunu customers tablosuna yönlendirir; id ve username alanlarını customer_id ve customer_name olarak eşler.
    • Çoklu tablo yönlendirme: orders tablosunu transactions tablosuna yönlendirir; id ve total_amount alanlarını transaction_id ve amount olarak eşler.
  • Yaygın kullanım senaryoları
    • PostgreSQL DB'leri arasında gerçek zamanlı veri çoğaltma
    • Veri dönüşümü içeren ETL pipeline'ları kurma
    • Veri yeniden yönlendirme, maskeleme ve filtreleme
    • Kesinti olmadan veritabanı migrasyonu gerçekleştirme
    • PostgreSQL üzerinde event streaming
  • Nasıl çalışır
    • pg_flo, veri değişikliklerini yakalayıp akışa almak için PostgreSQL'in mantıksal çoğaltma sisteminden yararlanır.
    • NATS'i mesaj aracısı olarak kullanarak WAL'den okumayı replikatör ve worker süreçlerinden ayırır; böylece esneklik ve ölçeklenebilirlik sağlar.
    • Dönüştürme ve filtreleme işlemleri, veri hedefe ulaşmadan önce uygulanır.

1 yorum

 
GN⁺ 2024-11-04
Hacker News yorumları
  • pg_flo projesi oldukça ilgi çekici görünüyor; özellikle S3’e arşivleme ve daha uygun maliyetli araç sürümü cazip

    • Debezium gibi araçlar, çok büyük veri kümeleri (TB’ler) yerine daha küçük veri kümeleriyle (GB’ler) çalışmaya imkân tanıyor; bu da yerel testleri kolaylaştırıyor
    • Kafka ve Debezium kullanmak kısa vadeli bir çaba ve bu zahmete değip değmeyeceği değerlendiriliyor
    • Ekibin değerlendirdiği diğer çözümlerden biri de peerdb
  • PostgreSQL mantıksal replikasyonunu kullanarak ana veritabanındaki verileri temizleyen ve S3’e arşivleyen bir proje üzerinde çalışılıyor

    • Bazı tabloların okuma işlemleri için ikincil bir Postgres instance’ında da erişilebilir olması gerekiyor; bu nedenle replikasyon gerekli
    • Ana veritabanındaki iki farklı silme işlemi sorun yaratıyor
      • İlk silme işlemi veri temizliği için yapılıyor ve replike edilen veritabanına yansımaması isteniyor
      • İkinci silme işlemi rollback amaçlı ve veri durumunu değiştirdiği için replike edilmesi gerekiyor
    • Bu iki silme işlemini ayırt edip yalnızca rollback silmelerini replike etmenin bir yolu olup olmadığı merak ediliyor
  • Postgres CDC çözümleri araştırılıyor ve pg_flo’nun yardımcı olup olamayacağı merak ediliyor

    • Hata modlarının açıklanıp açıklanamayacağı soruluyor
    • Örneğin, NATS sunucusu (veya worker/replicator) düğümü ölürse ne olacağı bilinmek isteniyor
    • Veriyi Postgres’ten ElasticSearch/ClickHouse’a taşımanın ne kadar zor olduğu merak ediliyor
  • Debezium’a bir alternatif olabilmesi umuluyor

    • Debezium, başlangıçta tüm CDC durumunu Kafka’ya kopyalamak zorunda ve Kafka saklama süresinin sonsuza ayarlanması gerekiyor; bu da birçok Kafka hizmet sisteminde mümkün olmuyor
  • pglogical, Postgres içinde çalışabiliyor; ancak pg_flo bir eklenti değil, harici bir servis gibi görünüyor

    • Bu aslında bir avantaj olabilir
    • pg_flo’nun Azure Postgres, Supabase, Neon gibi Postgres as a service instance’larıyla kullanılıp kullanılamayacağı merak ediliyor
    • Tedarikçinin onaylamadığı bir eklenti kurmaya gerek kalmadan WAL okunup okunamayacağı soruluyor
  • Bu aracı denemek için büyük heyecan var

    • Ağ bağlantısının kopması/kararsızlığı sırasında kopyalamayı yönetip yönetemeyeceği merak ediliyor
  • Sequin ile kıyaslandığında nasıl farklılaştığı merak ediliyor

    • CDC olay tabanlı iş akışlarını mümkün kılarken, aynı zamanda olay akışını istek üzerine keyfi olarak yeniden oynatabilen bir araç aranıyor
  • Buna benzer bir araç aranıyordu; zamanlaması mükemmel

    • Çeşitli dönüşümlerle toplu kopyalamanın (ör. gece çalıştırılan) desteklenip desteklenmediği ve sürekli akış gerektirip gerektirmediği merak ediliyor
  • S3’e yedek almaktansa replikasyon kullanmanın daha iyi olup olmayacağı merak ediliyor

  • Çok havalı bir araç