CMDB용 GraphDB

Susan Sarandon
Susan Sarandon원래의
2025-01-14 08:45:45183검색

GraphDB와 RDB: 스파인-리프 아키텍처 검색 속도 비교

본 연구에서는 스파인-리프 네트워크 아키텍처를 나타내는 데이터를 쿼리할 때 GraphDB(Neo4j) 및 RDB(PostgreSQL)의 검색 속도를 벤치마킹합니다. 결과에 따르면 노드 수가 많고 깊이가 깊은 데이터 세트에서는 GraphDB가 RDB보다 성능이 뛰어난 것으로 나타났습니다.

실험적 설정

테스트 환경에서는 Neo4j(버전 5.26.0) 및 PostgreSQL(버전 15)용 Docker 컨테이너를 활용했습니다. Docker Compose 파일은 다음과 같습니다.

<code class="language-yaml">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</code>

스파인-리프 및 가상화 아키텍처의 변형을 기반으로 하는 세 가지 시나리오가 테스트되었습니다.

  • 시나리오 1: 간단한 아키텍처(19노드, 깊이 4).

GraphDB for CMDB

  • 시나리오 2: 서버 밀도가 증가하고 리프 스위치와 서버 간의 풀 메시 연결(273개 노드, 깊이 4)을 갖춘 더 복잡한 아키텍처.

GraphDB for CMDB

  • 시나리오 3: 각 가상 머신에 대한 포드를 도입하는 가장 심층적인 아키텍처(417노드, 깊이 5)

GraphDB for CMDB

데이터 모델링은 데이터베이스마다 다릅니다.

  • Neo4j: 노드는 has_parenthas_child 관계가 있는 장치를 나타냅니다. 시나리오 1에 대한 샘플 쿼리:
<code class="language-cypher">CREATE (ssw1: SpineSwitch {name: "ssw1"})
CREATE (ssw2: SpineSwitch {name: "ssw2"})
...
CREATE (ssw1)-[:has_child]->(lsw1)
...</code>
  • PostgreSQL: nodes, relationships 두 개의 테이블을 사용했습니다.
<code class="language-sql">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)
);</code>

특정 서비스("srv1")에서 스파인 스위치까지의 경로를 찾기 위한 검색 쿼리입니다. 쿼리 실행 및 타이밍에는 Neo4j의 GraphDatabase 드라이버와 psycopg2이 포함된 Python 스크립트가 사용되었습니다.

결과

시나리오별 검색 속도 비교는 다음과 같습니다.

GraphDB for CMDB

토론

결과는 GraphDB가 복잡한 관계를 탐색할 때 그래프 데이터베이스의 고유한 강점과 일치하면서 노드 수가 많고 깊이가 상당한 데이터세트에 훨씬 더 효율적이라는 것을 보여줍니다. 데이터 세트가 작을수록 성능 차이가 덜 두드러집니다.

또한 PostgreSQL의 동등한 SQL 쿼리의 복잡성과 비교하여 Neo4j의 Cypher 쿼리의 단순성은 고려해야 할 중요한 요소입니다. 쿼리 복잡성의 이러한 차이는 그래프와 유사한 데이터 구조를 다룰 때 GraphDB를 전반적으로 선호하는 데 영향을 미칩니다.

위 내용은 CMDB용 GraphDB의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.