Neo4j는 **그래프 데이터베이스( Graph Database )**로, 노드(node)와 관계(relationship)를 이용해 데이터를 저장하고 질의하는 시스템이에요. 관계형 DB(SQL)와 달리, **연결 중심 데이터**를 직관적으로 표현하고 탐색하는 데 강력합니다. --- ## 핵심 개념 - **노드(Node)**: 데이터의 개체(Entity). 예: 사람, 회사, 도시 - **관계(Relationship)**: 노드 간 연결. 방향성과 속성을 가짐. 예: `(:사람)-[:WORKS_AT]->(:회사)` - **속성(Properties)**: 노드와 관계 모두에 키-값 형태로 저장 가능 - **레이블(Label)**: 노드의 타입을 분류하는 태그. 예: `(:Person)`, `(:Company)` --- ## Cypher 쿼리 언어 Neo4j에서 사용하는 SQL 유사 언어: - 노드 생성 ```cypher CREATE (a:Person {name: "Alice", age: 30}) ``` - 관계 생성 ```cypher MATCH (a:Person {name: "Alice"}), (b:Company {name: "Neo4j"}) CREATE (a)-[:WORKS_AT]->(b) ``` - 탐색 ```cypher MATCH (p:Person)-[:WORKS_AT]->(c:Company) RETURN p.name, c.name ``` - 패턴 탐색 (짧은 경로) ```cypher MATCH (a:Person {name: "Alice"})-[:KNOWS*1..3]-(friends) RETURN friends ``` --- ## 장점 - **복잡한 관계 질의**가 빠르고 직관적 - 소셜 네트워크, 추천 시스템, 지식 그래프, 생명정보학 네트워크 분석 등에 강력 - 시각화 친화적 (Neo4j Browser, Bloom 등 도구 제공) --- ## 시작 방법 1. **Neo4j Desktop** 설치 (GUI + 로컬 DB 관리) 2. **Neo4j Aura** (클라우드 서비스, 무료 tier 있음) 3. Python, Java, JavaScript 클라이언트 라이브러리 지원 (`py2neo`, `neo4j-driver` 등)