10 पॉइंट द्वारा GN⁺ 2025-03-04 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • pgRouting Postgres का एक extension है, जिसका मुख्य उपयोग geographical information system (GIS) में दो बिंदुओं के बीच shortest path खोजने के लिए किया जाता है
  • लेकिन pgRouting का उपयोग geospatial data के अलावा graph structure वाले कई तरह के data को प्रोसेस करने में भी किया जा सकता है
  • इसे Apache AGE या Neo4j जैसे विशेष graph database के lightweight विकल्प के रूप में इस्तेमाल किया जा सकता है

pgRouting परिचय

  • pgRouting PostGIS का एक extension feature है, जो geospatial routing capabilities प्रदान करता है
  • इसके जरिए shortest path calculation, network analysis, और जटिल routing problems को हल करना संभव है
  • इसका उपयोग मुख्य रूप से GIS में, जैसे दो स्थानों के बीच shortest path खोजने के लिए, किया जाता है

Graph के साथ एकीकरण

  • pgRouting की बड़ी ताकत यह है कि यह graph के रूप में संरचित किसी भी data के साथ काम कर सकता है
  • Graph आपस में जुड़े बिंदुओं के network से बना होता है, जहाँ:
    • Node किसी entity को दर्शाता है
    • Edge nodes के बीच संबंध या path को दर्शाता है
  • Map या GIS में nodes और edges क्रमशः intersections और roads को दर्शाते हैं, लेकिन इसे social network जैसे abstract systems पर भी लागू किया जा सकता है

GIS के बाहर pgRouting के उपयोग के उदाहरण

  • Task scheduling

    • Project में tasks के बीच dependencies होती हैं, जो directed acyclic graph (DAG) बनाती हैं
      • Node task को दर्शाता है
      • Edge dependency को दर्शाता है
    • Project management की प्रमुख चुनौतियों में से एक 'critical path' ढूँढना है, जो पूरे project की अवधि तय करता है
    • pgRouting का उपयोग करके task dependencies को model किया जा सकता है और graph algorithms के जरिए critical path निकाला जा सकता है
  • Resource allocation आधारित reverse proxy routing

    • Distributed systems में network के nodes के बीच resources को efficiently allocate करना महत्वपूर्ण होता है
    • हर node physical location या computing process को दर्शाता है, और edges nodes के बीच data movement path को दर्शाती हैं
    • उदाहरण के लिए, cloud infrastructure में pgRouting का उपयोग distributed servers के बीच data या computing tasks को सबसे efficient path से route करने के लिए किया जा सकता है
  • YouTube जैसे recommendation engine

    • Recommendation engine या knowledge graph का उपयोग करने वाले search algorithms में pgRouting का उपयोग entities और events के बीच संबंध बनाने के लिए किया जा सकता है
    • उदाहरण के लिए, YouTube के recommendation algorithm में:
      • Node user, video, category जैसी entities को दर्शाता है
      • Edge user और video के बीच interaction या videos के बीच shared category जैसे संबंधों को दर्शाता है
    • इस graph structure के जरिए users को personalized recommendations दी जा सकती हैं

pgRouting के बारे में अतिरिक्त जानकारी

  • pgRouting Postgres का एक शक्तिशाली extension है, जिसका उपयोग graph-आधारित कई तरह की समस्याओं को हल करने में किया जा सकता है
  • अधिक जानकारी pgRouting आधिकारिक दस्तावेज़ में देखी जा सकती है

2 टिप्पणियां

 
curiosityprocessor 2025-03-05

