Kajian ini menanda aras kelajuan carian GraphDB (Neo4j) dan RDB (PostgreSQL) apabila menanyakan data yang mewakili seni bina rangkaian daun tulang belakang. Hasilnya mendedahkan bahawa GraphDB mengatasi RDB untuk set data dengan banyak nod dan kedalaman yang ketara.
Persekitaran ujian menggunakan bekas Docker untuk Neo4j (versi 5.26.0) dan PostgreSQL (versi 15). Fail Docker Compose adalah seperti berikut:
version: '3' services: postgres: image: postgres:15 ports: - 5433:5432 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres neo4j: image: neo4j:5.26.0 ports: - 7474:7474 - 7687:7687 adminer: image: adminer restart: always ports: - 8080:8080
Tiga senario, berdasarkan variasi seni bina daun tulang belakang dan virtualisasi, telah diuji:
Pemodelan data berbeza antara pangkalan data:
has_parent
dan has_child
. Contoh pertanyaan untuk Senario 1:CREATE (ssw1: SpineSwitch {name: "ssw1"}) CREATE (ssw2: SpineSwitch {name: "ssw2"}) ... CREATE (ssw1)-[:has_child]->(lsw1) ...
nodes
dan relationships
, telah digunakan.CREATE TABLE nodes ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, type VARCHAR(50) NOT NULL ); CREATE TABLE relationships ( id SERIAL PRIMARY KEY, parent_id INT NOT NULL, child_id INT NOT NULL, relationship_type VARCHAR(50) NOT NULL, FOREIGN KEY (parent_id) REFERENCES nodes (id), FOREIGN KEY (child_id) REFERENCES nodes (id) );
Pertanyaan carian bertujuan untuk mencari laluan daripada perkhidmatan tertentu ("srv1") ke suis tulang belakang. Skrip Python dengan pemacu GraphDatabase
Neo4j dan psycopg2
telah digunakan untuk pelaksanaan pertanyaan dan pemasaan.
Perbandingan kelajuan carian merentas senario diringkaskan di bawah:
Hasilnya menunjukkan bahawa GraphDB jauh lebih cekap untuk set data dengan sejumlah besar nod dan kedalaman yang besar, sejajar dengan kekuatan sedia ada pangkalan data graf dalam merentasi perhubungan yang kompleks. Untuk set data yang lebih kecil, perbezaan prestasi kurang ketara.
Selain itu, kesederhanaan pertanyaan Cypher dalam Neo4j, berbanding dengan kerumitan pertanyaan SQL yang setara dalam PostgreSQL, adalah faktor penting untuk dipertimbangkan. Perbezaan dalam kerumitan pertanyaan ini menyumbang kepada keutamaan keseluruhan untuk GraphDB apabila berurusan dengan struktur data seperti graf.
Atas ialah kandungan terperinci GraphDB untuk CMDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!