Neo4j

Neo4j

Neo4j의 핵심 정체성은 ‘Native Graph DB’라는 점이다. 저장 엔진부터 쿼리 처리 엔진까지 오직 그래프 데이터만을 위해 설계되었다.

핵심원리 : 인덱스 프리 인접성 (Index-Free Adjacent)

개념

일반 RDB나 NoSQL은 데이터 간의 관계를 찾으면 index를 검색해서 찾아간다. 반면 Neo4j는 Node를 생성할 때, 그 노드와 연결된 관계(Edge)의 물리적인 메모리 주소(Pointer)를 노드 자체에 직접 저장한다.

효과

관계(Edge)를 타고 이동할 때 인덱스 검색(포인터 탐색 비용) 단계가 완전히 생략된다. 데이터가 10억건이든 100건이 있든, 나와 연결된 이웃 노드를 찾아가는 속도(O(1))가 항상 일정해야 한다.

쿼리 언어 : Cypher

SQL과 유사하지만 그래프 구조를 시각적으로 표현한다. (m:Person)-[:FRIEND]->(n:Person) 처럼 아스키아트 형태로 직관적인 관계 조회가 가능하다.

장점

복잡한 다중 조인(Deep Traversal), 추천 시스템, 사기 탐지(Fraud Detection)처럼 관계의 깊이가 깊고 복잡한 연산에서 압도적인 성능을 낸다.


© 2022 JeongHwan Yun.