- pgRouting เป็นส่วนขยายของ Postgres ที่โดยหลักแล้วใช้ในระบบสารสนเทศภูมิศาสตร์ (GIS) เพื่อค้นหาเส้นทางที่สั้นที่สุดระหว่างสองจุด
- อย่างไรก็ตาม pgRouting ยังสามารถนำไปใช้จัดการข้อมูลที่มีโครงสร้างแบบกราฟได้หลากหลาย นอกเหนือจากข้อมูลเชิงพื้นที่
- สามารถใช้เป็นทางเลือกแบบเบากว่าสำหรับฐานข้อมูลกราฟเฉพาะทางอย่าง Apache AGE หรือ Neo4j ได้
แนะนำ pgRouting
- pgRouting เป็นส่วนขยายของ PostGIS ที่มอบความสามารถด้านการทำ routing เชิงภูมิสารสนเทศ
- ทำให้สามารถคำนวณเส้นทางที่สั้นที่สุด วิเคราะห์เครือข่าย และแก้ปัญหา routing ที่ซับซ้อนได้
- โดยมากถูกใช้งานใน GIS เช่น การค้นหาเส้นทางที่สั้นที่สุดระหว่างสองตำแหน่ง
การเชื่อมโยงกับกราฟ
- จุดแข็งของ pgRouting คือสามารถทำงานร่วมกับข้อมูลทุกชนิดที่มีโครงสร้างเป็นกราฟได้
- กราฟประกอบด้วยเครือข่ายของจุดที่เชื่อมต่อถึงกัน โดยที่:
- โหนด แทนเอนทิตี
- เอดจ์ แทนความสัมพันธ์หรือเส้นทางระหว่างโหนด
- ในแผนที่หรือ GIS โหนดและเอดจ์จะหมายถึงทางแยกและถนนตามลำดับ แต่แนวคิดนี้ก็สามารถนำไปใช้กับระบบเชิงนามธรรมอย่างโซเชียลเน็ตเวิร์กได้เช่นกัน
ตัวอย่างการใช้งาน pgRouting นอกเหนือจาก GIS
-
การจัดตารางงาน
- ในโครงการ งานต่าง ๆ มีความสัมพันธ์แบบพึ่งพากัน ซึ่งก่อให้เกิด กราฟไม่มีวัฏจักรแบบมีทิศทาง (DAG)
- โหนดแทนงาน
- เอดจ์แทนความสัมพันธ์แบบพึ่งพา
- หนึ่งในความท้าทายหลักของการบริหารโครงการคือการหา 'critical path' ที่กำหนดระยะเวลารวมของทั้งโครงการ
- สามารถใช้ pgRouting เพื่อจำลองความสัมพันธ์แบบพึ่งพาของงาน และหา critical path ด้วยอัลกอริทึมกราฟได้
-
การทำ reverse proxy routing ตามการจัดสรรทรัพยากร
- ในระบบแบบกระจาย การจัดสรรทรัพยากรระหว่างโหนดต่าง ๆ ในเครือข่ายอย่างมีประสิทธิภาพเป็นสิ่งสำคัญ
- แต่ละโหนดอาจแทนตำแหน่งทางกายภาพหรือกระบวนการคอมพิวต์ ส่วนเอดจ์แทนเส้นทางการเคลื่อนย้ายข้อมูลระหว่างโหนด
- ตัวอย่างเช่น ในโครงสร้างพื้นฐานคลาวด์ สามารถใช้ pgRouting เพื่อกำหนดเส้นทางข้อมูลหรือภาระงานคอมพิวต์ระหว่างเซิร์ฟเวอร์แบบกระจายผ่านเส้นทางที่มีประสิทธิภาพที่สุด
-
เอนจินแนะนำแบบ YouTube
- ในเอนจินแนะนำหรืออัลกอริทึมค้นหาที่ใช้ knowledge graph สามารถใช้ pgRouting เพื่อสร้างความสัมพันธ์ระหว่างเอนทิตีและเหตุการณ์ได้
- ตัวอย่างเช่น ในอัลกอริทึมแนะนำของ YouTube:
- โหนด แทนเอนทิตีอย่างผู้ใช้ วิดีโอ หมวดหมู่ เป็นต้น
- เอดจ์ แทนความสัมพันธ์ เช่น ปฏิสัมพันธ์ระหว่างผู้ใช้กับวิดีโอ หรือการที่วิดีโออยู่ในหมวดหมู่เดียวกัน
- โครงสร้างกราฟลักษณะนี้ช่วยให้สามารถมอบคำแนะนำที่ปรับให้เหมาะกับผู้ใช้แต่ละรายได้
ข้อมูลเพิ่มเติมเกี่ยวกับ pgRouting
- pgRouting เป็นส่วนขยายอันทรงพลังของ Postgres ที่สามารถใช้แก้ปัญหาหลากหลายแบบที่อิงกับกราฟได้
- ดูรายละเอียดเพิ่มเติมได้ที่ เอกสารทางการของ pgRouting
2 ความคิดเห็น
มีใครเคยนำ
apache ageหรือpgRoutingไปใช้จริงบ้างไหมครับ?ที่บริษัทกำลังจะนำ Graph DB มาใช้ โดยเดิมก็ใช้ Postgres เป็น RDB อยู่แล้ว
แม้ plugin/extension จะทำให้ใช้ Postgres "ให้เหมือนเป็น Graph DB" ได้ แต่ได้ยินมาว่าประสิทธิภาพจริงยังออกมาไม่ดี เลยกำลังชั่งใจว่าจะใช้ Neo4j ดีไหม แต่ดูเหมือนว่าความเห็นใน Hacker News เองก็มีคนไม่ค่อยพอใจกับ Neo4j เหมือนกัน
ความคิดเห็นจาก Hacker News
เมื่อห้าปีก่อน เคยผิดหวังกับฐานข้อมูลและไลบรารี Graph จึงพยายามวาง DBMS ที่ไม่ใช่ Graph หลายตัวไว้หลังอินเทอร์เฟซ Python ที่คล้ายกับ NetworkX
Supabase ยังคงปล่อยคอนเทนต์ดี ๆ ที่เกี่ยวข้องกับ PostGIS อย่างต่อเนื่อง
สงสัยมาตลอดว่าทำไมถึงไม่มี "SQLite สำหรับกราฟ"
กำลังทำโปรเจ็กต์ Graph DB บน Postgres แบบเรียบง่ายอยู่
อยากฟังความเห็นเกี่ยวกับการเก็บ roaring bitmap ไว้ในคอลัมน์
byteaของ postgres เพื่อแทน adjacency matrixbyteaบนเซิร์ฟเวอร์ DB และใช้ SPI เพื่อลด network overheadสงสัยว่ามีใครมีความเห็นเกี่ยวกับ "Apache AGE" หรือไม่
สงสัยว่าเมื่อดูแค่ data model (เช่น ไม่รวม query language) แล้ว มีความแตกต่างจริงหรือไม่ระหว่างฐานข้อมูล "กราฟ" กับฐานข้อมูล "SQL ทั่วไป"
สงสัยว่ามีใครมีประสบการณ์ใช้ PgRouting เพื่อสร้าง isochrone หรือไม่
Postgres มักมีส่วนขยายที่เปิดโอกาสใหม่ ๆ ในการทำ data modeling อยู่เสมอ