ระบบฐานข้อมูลเชิงกราฟบนโปรแกรม Neo4j เบื้องต้น ระบบฐานข้อมูลเชิงกราฟเหมาะสำหรับนำมาใช้จัดการข้อมูลที่อยู่ในรูปแบบไม่มีโครงสร้าง หรือ NoSql โดยโปรแกรมจัดการฐานข้อมูล Neo4j นั้นเป็นที่นิยมและมีการนำมาประยุกต์ใช้จริงในระบบฐานข้อมูลของบริษัทต่างๆ เช่น Ebay, Walmart, IBM, HP, CISCO เป็นต้น โดยระบบจัดการฐานข้อมูลเชิงกราฟ Neo4j นั้นมีหลายรูปแบบให้เลือกใช้ ทั้งแบบที่เก็บค่าบริการสำหรับการนำไปใช้งานในเชิงพาณิชย์ และแบบที่ไม่เก็บค่าบริการเพื่อนำไปใช้งานในเชิงการศึกษาและวิจัย สำหรับโปรแกรม Neo4j สามารถดาวน์โหลดได้ที่ Neo4j Dowload Center ซึ่งมีให้ทั้งระบบปฎิบัติ Windows และ Mac OS X ผู้ใช้สามารถเลือกดาวน์โหลดทั้งแบบ Neo4j Desktop หรือ Neo4j sever
ในที่นี้เลือกดาวน์โหลด Neo4j Community Sever ไม่จำกัดระยะเวลาในการใช้งาน ขณะที่ Desktop version จะให้ใช้ฟรี 30 วัน ขณะเดียวกัน Neo4j ต้องการใช้ Java ให้ตรวจสอบแครื่องว่ามีไฟล์ JDK หรือไม่ ถ้าไม่มีก็ให้ทำการติดตั้งก่อน เมื่อดาวน์โหลดโปรแกรมเสร็จเรียบร้อยให้ทำการแตกไฟล์ไว้ใน โฟล์เดอร์ที่เราต้องการ ในที่นี้ จะนำไปไว้ที่ Desktop ในโฟล์เดอร์ชื่อ neo4j-community-3.3.2 หลังจากนั้นให้ทำการเปิด command prompt แบบ Admin ให้ไปที่ตำแหน่งไฟล์ของ neo4j ที่แตกไว้ให้ทำการไปยัง โฟล์เดอร์ Bin
C:\Users\Wanvimol\Desktop\neo4j-community-3.3.2\bin
ให้ทำการเรียกไฟล์ neo4j.bat ทำการติดตั้ง service ดังนี้
C:\Users\Wanvimol\Desktop\neo4j-community-3.3.2\bin\ neo4j.bat install-service
หลังจากนนั้นให้ทำการรัน service ดังรูป
C:\Users\Wanvimol\Desktop\neo4j-community-3.3.2\bin\ neo4j.bat install-service
เมื่อทำการติดตั้งเรียบร้อยแล้วจะเห็นคำว่า Neo4j is ready อยู่แสดงว่าใช้งานได้แล้ว การเรียกใช้งานโปรแกรมสามารถเรียกผ่านบราวเซอร์จาก Port 7474 โดยพิมพ์ http://localhost:7474/browser/ ให้ทำการ login ด้วย username: neo4j password: neo4j ในครั้งแรก หลังจากนั้นทำการเปลี่ยนรหัสผ่าน
Cypher Language
โดยปกติในระบบฐานข้อมูลเชิงสัมพันธ์เราจะใช้ภาษา SQL ในการเรียกดูข้อมูล (Select) แต่ถ้าในระบบฐานข้อมูลเชิงกราฟจะใช้ภาษา Cypher สำหรับในการคิวรีเรียกดูข้อมูล โดยจะมีการกำหนด Node แทน Object ที่ใช้เก็บข้อมูลใน Database ในการอ้างอิง Node จะเขียนชื่อ node ในวงเล็บ ( ) เช่น (:Movie), (:Person), (:Actor) และภายใน Node จะมีการกำหนดชื่อ (Label) และ คุณสมบัติ (Properties) ให้แต่ละ Node เช่น (a:Actor{name: ‘Tom’), (p:Person{name: ‘Jen’}), (movie:Movie {title: ‘Game of Thorne’}) และเมื่อรันผลลัพธ์จะแสดงเป็นรูปวงกลมๆ
() //node ไม่ระบุชื่อ สามารถอ้างถึง node ใด ๆ ในฐานข้อมูลได้
(p:Person) //ใช้ตัวแปรชื่อ p และติด label Person
(p:Person {name:Jen}) //ใช้ตัวแปรชื่อ p และติด label Person และกำหนดคุณสมบัติชื่อ Jen
(:Technology) //ไม่ใช้ตัวแปร แต่ติด label Technology
(work:Company) //ใช้ตัวแปรชื่อ work และติด label Company
ความสัมพันธ์ (Relationship) จะทำให้เราสามารถระบุประเภทเพื่อค้นหาหรือสร้างได้ และแต่ละ Node สามารถมีความสัมพันธ์ (Relationship) ระหว่างกันได้หลายความสัมพันธ์ โดยความสัมพันธ์จะใช้สัญลักษณ์ [ ] เชื่อมกับ Node ทิศทางความสัมพันธ์จะใช้สัญลักษณ์ ขีดหนึ่งขีด “-” หรือ “--” หรือ เส้นลูกศร “->” ในการระบุทิศทางความสัมพันธ์ระหว่าง Node ได้ เช่น (actor:Actor)-[:Acted-In]->(movie:Movie) หรือจะไม่กำหนดทิศทางก็ได้ (p1:Person)-[:Has_contact]-(p2:Person)
จากภาพเป็นการแสดงข้อมูลของนักแสดงชื่อ Emily Clark ที่แสดงหนังเรื่อง A Game of Thorne ในปี 2011 จากรูปภาพข้างต้นสามารถเขียนคำสั่งคิวรีได้ดังนี้
MACTH (actor: Actor{name:’Emily Clark’}) - [:Acted-In] -> (movie:Movie{title: ‘ A Game of Throne’}
WHERE movie.produced = 2011
RETURN actor, movie
- คำสั่งหลักใน Cypher ที่ควรรู้
- MATCH () เป็นคำสั่งที่ใช้ในการค้นหา Node หรือ relationship ที่มีอยู่แล้วใน database ถ้าให้เปรียบเทียบกับ SQL ก็จะคล้ายกับ SELECT
- RETURN เป็นคำสั่งที่ใช้ส่งค่ากลับผ่านตัวแปรที่เราอ้างอิงไว้จากคำสั่ง MATCH ดังตัวอย่าง
ตัวอย่าง
ต้องการค้นหานักแสดงที่ Tom Hanks ติดต่อและเกิดในปีค.ศ. 1960 และหลังปี ค.ศ. 1960 และ มีรายได้เกิน $10M จากหนังเรื่องเดียว สามารถเขียนคำสั่งได้ดังนี้
MATCH (tom:Person{name:'Tom Hanks'})
MATCH (tom)-[:HAS_CONTACT]->(actor:Person)
MATCH (actor)-[role:ACTED_IN]-> (movie:Movie)
WHERE actor.born >= 1960 And role.earnings > 10000000
RETURN actor.name AS Contactname, role.earnings as Earnt, actor.born AS Born
ORDER BY role.earnings DESC
ส่วนคำสั่ง Create Update Delete สามารถดูได้จากเอกสารเพิ่มเติมคลิ๊กที่นี้
ไฟล์คำสั่ง create data และ คำสั่ง delete ลากไปใส่ในส่วน import
เรียบเรียงโดย
อ.ดร.วรรณวิมล นาดี