728x90
반응형
그래프 DB와 Neo4J
그래프 DB란 데이터 간의 관계를 일급(first-class) 엔티티로 다룰 수 있도록 설계된 데이터베이스다. 관계형 데이터베이스의 경우 검색 시점에 저장된 관계를 이용하는 반면, 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 모델에서 가장 핵심적인 요소는 노드(Node)와 관계(Relation)이다.
그림. 그래프 모델 예시
- 노드(Node)
-
- 그래프의 엔티티로서 역할(Role)에 따른 레이블을 가진다
- 예) Employee, Company, City
- 관계(Relatoin)
-
- 도 노드 사이의 연결
- 예) :HAS_CEO, :LOCATED_IN
Neo4J는 오픈소스 그래프 DB이며, 아래와 같은 특성을 가진다. 커뮤니티 버전은 무료이지만, 운영 관점의 주요 기능은 대체로 유료다.
- ACID 트랜잭션 지원
- Native 그래프 DB로서, 그래프 엔진 레벨이 아닌 스토리지 레벨까지 구현됨
- 유연하며 강력한, 그래프 전용 쿼리 언어인 Cypher 제공
쿼리언어 Cypher
Cypher는 SQL-Like 선연형 쿼리 언어로, 그래프 모델에 특화된 쿼리 언어다. 가장 기본적인 쿼리 구문은 다음과 같다.
그림. Cypher 기본 구문
노드는 마치 동그라미와 같은 (a)와 같은 형태로, 관계는 –> 로 표현된다.
NorthWind 예제 따라하기
예제는 Neo4J의 샘플 데이터셋 중에서 NorthWind 샘플을 사용한다.
그림. NorthWind 데이터 구조
예제는 2가지로 구성된다.
- 하나는 관계형 DB에 저장된 NorthWind 데이터셋을 Neo4J로 Load하고, Cypher 쿼리 언어를 이용해서 질의하는 방법을 간략히 설명한다.
- 나머지 예제는 Neo4J의 Java 클라이언트 라이브러리 중 하나인 OGM(Object Graph Mapping) 라이브러리를 사용해서 자바 클라이언트를 작성하는 방법을 설명한다. 자바 예제 코드는 socurites/neo4j-northwind-java에서 내려받을 수 있다.
https://www.popit.kr/neo4j-cypher-%EA%B0%80%EC%9D%B4%EB%93%9C/
728x90
'04.Database' 카테고리의 다른 글
DB 언어 - PreparedStatement 와 Statement (0) | 2020.06.05 |
---|---|
DB 성능개선 - 인덱싱 방법 (정적인덱싱, 동적인덱싱) (0) | 2020.06.05 |
데이터 모델링 - 물리 모델링 (0) | 2020.06.05 |
DB 식별자/비식별자 (0) | 2020.06.05 |
CRUD Matrix (0) | 2020.06.05 |