क्या किसी ने apache age या pgRouting को वास्तव में प्रोडक्शन में अपनाकर देखा है?
हमारी कंपनी में Graph DB अपनाया जा रहा है, और अभी हम मौजूदा RDB के रूप में postgres का इस्तेमाल कर रहे हैं।
plugin/extension के जरिए postgres को 'मानो Graph DB की तरह' इस्तेमाल तो किया जा सकता है, लेकिन सुना है कि असली performance नहीं मिलती, इसलिए हम neo4j पर विचार कर रहे थे। मगर लगता है Hacker News पर neo4j को लेकर भी काफी असंतोष है।

 
GN⁺ 2025-03-04
Hacker News राय
  • पाँच साल पहले, Graph database और libraries से निराश होकर NetworkX जैसे Python interface के पीछे कई non-Graph DBMS लगाने की कोशिश की थी

    • Neo4J हर graph पर क्रैश हो जाता था, और network processing tasks के लिए SQLite और Postgres बेहतर विकल्प थे
    • Postgres compatibility बढ़ने के साथ यह सोच रहे थे कि क्या इस project को फिर से ताज़ा करना उचित होगा
    • MemGraph जैसे अधिक Graph DB अब CYPHER-compatible हैं, इसलिए संभव है कि वे Neo4J से बेहतर काम करें
    • लक्ष्य यह देखना था कि क्या pgrouting AI/agent के लिए memory layer बनाने में एक अच्छा tool है
    • शुरुआती नतीजे आशाजनक हैं, और जल्द ही किसी दूसरे लेख में follow-up करने की योजना है
    • SuiteSparse पर आधारित onesparse जैसे दिलचस्प extensions भी हैं
  • Supabase लगातार PostGIS से जुड़ा शानदार content दे रहा है

    • इसमें tiles को सीधे serve करने या PG geospatial context में features का (mis)use करने जैसी बातें शामिल हैं
    • यह बहुत innovative या complex नहीं है, लेकिन मज़ेदार और मानसिक रूप से stimulating है
    • database के साथ काम करने में रुचि जगाने वाला content अक्सर प्रकाशित करने के लिए उनकी सराहना की गई
  • हमेशा यह सोचकर हैरानी होती थी कि "graph के लिए SQLite" क्यों नहीं है

    • यह भी जिज्ञासा है कि क्या disk-based storage के साथ in-process solution को रोकने वाली कोई storage approach है
  • एक साधारण Postgres graph DB project पर काम चल रहा है

    • queries और table structure उसी तरह के काम के लिए कहीं अधिक सरल हैं
  • roaring bitmap को Postgres के bytea column में store करके adjacency matrix दिखाने के विचार पर राय जानना चाहते हैं

    • RDS, plrust और PostgreSQL के SPI को support करता है, इसलिए लगता है कि इसे croaring-rs से बनाया जा सकता है
    • इससे कई graphs को represent किया जा सकता है, और हर graph किसी tenant (company/B2B SaaS use case) को assign होगा
    • plrust का उपयोग करके roaring bitmap को DB server के bytea में store किया जा सकता है और SPI के ज़रिए network overhead को कम किया जा सकता है
    • PostgreSQL transaction safety देता है, और tenant ID column व relationship metadata को query करने के लिए JSONB जैसे दूसरे column-based data का support भी देता है
    • बहुत से tenant graphs को support करना होगा, और क्योंकि पहले से citus इस्तेमाल कर रहे हैं, इसलिए लगता है कि यह बड़े scale पर भी संभव होगा
    • relationships को बेहतर index करने के लिए शायद कुछ operator classes बनानी होंगी
    • pg_roaringbitmap के बारे में जानते हैं, लेकिन यह int64 का उपयोग करता है और RDS से शुरुआत करना पसंद करेंगे
    • Neo4J का उपयोग किए बिना PostgreSQL का गहराई से उपयोग कर रहे हैं (~20+ TB tables पर काम आदि)
    • blog post के लेखक को बहुत धन्यवाद दिया
    • ऐसा लगता है कि pgRouting को graph DB की तरह इस्तेमाल किया जा सकता है, इसलिए इसे test list में जोड़ लिया है
  • जानना चाहते हैं कि "Apache AGE" पर किसी की क्या राय है

    • Apache AGE™ graph database capabilities देने वाला PostgreSQL है
  • यह जिज्ञासा है कि केवल data model को देखकर (जैसे query language नहीं) "graph" database और "general SQL" database के बीच वास्तव में कोई अंतर है या नहीं

  • जानना चाहते हैं कि क्या किसी को PgRouting का उपयोग करके isochrones बनाने का अनुभव है

    • walking, cycling आदि के लिए isochrone maps बनाने का use case है
    • अगर संभव हो तो सिर्फ Postgres का उपयोग करना चाहते हैं और Valhalla, OpenTripPlanner, OpenRouteService जैसी दूसरी infrastructure से बचना चाहते हैं
  • Postgres हमेशा ऐसे extensions देता है जो data modeling के नए मौके खोलते हैं

    • यह जानना चाहेंगे कि CedarDB (Postgres-compatible) graph features की तुलना में यह कितना बेहतर या कमतर है