/* scrip for google analytic */

Ads 468x60px

แสดงบทความที่มีป้ายกำกับ NoSQL แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ NoSQL แสดงบทความทั้งหมด

วันพุธที่ 20 เมษายน พ.ศ. 2559

[Neo4j] มาดูความแตกต่างระหว่าง RDBMS กับ Graph Database ว่าต่างกันอย่างไร



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

ในตอนแรกได้ทำการรวบรวมข้อมูล
แต่ด้วยความหลากหลายของคำตอบมากเกิน
ทำให้ไม่สามารถจะสรุปได้อย่างชัดเจน

ดังนั้น ผมจึงมานั่งคิดว่า เราอยากรู้อะไรกันแน่
จึงได้สรุปออกมา 2 ข้อใหญ่ๆดังนี้

1. เรื่องทั่วไป เช่น ใครพัฒนา พัฒนามาตั้งแต่เมื่อไร ภาษาที่ใช้ เป็นต้น

2. ประสิทธิภาพ เมื่อ RDBMS กับ Graph Database เปรียบเทียบกัน เช่น
  •      ความเร็วในการประมวลผลกลุ่มข้อมูล
  •      พื้นในการจัดเก็บ
และผลลัพท์ในการทดสอบต่างๆ เช่น ความยืดหยุ่นในการใช้งาน ความปลอดภัย 

โดยที่ผู้เขียนจะอ้างอิงจากผลงานวิจัยชื่อ

A Comparison of Graph Database and Relational Database 
http://www.cs.olemiss.edu/~ychen/publications/conference/vicknair_acmse10.pdf


ผู้เขียนชื่อ Chad vicnair และคณะอีก 5 คน โดยนำ Mysql และ Neo4j มาเปรียบเทียบกัน
แต่ งานวิจัยตัวนี้ค่อนข้างเก่า เพราะ ถูกเขียนขึ้นในปี 2009 นับจากวันที่เขียนบทความ บทนี้ก็ย้อนไปก็
ประมาณ 7 ปี ถือว่านานพอสมควรเปลี่ยน server ไป 2 รอบ ดังนั้น จะเอาไว้เป็นแนวทาง
และอ้างอิงในปัจจุบันไปด้วย


วันจันทร์ที่ 18 เมษายน พ.ศ. 2559

[Neo4j] สรุปการประยุกษ์ใช้ Cypher ร่วมกับ Graph Data Modeling เพื่อความเข้าใจที่มากขึ้น



จากที่ได้ลองศึกษา และทำความเข้าใจกับ เทคโนโลยีนี้มาหลายบทความพอสมควร
ผู้เขียนก็ได้อ่านและรวบรวมข้อมูลแปลแล้วสรุป ผิดบ้างถูกบ้างก็ถูๆไถกันไป 
จากนั้นก็นำมาเล่าให้อ่านกันเพื่อเป็นประโยชน์แก่ผู้ที่สนใจเรื่อยๆ

สามารถเข้าไปอ่านเต็มๆได้ที่ http://neo4j.com/developer/guide-data-modeling/

ในบทความนี้ลองมาทบทวน ให้เข้าใจมากขึ้นกับการประยุกษ์ใช้ Cypher 
ให้มากขึ้นอีกสักนิดนึงกับทฤษฎีเล็กๆน้อยๆกันสักหน่อย

หลังจากที่ได้ทำความรู้จัก กับ Cypher พื้นฐานกันไปแล้ว พอจะเห็นได้จากการปฎิบัติกับคำสั่งเบื้องต้นกันไปแล้วนะครับ



ลองมาพิจารณา กับประโยคด้านล่าง

Two peopleJohn and Sally, are friends. Both John and Sally have read the book,Graph Databases.

เราสามารถจับเอาประโยคดังกล่าว มาแปลงเป็นส่วนประกอบต่างๆใน Graph Database อย่างไรได้บ้างกันครับ

มาทบทวนกันหน่อย

Node 

หน่วยที่เป็นพื้นฐานที่สุดของ Graph จริงๆแล้ว คือ Node และ Relationship
ใน Neo4j ทั้งสองอย่างที่ได้กล่าวไป สามารถมี Properties เป็นของตัวเอง
Node บ่อยครั้งมักจะแทน Entity แต่ขึ้นอยู่กับ Ralationship 
ส่วนที่แยกออกมาจาก Properties คือ Label

Node สามารถ มี Label หลาย Label หรือไม่มีก็ได้ ดังภาพด้านล่าง

วันอาทิตย์ที่ 17 เมษายน พ.ศ. 2559

