NoSQL
그래프 데이터 베이스
choong
그래프 데이터베이스란?
• 엔티티와 엔티티 사이의 관계를 저장.
• 엔티티 = 노드 = 객체
• 관계 = 간선
구조
Neo4j란?
• 자바 기반의 그래프 DB.
• REST 방식 지원.
• 인덱스 및 노드 탐색 지원.
• 이중화를 통한 고 가용성 지원(Zookeeper)
• 백업 / 복구 지원.
• Spring에서 지원.
관계와 속성
• 들어오는 관계를 INCOMING
• 나가는 관계를 OUTCOMING
관계와 속성
일관성
• 대다수 그래프 데이터베이스는 노드 분산
지원 안함.
• ACID 완벽 지원.
• Master는 쓰기 , Slave는 읽기.
• 트랜잭션을 통해 일관성 보장.
• 노드는 연결된 관계가 없을 때만 삭제.
트랜잭션
• 노드 변경 혹은 관계 추가시 트랜잭션을
명시.
– NotInTransactionException 발생.
• 읽기 연산은 트랜잭션 없이 수행 가능.
트랜잭션
가용성
• 1.8버전 부터 Slave를 사용하여 고 가용성
지원.
• Slave도 쓰기 처리 가능.
– 마스터와 동기화 후 쓰기를 먼저 Master에서
commit 후 Slave도 commit
• Master가 다운되면 Slave가 Master.(클러
스터)
인덱싱 서비스
확장성
• 서버 장비에 메모리 추가.
• 읽기 Slave 추가 확장.
• 도메인을 이용해 데이터를 분활 저장.
적절한 사용처
• 연결된 데이터
• 라우팅, 디스패치, 위치기반 서비스
• 추천 엔진

NoSQL distilled.그래프 데이터베이스