Передумови: Далі йде з книги " Графічні бази даних" , яка охоплює тест на ефективність, згаданий у книзі Neo4j в дії :
Взаємовідносини в графі природно утворюють контури. Запит або перегляд графіка включає наступні шляхи. Через принципово орієнтований на дорогу характер моделімоделі, більшість операцій з базою даних графіків на основі контурів сильно узгоджуються із способом викладення даних, що робить їх надзвичайно ефективними. У своїй книзі Neo4j у дії, партнер та Vukotic проводять експеримент, використовуючи реляційний магазин та Neo4j.
Порівняння показує, що база даних графіків суттєво швидша для підключених даних, ніж реляційний магазин. Експеримент Партнера та Вукотика прагне знайти друзів-друзів у соціальній мережі на максимальну глибину до п'яти. Враховуючи будь-яких двох осіб, обраних навмання, чи існує шлях, який з'єднує їх, який триває не більше п’яти стосунків? Для соціальної мережі, що містить 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 працює в дві третини часу реляційного, кінцевий користувач ледь помітить різницю в мілісекундах між ними. До того моменту, коли ми досягнемо три глибини (friend-of-friend-of-friend), однак, зрозуміло, що реляційна база даних вже не може обробляти запит у розумні часові рамки: тридцять секунд, необхідних для виконання, були б абсолютно неприйнятними. для онлайн-системи. На відміну від цього, час відповіді Neo4j залишається відносно рівним: лише частина секунди для виконання запиту - безумовно, досить швидка для онлайн-системи.
На чотирьох глибинах реляційна база даних демонструє затримку покалічення, що робить її практично непотрібною для онлайн-системи. Час роботи Neo4j також трохи погіршився, але затримка тут знаходиться на периферії, щоб бути прийнятною для чуйної онлайн-системи. Нарешті, на п’ятірковій глибині реляційній базі даних просто потрібно занадто багато часу, щоб виконати запит. Neo4j, навпаки, повертає результат приблизно за дві секунди. На п'ятій глибині він виявляє, що майже вся мережа є нашим другом: у багатьох випадках використання в реальному світі ми, швидше за все, підріжемо результати та терміни.
Питання:
- Це розумний тест, щоб наслідувати те, що можна окрім як знайти у соціальній мережі? (Це означає, що у справжніх соціальних мереж зазвичай є вузли з приблизно 50 друзями, наприклад; схоже, що модель " збагатитися збагачується " була б більш природною для соціальних мереж, хоча це може бути неправильно.)
- Незалежно від природності емуляції, чи є підстави вважати, що результати вимкнено чи невідтворювані?