Graph database จัดเป็น NoSQL แบบหนึ่ง ซึ่งนำมาใช้แก้ปัญหาฐานข้อมูลที่มีข้อมูลขนาดใหญ่และไม่มีรูปแบบชัดเจน
ฐานข้อมูลแบบกราฟถูกออกแบบมาเพื่อแสดงความสัมพันธ์ระหว่างข้อมูลที่มีความเชื่อมโยงกับข้อมูลที่เราสนใจได้อย่างชัดเจน รวมถึงมีความสามารถในการเก็บข้อมูลที่ไม่ต้องกำหนดรูปแบบล่วงหน้า
ข้อมูลที่อยู่ภายในฐานข้อมูลนั้นจะถูกจัดเก็บอยู่ในลักษณะของ Node และ Edge โดยข้อมูลจะถูกจัดเก็บอยู่ใน Node และมีการกำหนดความสัมพันธ์ของของแต่ละ Node ผ่าน Edge
ส่วนประกอบสำคัญ
ส่วนประกอบของฐานข้อมูลแบบกราฟมีอยู่ด้วยกัน 3 ส่วน ได้แก่
- จุดยอด (Node) เป็นตัวแทนของจุดข้อมูลหนึ่งจุดที่เราต้องการติดตามในเครือข่าย
- คุณสมบัติ (Properties) เป็นข้อมูลที่ถูกจัดเก็บอยู่ภายใน Node
- เส้นเชื่อม (Edge) เป็นเส้นที่เชื่อมต่อระหว่างจุดยอด ใช้กำหนดความหมาย และทิศทางของความสัมพันธ์ ระหว่าง 2 จุดยอด (Nodes)
ข้อดี
- ความเร็วในการค้นหาข้อมูลสูงมากในกรณีที่ต้องการหาความสัมพันธ์ระหว่าง Node (ถ้าหากเป็น RDBMS นั้นจำเป็นต้อง JOIN หลายตาราง หรือมี Lookup Table)
- เป็นการเก็บข้อมูลที่อธิบายความสัมพันธ์ของแต่ละ Node ได้ตรงไปตรงมา และ visualize ออกมาได้ง่าย
- มีความยืดหยุ่นสูง ไม่จำเป็นต้องมี schema ที่ตายตัว
- มีประสิทธิภาพสูง ฐานข้อมูลแบบกราฟได้รับการออกแบบให้เหมาะสมสำหรับการจัดการชุดข้อมูลขนาดใหญ่และซับซ้อน ทำให้เหมาะสำหรับแอปพลิเคชันที่ต้องการประสิทธิภาพและความสามารถในการปรับขนาดในระดับสูง
ข้อเสีย
- มีปัญหาเรื่องการทำ scaling
- ไม่เหมาะกับ High Write (มีการเขียนข้อมูล volume สูง ๆ)
- ภาษาที่ใช้ในการสอบถามข้อมูลขึ้นอยู่กับโปรแกรมจัดการฐานข้อมูล
เมื่อไหร่ที่ควรใช้ฐานข้อมูลแบบกราฟ (Graph Database)
- ต้องการความเร็วในการค้นหาข้อมูลที่มี relation ซับซ้อน (ต้องการ JOIN หลายตารางใน RDBMS) เช่นการทำ Realtime Recommendation System
- ข้อมูลมีความสัมพันธ์ระหว่างกันมาก ๆ เช่น ข้อมูลใน Wikipedia, Social Media Platform (อาจไม่เหมาะถ้าหากข้อมูลมีการ write เข้ามาใน volume ที่สูงมาก ๆ เช่น Facebook)
- ต้องการความง่ายในการ 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/