6 puan yazan GN⁺ 2024-05-21 | 1 yorum | WhatsApp'ta paylaş

Zaman serisi verisi nedir?

  • Zaman serisi verisi, her veri noktasına bir zaman damgasının eklendiği veri kümesidir
  • Örnekler: hisse senedi fiyatları, cihaz ve sensörlerden dönen sıcaklık ve erişilebilirlik verileri, web sitesinin trafik verileri
  • Zaman serisi işlemleri genellikle zaman filtrelemeli sorguları ve veri özetleme için toplulaştırma sorgularını içerir

PostgreSQL ile zaman serisi işlemleri

  • PostgreSQL, genişletilebilirliği ve ekosistem araçları sayesinde her türlü veri işini ele alabilir
  • Tembo, kullanıcıların PostgreSQL ekosistemini kolayca kullanabilmesini hedefliyor
  • Müşterilerden gelen en büyük talep, zaman serisi verilerini depolayıp işleyebilecek bir yığındı

pg_timeseries'in bileşenleri

  • Zaman serisi verilerini verimli şekilde depolamak ve sorgulamak için gereksinimler:
    • Zaman serisi verilerini kolay yönetmek
    • Yüksek işlem hacmini karşılamak
    • Aralık sorgularına hızlı yanıt vermek
    • Büyük miktardaki veriyi verimli depolamak
    • Karmaşık analiz fonksiyonlarını çalıştırmak
  • PostgreSQL'in temel özellikleri:
    • Yerel bölümleme, çeşitli indeksler, materialized view'lar, pencere/analitik fonksiyonlar
  • Ek eklentiler:
    • pg_partman: bölüm yönetimi
    • pg_cron: iş zamanlama
    • columnar: sıkıştırma
    • pg_ivm: artımlı materialized view
    • pg_tier: eski bölümlerin uzun vadeli offload işlemi

pg_timeseries: PostgreSQL'de zaman serisi verilerini yönetmenin en basit yolu

  • pg_timeseries, birden fazla eklentinin özelliklerini birleştirerek birleşik bir arayüz sunuyor
  • Başlamak için zamanla ilişkili bir sütuna göre bölümlenmiş bir tablo gerekiyor
    CREATE TABLE measurements (
      metric_name text,
      metric_value numeric,
      metric_time timestamptz NOT NULL
    ) PARTITION BY RANGE (metric_time);
    
    SELECT enable_ts_table('measurements');
    
  • Önemli bilgiler sağlamak için çeşitli view'lar içeriyor:
    SELECT table_id, table_size_bytes FROM ts_table_info;
    SELECT * FROM ts_part_info;
    
  • Bölümlerin sıkıştırma ve silme politikaları ayarlanabiliyor:
    SELECT set_ts_compression_policy('measurements', '90 days');
    SELECT set_ts_retention_policy('measurements', '365 days');
    
  • Ek fonksiyonlar da sunuyor:
    SELECT
      locf(avg(metric_value)) OVER (ORDER BY metric_time) avg_val,
      last(metric_name, metric_value) highest,
      metric_time
    FROM date_bin_table(NULL::measurements, '1 hour', '[2024-05-09,2024-06-07]');
    

Daha yolun başındayız

  • PostgreSQL için bir zaman serisi eklentisi oluşturmak çok sayıda bileşen gerektiriyor
  • Bunu toplulukla birlikte, açık şekilde geliştirmeyi planlıyorlar
  • Mevcut yol haritası:
    • Eski bölümleri S3 gibi cold storage'a offload etmek
    • Verimli analiz için yaklaşık fonksiyonlar
    • Artımlı materialized view'lar
    • Eski bölümlerin rollup ve rolloff işlemleri
    • Ek analitik yardımcı fonksiyonlar
  • Tam yol haritası GitHub README dosyasında yer alıyor ve özellik öncelikleri kullanıcı talebine göre belirleniyor

GN⁺ görüşü

  • Zaman serisi verisinin önemi: IoT, finans, web analitiği gibi çeşitli alanlarda zaman serisi verisinin önemi artıyor. pg_timeseries, bu verileri verimli biçimde yönetmeye yardımcı olan araçlar sunuyor.
  • PostgreSQL'in genişletilebilirliği: PostgreSQL'in eklenti yapısı kullanılarak çeşitli veri işleri yürütülebilir. pg_timeseries, bu eklentileri bir araya getirerek kullanıcı deneyimini iyileştiriyor.
  • Toplulukla iş birliği: Açık kaynak olarak geliştirildiği için topluluk geri bildirimleri ürüne yansıtılabiliyor. Bu da özellik geliştirme ve hata düzeltme açısından büyük fayda sağlıyor.
  • Rakip ürünler: TimescaleDB gibi diğer zaman serisi veritabanlarıyla karşılaştırıldığında, lisans kısıtlaması olmadan kullanılabilmesi bir avantaj. Ancak performans ve özellikler açısından karşılaştırmalı değerlendirme gerekli.
  • Benimseme açısından dikkat edilmesi gerekenler: pg_timeseries'i kullanıma alırken mevcut veritabanlarıyla uyumluluk, performans ve bakım maliyeti gibi unsurlar dikkate alınmalı. Ayrıca zaman serisi verisinin doğası gereği veri hacmi hızla artabileceğinden uygun depolama yönetimi gerekiyor.

