Bối cảnh: Dưới đây là từ cuốn sách Cơ sở dữ liệu đồ thị , bao gồm một bài kiểm tra hiệu suất được đề cập trong cuốn sách Neo4j in Action :
Mối quan hệ trong một biểu đồ tự nhiên hình thành đường dẫn. Truy vấn, hoặc duyệt qua, biểu đồ bao gồm các đường dẫn sau. Do tính chất định hướng đường dẫn cơ bản của datamodel, phần lớn các hoạt động cơ sở dữ liệu đồ thị dựa trên đường dẫn được liên kết chặt chẽ với cách thức trình bày dữ liệu, làm cho chúng cực kỳ hiệu quả. Trong cuốn sách Neo4j in Action, Partner và Vukotic của họ thực hiện một thử nghiệm sử dụng cửa hàng quan hệ và Neo4j.
So sánh cho thấy rằng cơ sở dữ liệu đồ thị nhanh hơn đáng kể cho dữ liệu được kết nối so với cửa hàng quan hệ. Thử nghiệm của Vartotic và Vukotic tìm cách tìm bạn bè trong mạng xã hội, đến độ sâu tối đa là năm. Cho bất kỳ hai người được chọn ngẫu nhiên, có một con đường kết nối họ dài nhất là năm mối quan hệ? Đối với một mạng xã hội chứa 1.000.000 người, mỗi người có khoảng 50 người bạn, kết quả cho thấy mạnh mẽ rằng cơ sở dữ liệu đồ thị là lựa chọn tốt nhất cho dữ liệu được kết nối, như chúng ta thấy trong Bảng 2-1.
Bảng 2-1. Tìm bạn bè mở rộng trong cơ sở dữ liệu quan hệ so với tìm kiếm hiệu quả trong 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
Ở độ sâu hai (bạn bè của bạn bè) cả cơ sở dữ liệu quan hệ và cơ sở dữ liệu đồ thị hoạt động đủ tốt để chúng tôi xem xét sử dụng chúng trong một hệ thống trực tuyến. Trong khi truy vấn Neo4j chạy trong hai phần ba thời gian của mối quan hệ, một người dùng cuối sẽ hầu như không nhận thấy sự khác biệt về mili giây giữa hai lần. Tuy nhiên, vào thời điểm chúng tôi đạt đến độ sâu ba (bạn của bạn bè), tuy nhiên, rõ ràng cơ sở dữ liệu quan hệ không còn có thể xử lý truy vấn trong một khung thời gian hợp lý: ba mươi giây để hoàn thành sẽ hoàn toàn không thể chấp nhận được cho một hệ thống trực tuyến. Ngược lại, thời gian phản hồi của Neo4j vẫn tương đối bằng phẳng: chỉ một phần giây để thực hiện truy vấn, đủ chắc chắn cho một hệ thống trực tuyến.
Ở độ sâu bốn, cơ sở dữ liệu quan hệ thể hiện độ trễ làm tê liệt, làm cho nó thực sự vô dụng đối với một hệ thống trực tuyến. Thời gian của Neo4j cũng đã xuống cấp một chút, nhưng độ trễ ở đây là ngoại vi có thể chấp nhận được đối với một hệ thống trực tuyến đáp ứng. Cuối cùng, ở độ sâu năm, cơ sở dữ liệu quan hệ chỉ mất quá nhiều thời gian để hoàn thành truy vấn. Ngược lại, Neo4j trả về kết quả sau khoảng hai giây. Ở độ sâu năm, nó truyền tải gần như toàn bộ mạng là bạn của chúng tôi: đối với nhiều trường hợp sử dụng trong thế giới thực, chúng tôi có thể sẽ cắt bớt kết quả và thời gian.
Câu hỏi là:
- Đây có phải là một thử nghiệm hợp lý để mô phỏng những gì người ta có thể ngoại trừ tìm thấy trong một mạng xã hội? (Có nghĩa là các mạng xã hội thực thường có các nút với khoảng 50 người bạn chẳng hạn; có vẻ như mô hình " giàu trở nên giàu hơn " sẽ tự nhiên hơn đối với các mạng xã hội, mặc dù có thể sai.)
- Bất kể sự tự nhiên của thi đua, có lý do nào để tin rằng kết quả bị tắt, hoặc không thể thực hiện được?