[Neo4j] สรุปการใช้ Cypher Query Languege ที่ใช้ใน Graph Database และคำสั่ง CREATE, MATCH และ RETURN



เมื่อเราติดตั้ง Neo4j Server ขึ้นมาแล้วเราจะต้องมารู้จักกับ ภาษาที่ใช้ Query ใน Graph Database

http://skl-songkiat.blogspot.com/2016/04/neo4j-neo4j-windows-graph-database.html

Cypher Query Language เป็นภาษาหนึ่งที่ คล้ายกับ SQL ที่มาใช้สำหรับ Query ข้อมูลที่อยู่ในฐานข้อมูลแบบ Graph ซึ่งข้อดีของ ภาษา Cypher มีดังนี้

- เป็นภาษาที่สามารถอธิบายคำสั่งได้ด้วยตัวมันเอง
- เป็นภาษาเขียนโปรแกรมที่ถูกออกแบบให้มีความใกล้เคียงภาษามนุษย์มากขึ้น
- มีโครงสร้างในรูปแบบของภาษาอังกฤษ ใกล้เคียงภาษาในเชิงสัญลักษณ์
- มีความง่ายของคำสั่งเหมาะกับความซับซ้อนในฐานข้อมูลแบบ Graph
- คล้ายกับภาษา JAVA ภาษา Script เช่น JRuby , Gremlin
- มีคำสั่ง ที่คล้ายกับ SQL เช่น WHERE ,ORDER ประกอบกับภาษาสัญลักษณ์ ง่ายต่อความเข้าใจ

จากข้อดีในหลายๆข้อนี้ เรามาดูคำสั่งต่างๆ ที่ใช้กับ ภาษา Cypher นี้กันดีกว่า คำสั่งที่สำคัญมีดังนี้

1. CREATE : เพิ่ม Node ,Relationship และ Properties
2. MATCH  : ดึงข้อมูลจาก Node, Relationship และ Properties
3. RETURN: ส่งค่าผลลัพท์กลับจากการ Query
4. WHERE  : ตั้งเงื่อนไข ในการดังข้อมูล
5. DELETE : ลบ Node และ Relationship
6. REMOVE : ลบ Properties ของ Node และ Relationship
7. ORDER By : เรียงข้อมูลที่ดึงมา
8. SET : เพิ่มหรืออัพเดท Label

ในบทความนี้ ผมขอยกคำสั่งเบื้องต้นมาให้ดูและ นำมาแสดงเป็นตัวอย่างให้ดู ได้แก่ CREATE, MATCH และ RETURN กันก่อน เพราะเป็นคำสั่งเบื้องต้น

วันเสาร์ที่ 16 เมษายน พ.ศ. 2559

[Neo4j] ติดตั้ง neo4j บนระบบ windows - graph database ง่ายนิดเดียว



บทความนี้ มาเล่าวิธีการติดตั้ง neo4j ให้อ่านกัน ไม่ยากอย่างที่คิด
ก่อนอื่นก็เข้าไปที่ website ของ neo4j เพื่อ Download โปรแกรมมาติดตั้งที่เครื่อง server ของเรา

http://neo4j.com/download/ คลิ้กลิ้ง



คลิ้กลิ้งที่ วงกลมสีแดง จะ Download อัตโนมัติ

Set up ที่ Icon ดังภาพด้านล่าง




จากนั้น Install กด Next ไปเรื่อยๆ ขึ้นอยู่กับ Path ที่ต้องการติดตั้ง



วันอังคารที่ 12 เมษายน พ.ศ. 2559

[Neo4j] มาทำความรู้จักคุณสมบัติ Graph Database กัน

เพิ่มเติมจากบทความที่แล้ว ทำความเข้าใจ graph database คร่าวๆ
ถ้าเข้าใจ document object model หรือ E-R Diagram ก็ไม่ใช่เรื่องยาก เพราะคุณสมบัติของ Graph Database ก็คล้ายๆกัน

ด้วยการมองคุณสมบัติของ ค่าต่างๆ เช่น Table , Atribute , หรือ 
Field มาเป็นดังตารางด้านล่างดังนี้โดยเปรียบเทียบกับ RDBMS


Node แต่ละ Node สามารถที่จะใส่ชื่อ(Labels)ให้กับมันได้เพื่อความแตกต่างของ Node ในโดเมน ส่วนเรื่องการเก็บข้อมูลจะใช้ เทคนิคการเก็บข้อมูลแบบ Map เก็บค่า Key-Value ใน Node 

[Neo4j] Graph Database คืออะไร



จากบทความที่แล้ว ที่พูดถึง 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

 
 
Blogger Templates