จากบทความที่แล้ว ที่พูดถึง Trend ของ NoSQL ในปี 2016 มาสะดุดกระตุ้นต่อมความสงสัยให้อยากศึกษาต่อ
กับคำว่า Graph Database เห็นบอกว่าจะใช้กันมากขึ้นก็เลยต้องศึกษากันไว้ก่อน
เท่าที่หาบทความที่เป็นภาษาไทย ค่อนข้างยังไม่มีใครเขียนแต่มีพูดถึงกันบ้าง คนในวงการจริงๆส่วนมากจะใช้ tools ตัวอื่นกันอยู่และ ส่วนมากจะอธิบายถึง NoSQL แต่ไม่ได้ลงลึกสักเท่าไร เกี่ยวกับ Graph Database แต่ ในบทความนี้ จะพูดถึงคร่าวๆว่า มันคืออะไร นำไปใช้กับอะไร ข้อดีของมันเป็นแบบไหนนะครับ
Graph Database เป็นฐานข้อมูลชนิดหนึ่งที่มีลักษณะการเชื่อมต่อกันแบบ Graph ยกตัวอย่างที่เห็นได้ชัดก็
ภาพทางด้านบน เป็นตัวอย่างหนึ่งในทฤษฏีกราฟ (Graph Theory) ที่เอาไว้เก็บข้อมูลที่มีปริมาณมากๆ
Graph Database ถูกนำมาใช้กันมากขึ้น ในด้าน Social Network ยกตัวอย่างง่ายๆ ในชีวิตประจำวันอย่างน้อย ๆ ก็มีเข้ากันบ้างล่ะ ก็คือ facebook การเชื่อมต่อข้อมูลของ facebook มีลักษณะ เป็นกลุ่มโหนด เชื่อมต่อกันเป็นจำนวนมาก อย่างเช่นภาพด้านล่าง โดยที่ โปรไฟล์ B จะเชื่อมต่อ เพื่อ Comment , Like , ส่งข้อความ ไปหาเพื่อนๆที่เชื่อมต่อกันอยู่
http://www.tutorialspoint.com/neo4j/images/facebook1.jpg
มีคำถาม ถามกันว่าทำไม ไม่ใช้ RDBMS กับ Social Network เพราะอะไร ก็มีบทความให้เห็นผลกันว่า
ฐาน ข้อมูลแบบ RDBMS เนี่ย เป็นฐานข้อมูลแบบมีโครงสร้างและต้องมีความสัมพันธ์ เวลานำมาใช้กับข้อมูลที่มีปริมาณมากๆ มันจะค้นหาข้อมูลได้ช้า
http://basicgraphtheory.blogspot.com/
เมื่อเทียบกับ
Graph Database แล้ว Graph Database มีประสิทธิภาพมากกว่า
ซึ่งเป็นฐานข้อมูลแบบไร้โครงสร้าง
กึ่งโครงสร้างและแบบมีโครงสร้างไม่จำเป็นต้องมีความสัมพันธ์
http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/relational_to_graph.png
อ่านบทความเต็มๆ กับการเปรียบเทียบระหว่าง Reletional กับ Graph database ได้ถ้าว่างๆจะแปล อธิบายให้ละเอียดขึ้น
Graph Database ก็มีมากมายหลายแอพพลิเคชั่นให้เลือกใช้ ก็ต้องลอง Research กันดูว่าเหมาะกับงานประเภทไหน มีหลายตัว เช่น Neo4j , orientDB , HypherGraphDB , GraphBase , INfiniteGraph และ AllegreGraph
ในบทความต่อๆไป จะนำ Neo4j มา Implement แล้วมาแชร์ให้ได้อ่านกัน ด้วยความที่มันเป็น opensource และมันใช้ java ในการพัฒนา ร่วมไปถึง การใช้ spring framework
พอจะเข้าใจคร่าวๆกันบ้างมั้ยครับ
ต่อๆไป อาจจะมี ระบบ Social Network ใช้เองในไทยก็ได้
แต่จะมีคนใช้มั้ยน่ะ ! ^ ^
Ref:
http://www.tutorialspoint.com/neo4j/index.htm
http://neo4j.com/developer/graph-db-vs-rdbms/