GraphDB untuk CMDB

Susan Sarandon
Lepaskan: 2025-01-14 08:45:45
asal
207 orang telah melayarinya

GraphDB lwn. RDB: Perbandingan Kelajuan Carian Seni Bina Daun Tulang Belakang

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.

Persediaan Eksperimen

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
Salin selepas log masuk

Tiga senario, berdasarkan variasi seni bina daun tulang belakang dan virtualisasi, telah diuji:

  • Senario 1: Seni bina ringkas (19 nod, kedalaman 4).

GraphDB for CMDB

  • Senario 2: Seni bina yang lebih kompleks dengan peningkatan ketumpatan pelayan dan sambungan mesh penuh antara suis daun dan pelayan (273 nod, kedalaman 4).

GraphDB for CMDB

  • Senario 3: Seni bina terdalam, memperkenalkan pod untuk setiap mesin maya (417 nod, kedalaman 5).

GraphDB for CMDB

Pemodelan data berbeza antara pangkalan data:

  • Neo4j: Nod mewakili peranti, dengan perhubungan 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)
...
Salin selepas log masuk
  • PostgreSQL: Dua jadual, 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)
);
Salin selepas log masuk

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.

Keputusan

Perbandingan kelajuan carian merentas senario diringkaskan di bawah:

GraphDB for CMDB

Perbincangan

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan