10 poin oleh GN⁺ 2025-03-04 | 2 komentar | Bagikan ke WhatsApp
  • pgRouting adalah ekstensi untuk Postgres yang terutama digunakan dalam sistem informasi geografis (GIS) untuk mencari rute terpendek antara dua titik
  • Namun, pgRouting juga dapat dimanfaatkan untuk menangani data dengan berbagai struktur graf selain data geospasial
  • Dapat digunakan sebagai alternatif ringan untuk basis data graf khusus seperti Apache AGE atau Neo4j

Pengenalan pgRouting

  • pgRouting adalah fitur ekstensi dari PostGIS yang menyediakan kemampuan routing geospasial
  • Melaluinya, perhitungan rute terpendek, analisis jaringan, dan penyelesaian masalah routing yang kompleks dapat dilakukan
  • Umumnya digunakan di GIS, misalnya untuk mencari rute terpendek antara dua lokasi

Keterkaitan dengan graf

  • Kekuatan pgRouting terletak pada kemampuannya bekerja dengan semua data yang terstruktur sebagai graf
  • Graf terdiri dari jaringan titik-titik yang saling terhubung, di mana:
    • Node mewakili entitas
    • Edge mewakili hubungan atau jalur antar node
  • Dalam peta atau GIS, node dan edge masing-masing berarti persimpangan dan jalan, tetapi konsep ini juga dapat diterapkan pada sistem abstrak seperti jejaring sosial

Contoh pemanfaatan pgRouting di luar GIS

  • Penjadwalan tugas

    • Dalam proyek, terdapat dependensi antar tugas, yang membentuk directed acyclic graph (DAG)
      • Node mewakili tugas
      • Edge mewakili dependensi
    • Salah satu tantangan utama dalam manajemen proyek adalah menemukan 'critical path' yang menentukan durasi keseluruhan proyek
    • Dengan menggunakan pgRouting, dependensi tugas dapat dimodelkan dan critical path dapat ditemukan melalui algoritma graf
  • Routing reverse proxy berbasis alokasi sumber daya

    • Dalam sistem terdistribusi, penting untuk mengalokasikan sumber daya secara efisien antar node dalam jaringan
    • Setiap node mewakili lokasi fisik atau proses komputasi, dan edge mewakili jalur perpindahan data antar node
    • Misalnya, dalam infrastruktur cloud, pgRouting dapat digunakan untuk merutekan data atau pekerjaan komputasi antar server terdistribusi melalui jalur yang paling efisien
  • Mesin rekomendasi seperti YouTube

    • Dalam mesin rekomendasi atau algoritma pencarian yang menggunakan knowledge graph, pgRouting dapat dimanfaatkan untuk membangun hubungan antara entitas dan peristiwa
    • Misalnya, dalam algoritma rekomendasi YouTube:
      • Node mewakili entitas seperti pengguna, video, dan kategori
      • Edge mewakili hubungan seperti interaksi antara pengguna dan video atau kesamaan kategori antar video
    • Melalui struktur graf ini, rekomendasi yang dipersonalisasi dapat diberikan kepada pengguna

Informasi tambahan tentang pgRouting

  • pgRouting adalah ekstensi yang kuat untuk Postgres dan dapat digunakan untuk menyelesaikan berbagai masalah berbasis graf
  • Detail lebih lanjut dapat dilihat di dokumentasi resmi pgRouting

2 komentar

 
curiosityprocessor 2025-03-05

