10 puan yazan GN⁺ 2025-03-04 | 2 yorum | WhatsApp'ta paylaş
  • pgRouting, Postgres’in bir uzantısıdır ve ağırlıklı olarak coğrafi bilgi sistemlerinde (GIS) iki nokta arasındaki en kısa yolu bulmak için kullanılır
  • Ancak pgRouting, coğrafi uzamsal verilerin ötesinde, çeşitli grafik yapısındaki verileri işlemek için de kullanılabilir
  • Apache AGE veya Neo4j gibi uzmanlaşmış grafik veritabanlarına hafif bir alternatif olarak kullanılabilir

pgRouting’e giriş

  • pgRouting, PostGIS’in bir uzantısı olarak coğrafi uzamsal yönlendirme yetenekleri sunar
  • Bu sayede en kısa yol hesaplama, ağ analizi ve karmaşık yönlendirme problemlerinin çözümü mümkün olur
  • Genellikle GIS’te, örneğin iki konum arasındaki en kısa yolu bulmak için kullanılır

Grafiklerle bağlantısı

  • pgRouting’in gücü, grafik yapısında düzenlenmiş her türlü veriyle çalışabilmesidir
  • Grafikler, birbiriyle bağlantılı noktaların oluşturduğu ağlardan oluşur ve burada:
    • Düğümler varlıkları temsil eder
    • Kenarlar düğümler arasındaki ilişkiyi veya yolu temsil eder
  • Harita veya GIS bağlamında düğümler ve kenarlar sırasıyla kavşakları ve yolları ifade eder; ancak bu yapı sosyal ağlar gibi soyut sistemlere de uygulanabilir

GIS dışındaki pgRouting kullanım örnekleri

  • İş planlama

    • Projelerde işler arasında bağımlılıklar bulunur ve bu yapı bir yönlü çevrimsiz grafik (DAG) oluşturur
      • Düğümler işleri temsil eder
      • Kenarlar bağımlılıkları temsil eder
    • Proje yönetimindeki temel zorluklardan biri, toplam proje süresini belirleyen "kritik yol"u bulmaktır
    • pgRouting kullanılarak iş bağımlılıkları modellenebilir ve grafik algoritmalarıyla kritik yol bulunabilir
  • Kaynak tahsisine dayalı reverse proxy yönlendirmesi

    • Dağıtık sistemlerde ağdaki düğümler arasında kaynakları verimli biçimde tahsis etmek önemlidir
    • Her düğüm fiziksel bir konumu veya bir hesaplama sürecini temsil ederken, kenarlar düğümler arasındaki veri hareketi yolunu temsil eder
    • Örneğin bulut altyapısında pgRouting kullanılarak veri veya hesaplama işleri, dağıtık sunucular arasında en verimli yoldan yönlendirilebilir
  • YouTube benzeri öneri motorları

    • Öneri motorlarında veya bilgi grafiği kullanan arama algoritmalarında pgRouting, varlıklar ile olaylar arasındaki ilişkileri kurmak için kullanılabilir
    • Örneğin YouTube’un öneri algoritmasında:
      • Düğümler kullanıcılar, videolar ve kategoriler gibi varlıkları temsil eder
      • Kenarlar kullanıcılarla videolar arasındaki etkileşimler veya videolar arasında kategori paylaşımı gibi ilişkileri temsil eder
    • Bu tür grafik yapıları sayesinde kullanıcılara kişiselleştirilmiş öneriler sunulabilir

pgRouting hakkında ek bilgiler

  • pgRouting, çeşitli grafik tabanlı problemleri çözmek için kullanılabilen güçlü bir Postgres uzantısıdır
  • Daha fazla bilgi için pgRouting resmi dokümantasyonu incelenebilir

2 yorum

 
curiosityprocessor 2025-03-05

