CS/DB

Neo4j DBMS 구조와 포트별 역할

dragonhyeon 2025. 4. 10. 21:28
728x90
반응형

Neo4j DBMS 구조

Neo4j 는 DBMS 로 데이터베이스를 포함하여 그 주변 관리, 보안, 쿼리 처리, 클라이언트 통신, API 서비스 등을 총괄하는 시스템입니다. http://localhost:7474 에 접속 시 보이는 Neo4j Browser 또한 Neo4j DBMS 에서 제공하는 웹 기반 클라이언트 애플리케이션입니다. Neo4j DBMS 는 운영체제에 설치되어 포트를 통해 기능을 분리 제공하게 됩니다.

포트는 DBMS 가 외부 요청을 수신하는 입구 역할일 뿐, 그 자체에 프로그램을 설치하는 개념은 아닙니다.

Neo4j 포트별 역할

  • Bolt port: 7687
    • Neo4j DBMS 가 제공하는 핵심 기능인 쿼리 처리를 위한 쿼리 처리용 포트
  • HTTP port: 7474
    • Neo4j Browser 웹 애플리케이션
    • 이 웹 앱이 내부적으로 7687 포트에 접근
  • HTTPS port: 7473

네이티브 클라이언트 및 클라이언트 드라이버

웹 브라우저는 기본적으로 URL 앞에 프로토콜을 명시하지 않으면 HTTPS (구형 브라우저는 HTTP) 를 기본 프로토콜로 사용하여 접속을 시도합니다. 따라서 웹 브라우저에서 7687 포트로 접속을 시도하면 프로토콜이 맞지 않아 연결에 실패합니다.

설령 URL 에 bolt:// 와 같이 프로토콜을 명시하더라도, 웹 브라우저는 Bolt 와 같은 특수한 프로토콜을 처리할 수 없기 때문에 접속이 불가능합니다.

Bolt 프로토콜을 사용하려면, 이를 처리할 수 있는 네이티브 클라이언트 (Neo4j Browser (7474 포트) 나 Neo4j Desktop (GUI 기반 데스크탑 앱)) 를 사용하거나 Python 의 neo4j 패키지와 같은 Bolt 프로토콜을 지원하는 클라이언트 드라이버를 사용해야 합니다.

네이티브 클라이언트: 네이티브 클라이언트란, 특정 서비스나 서버와 직접 통신하기 위해 설계된 전용 클라이언트 프로그램을 의미합니다. 이는 HTML, CSS, JavaScript 등 웹 표준을 기반으로 범용 콘텐츠를 처리하는 웹 브라우저와는 달리, 특정한 목적이나 프로토콜을 지원하기 위해 개발된 특화된 소프트웨어입니다. 따라서 웹 브라우저가 다양한 웹 서비스를 일반적으로 처리할 수 있는 범용 클라이언트인 반면, 네이티브 클라이언트는 특정 시스템이나 서비스에 최적화된 전용 클라이언트라 할 수 있습니다.
클라이언트 드라이버: 클라이언트 드라이버는 운영체제가 하드웨어와 통신하도록 해주는 저수준 소프트웨어인 OS 수준의 디바이스 드라이버와 달리, 데이터베이스와 같은 외부 시스템과 애플리케이션이 연결될 수 있도록 해주는 라이브러리를 말합니다. Python 의 requests 패키지, JavaScript 의 axios 라이브러리 등이 클라이언트 드라이버 (혹은 클라이언트 라이브러리) 에 해당합니다. (클라이언트 드라이버는 DB 등에서 많이 쓰이는 용어로 클라이언트 라이브러리와 같은 뜻)
Python 의 neo4j 패키지는 Neo4j 데이터베이스와 연결할 수 있게 해주는 기능 전체를 포함하고 있기 때문에 클라이언트 드라이버 (=클라이언트 라이브러리) 라고 부를 수 있습니다.

Neo4j 와의 데이터 상호작용 방법 정리

즉, 서버에 설치된 Neo4j DBMS 에 쿼리를 전송하여 데이터를 조회 및 조작하는 방식은 크게 두 가지입니다.

  • 웹 인터페이스 기반 접근 방식
    1. 웹 브라우저를 통해 Neo4j 가 설치되어있는 서버의 7474 포트로 접속
    2. Neo4j Browser 가 실행되며, 내부적으로 7687 포트를 통해 DBMS 에 쿼리를 전송하고 결과를 반환 받음
  • API 기반 접근 방식
    1. Python 의 neo4j 패키지 등 클라이언트 드라이버의 API 를 사용하여, Neo4j 가 설치된 서버의 7687 포트로 직접 접속
    2. 드라이버는 Bolt 프로토콜을 사용하여 DBMS 에 쿼리를 전송하고, 결과를 받아옴
728x90
반응형

'CS > DB' 카테고리의 다른 글

데이터베이스 간단 정리  (1) 2025.01.07
Labeled Property Graph (LPG)  (1) 2025.01.07