1 yorum

 
GN⁺ 2024-05-21
Hacker News görüşü

Hacker News yorum derlemesi özeti

  • Artımlı Materialized View'lar

    • Artımlı materialized view'lar temel özellik olarak öne çıkıyor; veriler geldikçe performans düşüşü olmadan güncel kalabiliyor.
    • pg_ivm gibi bir uygulamanın mı kullanılacağı, yoksa bunun şirket içinde mi geliştirileceği merak ediliyor.
    • Bir gün IVM'in PostgreSQL çekirdeğine dahil edilmesi umuluyor.
  • TimescaleDB ile karşılaştırma

    • TimescaleDB'nin lisans kısıtlamaları nedeniyle sıkıştırma, artımlı materialized view, sonsuz depolama gibi özellikler kullanılamıyor.
    • Bu özellikler olmadan müşterilerin zaman serisi veri ihtiyaçlarının karşılanamayacağı düşünüldüğü için PostgreSQL lisanslı uzantı doğrudan inşa edilmiş.
    • TimescaleDB'nin ücretsiz sürümüyle 500 milyon gözlemden oluşan bir veritabanını shard etme deneyimi yaşanmış ve büyük bir sorun olmadan çalışmış.
    • Keşke benchmark ve karşılaştırma sonuçları da olsaydı; yine de izlenmeye devam edilecek.
  • Append-Only tablolar

    • PostgreSQL ve diğer veritabanlarına yerel append-only tabloların eklenmesinin zamanı gelmiş görünüyor.
    • Bu doğrudan bir zaman serisi veritabanı özelliği olmasa da standardizasyonla ilgili mantık ve yaklaşım açısından faydalı olabilir.
  • Zaman serisi veritabanlarının evrimi

    • Zaman serisi veritabanları şu yönlerde evriliyor:
      • Sütun tabanlı depolama ve Parquet ile Arrow gibi açık formatlara yakınsama: InfluxDB 3.0, QuestDB
      • PostgreSQL üzerine zaman serisi özellikleri ekleme: Timescale, pg_timeseries
      • Prometheus ekosistemi etrafında şekillenen gözlemlenebilirlik platformları: Grafana, Victoria Metrics, Chronosphere
  • Sütun tabanlı depolamanın gerekliliği

    • Zaman serisi sorgularının çoğu toplulaştırma sorgusudur.
    • Bu amaç için birinci sınıf bir sütun tabanlı depolamadan yararlanmak ya da onu inşa etmek mantıklıdır.
    • ClickHouse benzeri bir ürünün neden PostgreSQL'de bulunmadığı sorgulanıyor.
  • Faydalı bağlantılar

    • Trunk ve pgt.dev hakkında bilgi edinilmiş olmasından memnuniyet dile getiriliyor.
  • Load balancer log girdileri

    • Bu uzantının load balancer log girdilerini (durum, yanıt gövdesi, header'lar vb.) işlerken faydalı olup olmayacağı merak ediliyor.
    • Sütun tabanlı veritabanı depolamasının genel satır tabanlı veritabanlarına göre daha verimli olabileceği düşünülüyor.
    • Load balancer log girdileri, analiz olaylarına benzer şekilde değerlendirilebilir.
  • Açık kaynak inovasyonu

    • PostgreSQL her zaman açık kaynak oldu ve çok özgür açık kaynak kütüphaneler kullandı.
    • Replikasyondan zaman serisi desteğine kadar çeşitli proprietery ve source-available uzantılar vardı.
    • Artık bu tür proprietery uzantılar uygun açık kaynak alternatifler tarafından zorlanıyor.
  • PostgreSQL lisansı

    • PostgreSQL lisansını kullanmak iyi bir karar olarak görülüyor.
  • Site tasarımı ve uygulama arayüzü

    • Site tasarımı başarılı ve okunması kolay bulunuyor.
    • Uygulama arayüzü de demo görsellerinde harika görünüyor; denemeye istek duyuluyor.