ความเป็นมา:ต่อไปนี้มาจากฐานข้อมูลกราฟหนังสือซึ่งครอบคลุมการทดสอบประสิทธิภาพที่กล่าวถึงในหนังสือNeo4j ในการดำเนินการ :
ความสัมพันธ์ในกราฟเป็นเส้นทางแบบธรรมชาติ การสืบค้นหรือการข้ามกราฟเกี่ยวข้องกับเส้นทางดังต่อไปนี้ เนื่องจากลักษณะพื้นฐานของเส้นทางที่มุ่งเน้นของ datamodel ส่วนใหญ่ของการดำเนินการฐานข้อมูลกราฟที่อิงเส้นทางนั้นมีความสอดคล้องอย่างมากกับวิธีการจัดวางข้อมูลทำให้มีประสิทธิภาพมาก ในหนังสือ Neo4j in Action ของพวกเขา Partner และ Vukotic ทำการทดลองโดยใช้ relational store และ Neo4j
การเปรียบเทียบแสดงให้เห็นว่าฐานข้อมูลกราฟนั้นเร็วกว่ามากสำหรับข้อมูลที่เชื่อมต่อมากกว่าที่เก็บข้อมูลเชิงสัมพันธ์ส่วนการทดลองและ Vukotic นั้นพยายามค้นหาเพื่อนของเพื่อนในเครือข่ายโซเชียล เมื่อพิจารณาจากคนสองคนที่ได้รับการสุ่มเลือกมีเส้นทางที่เชื่อมโยงพวกเขาซึ่งมีความสัมพันธ์ยาวนานที่สุดถึงห้าครั้ง สำหรับเครือข่ายโซเชียลที่มี 1,000,000 คนโดยแต่ละคนมีเพื่อนประมาณ 50 คนผลลัพธ์แนะนำอย่างยิ่งว่าฐานข้อมูลกราฟเป็นตัวเลือกที่ดีที่สุดสำหรับข้อมูลที่เชื่อมต่อดังที่เราเห็นในตารางที่ 2-1
ตารางที่ 2-1 การค้นหาเพื่อนที่ขยายในฐานข้อมูลเชิงสัมพันธ์กับการค้นหาที่มีประสิทธิภาพใน Neo4j
Depth RDBMS Execution time (s) Neo4j Execution time (s) Records returned 2 0.016 0.01 ~2500 3 30.267 0.168 ~110,000 4 1543.505 1.359 ~600,000 5 Unfinished 2.132 ~800,000
ที่ความลึกสอง (เพื่อนของเพื่อน) ทั้งฐานข้อมูลเชิงสัมพันธ์และฐานข้อมูลกราฟทำงานได้ดีพอที่เราจะพิจารณาใช้ในระบบออนไลน์ ในขณะที่แบบสอบถาม Neo4j ทำงานในสองในสามของเวลาที่สัมพันธ์กันผู้ใช้ปลายทางจะสังเกตเห็นความแตกต่างในหน่วยมิลลิวินาทีระหว่างสองคนนั้นแทบจะไม่ ตามเวลาที่เราไปถึงความลึกที่สาม (เพื่อนของเพื่อนของเพื่อน) อย่างไรก็ตามเป็นที่ชัดเจนว่าฐานข้อมูลเชิงสัมพันธ์ไม่สามารถจัดการกับแบบสอบถามในกรอบเวลาที่เหมาะสมอีกต่อไป: สามสิบวินาทีที่ใช้ในการทำให้สมบูรณ์จะไม่สามารถยอมรับได้อย่างสมบูรณ์ สำหรับระบบออนไลน์ ในทางตรงกันข้ามเวลาตอบสนองของ Neo4j นั้นค่อนข้างคงที่: เพียงเสี้ยววินาทีในการดำเนินการค้นหา - เร็วพอสำหรับระบบออนไลน์
ที่ระดับความลึกที่สี่ฐานข้อมูลเชิงสัมพันธ์แสดงความล่าช้าแฝงตัวทำให้ไร้ประโยชน์จริงสำหรับระบบออนไลน์ การกำหนดเวลาของ Neo4j ลดลงเล็กน้อยเช่นกัน แต่ความหน่วงแฝงที่นี่อยู่ที่ขอบเขตของการยอมรับระบบออนไลน์ที่ตอบสนองได้ ในที่สุดความลึกห้าฐานข้อมูลเชิงสัมพันธ์นั้นใช้เวลานานเกินไปในการทำให้แบบสอบถามเสร็จสมบูรณ์ ในทางตรงกันข้าม Neo4j จะส่งคืนผลลัพธ์ภายในสองวินาที ที่ระดับความลึกที่ห้ามันเกิดขึ้นเกือบทั้งเครือข่ายคือเพื่อนของเรา: สำหรับกรณีการใช้งานจริงจำนวนมากเราน่าจะตัดแต่งผลลัพธ์และกำหนดเวลา
คำถามคือ:
- นี่เป็นการทดสอบที่สมเหตุสมผลเพื่อเลียนแบบสิ่งที่อาจยกเว้นในเครือข่ายสังคมหรือไม่? (ความหมายทำจริงเครือข่ายสังคมออนไลน์มีโหนดกับเพื่อนประมาณ 50 ตัวอย่างดูเหมือนว่ารูปแบบ " รวยรวยยิ่งขึ้น " จะเป็นธรรมชาติมากขึ้นสำหรับเครือข่ายสังคมแม้ว่าอาจจะผิด)
- โดยไม่คำนึงถึงความเป็นธรรมชาติของอีมูเลชั่นมีเหตุผลใดที่เชื่อว่าผลลัพธ์ถูกปิดหรือไม่สามารถพิสูจน์ได้?