apache age ya da pgRoutingi gerçekten devreye alan var mı?
Şirkette graph DB kullanmaya başlıyoruz; mevcutta RDB olarak Postgres kullanıyoruz ama
plugin/extension'lar Postgres'i "sanki graph DB'ymiş gibi" kullanmayı mümkün kılsa da pratikte performans vermediği söyleniyor, bu yüzden neo4ji düşünüyorduk; ama anlaşılan Hacker News yorumlarında da neo4jden memnun olmayan epey kişi var.

 
GN⁺ 2025-03-04
Hacker News yorumu
  • Beş yıl önce Graph veritabanları ve kütüphanelerinden hayal kırıklığına uğrayınca, NetworkX benzeri bir Python arayüzünün arkasına birden fazla graph olmayan DBMS yerleştirmeye çalışmıştım

    • Neo4J tüm graph’larda çöküyordu; SQLite ve Postgres ise ağ işleme işleri için daha uygun seçeneklerdi
    • Postgres uyumluluğu arttığına göre projeyi yenilemeye değip değmeyeceğini merak ediyorum
    • MemGraph gibi daha fazla Graph DB, CYPHER ile uyumlu olduğundan Neo4J’den daha iyi çalışabilir
    • Amaç, pgrouting’in AI/ajanlar için bir bellek katmanı kurmada iyi bir araç olup olmadığını görmekti
    • İlk sonuçlar umut verici; yakında başka bir yazıyla devam etmeyi planlıyorum
    • SuiteSparse tabanlı onesparse gibi ilginç eklentiler var
  • Supabase, PostGIS ile ilgili sürekli harika içerikler üretiyor

    • Doğrudan tile sunmak ya da PG coğrafi bağlamında özellikleri (kötüye) kullanmakla ilgili içerikler var
    • Devrim niteliğinde ya da çok karmaşık değil ama eğlenceli ve zihinsel olarak uyarıcı
    • Veritabanlarıyla çalışmaya yönelik ilgiyi tetikleyen içerikleri sık sık yayımlamalarını takdir ediyorum
  • Neden hiç "graph için SQLite" olmadığını hep merak etmişimdir

    • Disk tabanlı depolamaya sahip in-process bir çözümü engelleyen bir depolama biçimi olup olmadığını merak ediyorum
  • Basit bir Postgres graph DB projesi üzerinde çalışıyorum

    • Aynı iş için sorgular ve tablo yapıları çok daha basit
  • Komşuluk matrisini ifade etmek için roaring bitmap’leri Postgres bytea sütununda saklama fikri hakkında görüş duymak isterim

    • RDS, plrust ve PostgreSQL’in SPI’ını desteklediği için bunu croaring-rs ile kurabileceğimi düşünüyorum
    • Çok sayıda graph temsil edilebilir ve her graph bir tenant’a (şirket/B2B SaaS kullanım senaryosu) atanır
    • plrust kullanarak roaring bitmap’leri DB sunucusundaki bytea içinde saklayabilir ve ağ ek yükünü en aza indirmek için SPI kullanabilirim
    • PostgreSQL işlem güvenliği sağlıyor; ayrıca tenant ID sütunu ve ilişki metadatasını sorgulamak için JSONB gibi diğer sütun tabanlı verileri de destekliyor
    • Çok sayıda tenant graph’ını desteklemem gerekiyor; zaten citus kullanıyorum, bu yüzden büyük ölçekte de mümkün görünüyor
    • İlişkileri daha iyi indekslemek için bazı operator class’lar yazmam gerekecek gibi duruyor
    • pg_roaringbitmap’i biliyorum ama int64 kullanıyor ve ben RDS üzerinde başlamayı tercih ediyorum
    • Neo4J kullanmıyor, onun yerine PostgreSQL’i derinlemesine kullanıyorum (~20+ TB tablolarla çalışma vb.)
    • Blog yazısının yazarına büyük teşekkürler
    • pgRouting graph DB olarak kullanılabilir gibi görünüyor; test listeme ekledim
  • "Apache AGE" hakkında görüşü olan var mı merak ediyorum

    • Apache AGE™, graph veritabanı yetenekleri sunan PostgreSQL’dir
  • Yalnızca veri modeline bakıldığında (ör. sorgu dili değil), "graph" veritabanı ile "genel SQL" veritabanı arasında gerçekten bir fark olup olmadığını merak ediyorum

  • PgRouting kullanarak izokron üretme deneyimi olan var mı merak ediyorum

    • Yürüyüş, bisiklet vb. için izokron haritaları üretme kullanım senaryom var
    • Mümkünse sadece Postgres kullanmak ve Valhalla, OpenTripPlanner, OpenRouteService gibi başka altyapılardan kaçınmak istiyorum
  • Postgres, her zaman yeni veri modelleme fırsatları açan eklentiler sunuyor

    • CedarDB’nin (Postgres uyumlu) graph özellikleriyle karşılaştırıldığında nasıl konumlandığını merak ediyorum