728x90
반응형
Neo4j 란?
- 그래프형 데이터 베이스 이다.
- 그렇다면 그래프형 DB 란 어떤 것인가?
그래프형 DB 란?
노드와 간선(Relations)으로 구성되어 있는 DB 이다.
- Nodes:
- Michale, Graph Inc, Sarah 가 노드이다. - Relations:
- WORKS_AT, MARRIED_TO 가 노드들 간 관계이다.
그래프 DB 중 Neo4j 를 써야 되는 이유
속도
- Neo4j 는 데이터의크기와 관계가 복잡해 져도 선형적인 속도를 보여준다.
- 관계형 DB 보다 1000 배 빠르게 사용할 수 있다.
- 병렬로 그래프 그래프 글로벌 쿼리를 사용하여 더 빠르게 분석 할 수 있다.
신뢰, 보안
- ACID 를 준수한다.
- 수십억 개의 노드와 수조 개의 관계에서도 강력한 트랜잭션 보장과 타의 추종을 불허하는 신뢰성을 제공함.
- 기본적인 보안 외에도 세분화된 보안가능 개별 적인 접근 제한으로 관계형 데이터 베이스 보다 보안이 뛰어남.
- 아래 그림 처럼 특정 노드에 접근 제한을 걸 수 있다.
개발자 친화적
- 다양한 툴 제공
- 네이티브 드라이버 제공(Java 제공)
- 그래픽 툴 제공
RDBMS 와 차이점
- 핵심만 살펴 보겠다.
- 속도가 빠른 이유를 파악해본다.
Index-free adjacency (IFA)
- RDBMS 와 다르게 인덱스 없는 인접성을 구성한다.
- 테이블 스캔이 없다.
- 인덱스 탐색을 최소화 한다.
- 데이터 중복을 줄인다.
예제
- 아래 그룹을 나타내는 테이블이 있다고 하자
- ID 가 3번인 Other Group 의 최상위 Parent 인 ID 1 을 찾는 쿼리를 예제로 보자.
RDBMS
- 쿼리 구조는 아래와 같다.
SELECT PARENT_ID -- ID 1 조회
FROM GROUPS
WHERE ID = (SELECT PARENT_ID -- ID 2 의 Parent 1 조회
FROM GROUPS
WHERE ID = (SELECT PARENT_ID -- ID 3 의 Parent 2 조회
FROM GROUPS
WHERE ID = 3))
동작 과정
- 1. 최 하위 서브 쿼리로 이동
- 2. 쿼리 플랜 구축
- 3. 쿼리 플랜 실행
- 4. 다음 하위 서브 쿼리로 이동
- 2 ~ 4 반복
결과
- 3번의 플랜 구축
- 3번의 인덱스 조회
- 3번의 DB 를 읽음
Neo4j storage
- Neo4j는 노드와 관계를 포인터를 통해 서로 연결된 객체로 저장한다.
- 포인터가 핵심이다. 다음 조회할 주소를 알고 있기 때문에 포인터로 바로 접근이 가능하다.
동작 과정
- 포인터로 접근 한다
1. 6번 CHILD_OF 접근
- 연결되어 있는 노드가 2번인걸 알수 있다.
2. 2번 노드 접근
- 6번에서 왔으니 다음 포인터는 5번인걸 알수 있다.
3. 5번 CHILD_OF 접근
- 2번 노드에서 에서 왔으니 다음 포인터는 1번인걸 알수 있다.
4. 1번 노드 접근
- 5번 에서 왔으니 다음 포인터는 4번인걸 알 수 있다.
5. 4번 CHILD_OF 접근
- 1,1 로 연결 되어 있기 때문에 다음 포인터는 1번인걸 알 수 있다.
6. 1번 노드로 이동
결과
- 1. 지정된 앵커 를 기준으로 쿼리를 계획한다.
- 2. 하나의 인덱스를 사용하여 노드를 조회 한다.
- 3. 포인터를 따라 원하는 노드를 검색한다.
장점
- 적은 인덱스 조회
- 테이블 스캔 없음
- 데이터 중복 최소화
사례
- NASA 에서 Neo4j 를 적용함.
- 프로젝트 시간 단축, 재해 예방 가능을 목적에 둠
- 이전에 데이터들을 파악했다면 오작동 재해를 예방할수 있었다고함.
- NASA 문제점
- 접근성
- 수십년동안 데이터를 모았지만 부서별, 개인별, 프로젝트 별로 데이터가 나뉘어 접근성에 문제가 있었음.
- 속도, 부하
- 방대한 데이터 양으로 속도의 문제 부하 문제가 있었음.
- 접근성
- neo4j 로 문제를 해결함
- 자료의 주제를 정함 (노드)
- 자료의 상관관계를 정함 (관계)
- 주제들이 어떤 관계가 있는지 빠르게 파악하고 자료들을 빠르게 조회 할 수 있게됨.
- 의사 결정을 향상 시킬수 있었었음
- 결론
- 2백만 달러의 예산을 줄일수 있엇음.
- 빠른 의사결정을 할 수 있었음.
- 정확한 분석이 가능해 졌음.
728x90
반응형
댓글