- 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
apache ageya dapgRoutingi 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 daneo4jden memnun olmayan epey kişi var.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
Supabase, PostGIS ile ilgili sürekli harika içerikler üretiyor
Neden hiç "graph için SQLite" olmadığını hep merak etmişimdir
Basit bir Postgres graph DB projesi üzerinde çalışıyorum
Komşuluk matrisini ifade etmek için roaring bitmap’leri Postgres
byteasütununda saklama fikri hakkında görüş duymak isterimplrustve PostgreSQL’in SPI’ını desteklediği için bunucroaring-rsile kurabileceğimi düşünüyorumplrustkullanarak roaring bitmap’leri DB sunucusundakibyteaiçinde saklayabilir ve ağ ek yükünü en aza indirmek için SPI kullanabilirimpg_roaringbitmap’i biliyorum amaint64kullanıyor ve ben RDS üzerinde başlamayı tercih ediyorumpgRoutinggraph DB olarak kullanılabilir gibi görünüyor; test listeme ekledim"Apache AGE" hakkında görüşü olan var mı merak ediyorum
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
Postgres, her zaman yeni veri modelleme fırsatları açan eklentiler sunuyor