ฐานข้อมูลแบบกราฟ (Graph Database) คืออะไร

Graph database จัดเป็น NoSQL แบบหนึ่ง ซึ่งนำมาใช้แก้ปัญหาฐานข้อมูลที่มีข้อมูลขนาดใหญ่และไม่มีรูปแบบชัดเจน

ฐานข้อมูลแบบกราฟถูกออกแบบมาเพื่อแสดงความสัมพันธ์ระหว่างข้อมูลที่มีความเชื่อมโยงกับข้อมูลที่เราสนใจได้อย่างชัดเจน รวมถึงมีความสามารถในการเก็บข้อมูลที่ไม่ต้องกำหนดรูปแบบล่วงหน้า

ข้อมูลที่อยู่ภายในฐานข้อมูลนั้นจะถูกจัดเก็บอยู่ในลักษณะของ Node และ Edge โดยข้อมูลจะถูกจัดเก็บอยู่ใน Node และมีการกำหนดความสัมพันธ์ของของแต่ละ Node ผ่าน Edge

ส่วนประกอบสำคัญ

ส่วนประกอบของฐานข้อมูลแบบกราฟมีอยู่ด้วยกัน 3 ส่วน ได้แก่

  1. จุดยอด (Node) เป็นตัวแทนของจุดข้อมูลหนึ่งจุดที่เราต้องการติดตามในเครือข่าย
  2. คุณสมบัติ (Properties) เป็นข้อมูลที่ถูกจัดเก็บอยู่ภายใน Node
  3. เส้นเชื่อม (Edge) เป็นเส้นที่เชื่อมต่อระหว่างจุดยอด ใช้กำหนดความหมาย และทิศทางของความสัมพันธ์ ระหว่าง 2 จุดยอด (Nodes)

ข้อดี

  1. ความเร็วในการค้นหาข้อมูลสูงมากในกรณีที่ต้องการหาความสัมพันธ์ระหว่าง Node (ถ้าหากเป็น RDBMS นั้นจำเป็นต้อง JOIN หลายตาราง หรือมี Lookup Table)
  2. เป็นการเก็บข้อมูลที่อธิบายความสัมพันธ์ของแต่ละ Node ได้ตรงไปตรงมา และ visualize ออกมาได้ง่าย
  3. มีความยืดหยุ่นสูง ไม่จำเป็นต้องมี schema ที่ตายตัว
  4. มีประสิทธิภาพสูง ฐานข้อมูลแบบกราฟได้รับการออกแบบให้เหมาะสมสำหรับการจัดการชุดข้อมูลขนาดใหญ่และซับซ้อน ทำให้เหมาะสำหรับแอปพลิเคชันที่ต้องการประสิทธิภาพและความสามารถในการปรับขนาดในระดับสูง

ข้อเสีย

  1. มีปัญหาเรื่องการทำ scaling
  2. ไม่เหมาะกับ High Write (มีการเขียนข้อมูล volume สูง ๆ)
  3. ภาษาที่ใช้ในการสอบถามข้อมูลขึ้นอยู่กับโปรแกรมจัดการฐานข้อมูล

เมื่อไหร่ที่ควรใช้ฐานข้อมูลแบบกราฟ (Graph Database)

  1. ต้องการความเร็วในการค้นหาข้อมูลที่มี relation ซับซ้อน (ต้องการ JOIN หลายตารางใน RDBMS) เช่นการทำ Realtime Recommendation System
  2. ข้อมูลมีความสัมพันธ์ระหว่างกันมาก ๆ เช่น ข้อมูลใน Wikipedia, Social Media Platform (อาจไม่เหมาะถ้าหากข้อมูลมีการ write เข้ามาใน volume ที่สูงมาก ๆ เช่น Facebook)
  3. ต้องการความง่ายในการ visualize relation ระหว่างข้อมูลที่มีอยู่

ตัวอย่างโปรแกรมจัดการฐานข้อมูลที่รองรับ Graph Database ได้แก่ Neo4J, ArangoDB, OrientDB, JanusGraph, NebulaGraph ฯลฯ

เอกสารอ้างอิง

https://www.depa.or.th/th/article-view/graph-analysis

https://bigdata.go.th/big-data-101/choosing-your-right-database/

https://www.geeksforgeeks.org/introduction-to-graph-database-on-nosql/

https://hackernoon.com/graph-databases-how-do-they-work

ผู้เขียน

ปวรุตม์ พงศ์พฤฒานนท์
ฝ่ายระบบสารสนเทศ
สำนักคอมพิวเตอร์
pavarudh@g.swu.ac.th