Latar belakang: Berikut ini dari buku Graph Databases , yang mencakup tes kinerja yang disebutkan dalam buku Neo4j in Action :
Hubungan dalam grafik secara alami membentuk jalur. Meminta, atau melintasi, grafik melibatkan jalur berikut. Karena sifat dasar-jalur yang berorientasi pada datamodel, sebagian besar operasi basis data grafik jalur sangat selaras dengan cara di mana data diletakkan, membuatnya sangat efisien. Dalam buku mereka Neo4j in Action, Partner dan Vukotic melakukan percobaan menggunakan toko relasional dan Neo4j.
Perbandingan menunjukkan bahwa basis data grafik secara substansial lebih cepat untuk data yang terhubung daripada toko relasional. Eksperimen Partner dan Vukotic berupaya menemukan teman-teman di jejaring sosial, hingga kedalaman maksimum lima. Mengingat ada dua orang yang dipilih secara acak, adakah jalan yang menghubungkan mereka yang paling lama lima hubungan? Untuk jaringan sosial yang berisi 1.000.000 orang, masing-masing dengan sekitar 50 teman, hasilnya sangat menyarankan bahwa basis data grafik adalah pilihan terbaik untuk data yang terhubung, seperti yang kita lihat pada Tabel 2-1.
Tabel 2-1. Menemukan teman yang diperluas dalam basis data relasional versus temuan yang efisien di 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
Pada kedalaman dua (teman-teman-teman) baik basis data relasional dan basis data grafik berkinerja cukup baik untuk kita pertimbangkan untuk menggunakannya dalam sistem online. Sementara permintaan Neo4j berjalan dalam dua pertiga waktu yang relasional, pengguna akhir hampir tidak akan melihat perbedaan dalam milidetik antara keduanya. Namun, saat kami mencapai kedalaman tiga (teman-teman-teman), jelas bahwa basis data relasional tidak lagi dapat menangani kueri dalam jangka waktu yang masuk akal: tiga puluh detik yang diperlukan untuk menyelesaikannya benar-benar tidak dapat diterima untuk sistem online. Sebaliknya, waktu respons Neo4j tetap relatif datar: hanya sepersekian detik untuk melakukan kueri — pasti cukup cepat untuk sistem online.
Pada kedalaman empat database relasional menunjukkan latensi yang melumpuhkan, membuatnya praktis tidak berguna untuk sistem online. Pengaturan waktu Neo4j telah sedikit memburuk, tetapi latensi di sini berada di batas yang dapat diterima untuk sistem online yang responsif. Akhirnya, pada kedalaman lima, basis data relasional hanya membutuhkan waktu terlalu lama untuk menyelesaikan kueri. Neo4j, sebaliknya, mengembalikan hasil dalam waktu sekitar dua detik. Pada kedalaman lima, itu terjadi hampir seluruh jaringan adalah teman kami: untuk banyak kasus penggunaan dunia nyata, kami mungkin akan memangkas hasilnya, dan waktunya.
Pertanyaan adalah:
- Apakah ini tes yang masuk akal untuk meniru apa yang mungkin orang temukan kecuali di jejaring sosial? (Artinya jaringan sosial yang sebenarnya biasanya memiliki node dengan sekitar 50 teman misalnya; sepertinya model " kaya semakin kaya " akan lebih alami untuk jejaring sosial, meskipun mungkin salah.)
- Terlepas dari kealamian emulasi, adakah alasan untuk meyakini bahwa hasilnya tidak aktif, atau tidak dapat diproduksi ulang?