4 puan yazan GN⁺ 2023-09-24 | 1 yorum | WhatsApp'ta paylaş
  • Makale, Postgres veritabanındaki değişiklikleri yakalamanın çeşitli yollarını ele alıyor.
  • Sequin adlı şirket, Salesforce ve HubSpot gibi üçüncü taraf API'lerden verileri senkronize ederek geliştiricilerin API verilerini kendi Postgres veritabanlarını kullanarak inşa etmelerini sağlıyor.
  • Postgres; tablo değişikliklerine dayalı iş akışlarını tetiklemek, ya da verileri gerçek zamanlı olarak başka veri depolarına, sistemlere veya servislere akıtmak gibi, hareket halindeki veriyi yakalamak için birden çok seçenek sunuyor.
  • En basit yaklaşım, Postgres'in süreçler arası iletişim özelliği olan Listen/Notify'ı kullanmaktır. Bu, publish-subscribe deseninin bir uygulamasıdır; ancak "en fazla bir kez" teslim semantiği ve 8000 bayt yük boyutu sınırı gibi kısıtları vardır.
  • Bir diğer yöntem, tabloları doğrudan polling ile sorgulamaktır; bu, her tabloda satır güncellendiğinde güncellenen bir updated_at sütunu veya benzerinin bulunmasını gerektirir. Ancak bu yöntem, satırların ne zaman silindiğini tespit edemez ve delta sağlamaz.
  • Postgres, başka bir Postgres veritabanına streaming replication'ı destekler ve bu, uygulamadaki değişiklikleri yakalamak için kullanılabilir. Ancak bu yöntem karmaşıktır ve postgresql.conf dosyasının ayarlanmasını gerektirebilir.
  • Değişiklikler, değişimleri günlüğe kaydeden denetim tabloları üzerinden de yakalanabilir. Bu yaklaşım, replication slot kullanmaya benzer, ancak daha manueldir.
  • Postgres'in harici veri kaynaklarından okuma ve yazma yapmayı sağlayan özelliği olan Foreign Data Wrapper'lar (FDW'ler) da vardır. Ancak bu yöntem yalnızca çok belirli durumlarda önerilir.
  • Sonuç olarak, Postgres'ta değişiklikleri yakalamanın en iyi yolu kullanım senaryosuna bağlıdır. Listen/Notify kritik olmayan olayları yakalamak için iyidir, değişiklikleri polling ile izlemek basit kullanım senaryoları için sezgisel bir çözümdür ve replication sağlam bir çözüm için en iyi tercihtir. Replication fazla zorsa, denetim tabloları iyi bir ara çözüm olabilir.

1 yorum

 
GN⁺ 2023-09-24
Hacker News görüşü
  • Makale, popüler bir veritabanı sistemi olan Postgres'te değişiklikleri yakalamanın çeşitli yöntemlerini ele alıyor.
  • Bir yorumcu, 30 yıldan uzun süredir kullanılan bir teknik olan trigger'lar ve geçmiş tabloları (denetim tabloları) kullanarak değişiklik yakalamayı güçlü biçimde tavsiye ediyor.
  • Yorumcu, bu tekniğin nasıl uygulanacağına dair bir rehber bağlantısı veriyor ve uygulama katmanındaki geçmiş izleme kütüphanelerini kullanma konusunda uyarıyor.
  • Başka bir yorumcu, tablonun belirli bir andaki durumunu görmeyi sağlayan Temporal Tables desenine dair olumlu deneyimini paylaşıyor.
  • Bir diğer yorumcu, denetim tabloları oluşturan, kendini kanıtlamış pgaudit adlı bir eklentinin kullanılmasını öneriyor.
  • Bazı yorumcular, updated_at sütununu poll etmek gibi belirli yöntemlerin potansiyel risklerini tartışıyor.
  • Elixir ve Postgres kullanıcıları için WAL değişikliklerini dinleyen bir kütüphaneden söz ediliyor.
  • Bazı yorumcular bu alanda yeniliğe ihtiyaç olduğunu ifade ediyor ve Postgres'in sorgu sonuçlarını artımlı olarak push eden bir özellikten fayda görebileceğini öne sürüyor.
  • Bir yorumcu, değişiklik yakalamak için replication kullanmanın riskleri konusunda uyarıyor; Postgres veriyi tüketmeyi bırakırsanız kaçırılan verileri disk dolana kadar tutabilir, diyor.
  • Aynı yorumcu, polling kullandığını ancak updated_at yerine txid saklamayı öneriyor.
  • Tartışma, veri dünyasının bir yönünü öne çıkarıyor: sorgu sonuçlarını artımlı olarak push etmek için temiz bir çözüme ihtiyaç var.