Adakah yang pernah benar-benar menerapkan apache age atau pgRouting?
Di perusahaan kami sedang mempertimbangkan adopsi graph DB, dan saat ini kami memang menggunakan Postgres sebagai RDB yang sudah ada.
Katanya plugin/extension memang bisa membuat Postgres digunakan "seolah-olah seperti graph DB", tetapi performa nyatanya tidak terlalu bagus, jadi kami sempat mempertimbangkan neo4j. Namun, melihat opini di Hacker News, tampaknya cukup banyak juga yang tidak puas dengan neo4j.

 
GN⁺ 2025-03-04
Opini Hacker News
  • Lima tahun lalu, merasa kecewa dengan database dan pustaka Graph, lalu mencoba menempatkan beberapa DBMS non-Graph di balik antarmuka Python mirip NetworkX

    • Neo4J gagal di semua graph, sementara SQLite dan Postgres lebih cocok untuk pekerjaan pemrosesan jaringan
    • Dengan kompatibilitas Postgres yang meningkat, jadi penasaran apakah proyek itu layak diperbarui
    • Lebih banyak Graph DB seperti MemGraph kompatibel dengan CYPHER dan mungkin bekerja lebih baik daripada Neo4J
    • Tujuannya adalah mencari tahu apakah pgrouting merupakan alat yang bagus untuk membangun lapisan memori untuk AI/agen
    • Hasil awal menjanjikan, dan akan ditindaklanjuti melalui artikel lain dalam waktu dekat
    • Ada ekstensi menarik seperti onesparse yang berbasis SuiteSparse
  • Supabase terus menghadirkan konten yang sangat bagus terkait PostGIS

    • Ada pembahasan tentang menyajikan tile secara langsung atau (menyalahgunakan) fitur dalam konteks geografis PG
    • Tidak inovatif atau rumit, tetapi menyenangkan dan merangsang secara intelektual
    • Dipuji karena sering memublikasikan konten yang membangkitkan minat untuk bekerja dengan database
  • Selalu penasaran mengapa tidak ada "SQLite untuk graph"

    • Bertanya-tanya apakah ada metode penyimpanan yang menghambat solusi in-process dengan penyimpanan berbasis disk
  • Sedang mengerjakan proyek graph DB Postgres yang sederhana

    • Query dan struktur tabel jauh lebih sederhana untuk pekerjaan yang sama
  • Ingin mendengar pendapat tentang menyimpan bitmap roaring di kolom bytea Postgres untuk merepresentasikan matriks ketetanggaan

    • Karena RDS mendukung plrust dan SPI PostgreSQL, sepertinya bisa dibangun menggunakan croaring-rs
    • Dapat merepresentasikan banyak graph, dan setiap graph ditetapkan ke tenant (kasus penggunaan perusahaan/B2B SaaS)
    • Dengan plrust, bitmap roaring bisa disimpan di bytea pada server DB dan menggunakan SPI untuk meminimalkan overhead jaringan
    • PostgreSQL memberikan keamanan transaksi, serta dukungan untuk data berbasis kolom lain seperti JSONB untuk melakukan query pada kolom ID tenant dan metadata relasi
    • Harus mendukung banyak graph tenant, dan karena sudah menggunakan citus, tampaknya juga memungkinkan dalam skala besar
    • Sepertinya perlu membuat beberapa kelas operator untuk mengindeks relasi dengan lebih baik
    • Mengetahui pg_roaringbitmap, tetapi memakai int64 dan lebih memilih memulai dari RDS
    • Menggunakan PostgreSQL secara mendalam tanpa Neo4J (misalnya bekerja dengan tabel ~20+ TB)
    • Menyampaikan terima kasih sebesar-besarnya kepada penulis posting blog tersebut
    • Sepertinya pgRouting bisa digunakan sebagai graph DB, jadi menambahkannya ke daftar pengujian
  • Penasaran apakah ada pendapat tentang "Apache AGE"

    • Apache AGE™ adalah PostgreSQL yang menyediakan kemampuan database graph
  • Bertanya-tanya apakah, hanya dari model datanya saja (misalnya bukan bahasa query), benar-benar ada perbedaan antara database "graph" dan database "SQL biasa"

  • Penasaran apakah ada pengalaman menggunakan PgRouting untuk menghasilkan isochrone

    • Ada kasus penggunaan untuk membuat peta isochrone untuk berjalan kaki, bersepeda, dan sebagainya
    • Jika memungkinkan, ingin hanya memakai Postgres dan menghindari infrastruktur lain seperti Valhalla, OpenTripPlanner, dan OpenRouteService
  • Postgres selalu menyediakan ekstensi yang membuka peluang baru dalam pemodelan data

    • Penasaran bagaimana perbandingannya dengan fitur graph CedarDB (kompatibel dengan Postgres)