반응형
신규 프로젝트를 진행하는 도중 db 설계한 내용을 시니어 개발자분께 보여드렸더니, 해당 도메인에 관계형 db를 사용 할 시 성능문제가 발생 할 수 있다는 피드백을 받았고, 그래프 db를 사용하는 것을 검토해보라는 피드백을 받아 내용을 정리해보려고 합니다.
먼저 그래프 db는 관계형 db와 아래와 같은 차이점이 있습니다.
새로운 속성 추가시
- 관계형 db 새로운 칼럼을 추가하고, 외래키 등을 이용해 연관관계를 맺어주고 제약조건 등을 설정해주는 과정을 거쳐야한다.
- 그래프 db 새로운 노드를 추가하고 다른 데이터와 연결해주는 과정만 거치면 쉽게 속성을 추가 할 수 있다.
처리 속도 관련
- 관계형 db 다른 테이블을 join해야 하는 경우가 많을시, depth가 깊어지게 될 시 성능에 대한 부담이 계속해서 증가한다.
- 그래프 db 관계형 db와는 해당 레이블을 검색 후, 데이터 관계에 따라 조회를 하기 때문에 데이터양이 방대하더라도 상대적으로 빠른 속도를 보장한다.
직관성
- 관계형 db 비개발자의 경우 테이블간의 db구성, 연관관계 등을 파악하는 것이 힘들다.
- 그래프 db 그래프 db는 현실을 반영하는 직관적인 데이터 모형을 제공하여 상대적으로 db구성을 한눈에 파악하기 쉽다.
단점 :
- rdb에 비하여 레퍼런스 문서의 수가 많이 적다.
- vertex 간의 연산이 필요할 경우 적합하지 않음 (ex: 모든 맴버를 출력하라. )
적용 사례 :
- 개인 맞춤형 인공지능 학습 서비스 : 나눗셈, 곱셈과 도형의 넓이 구하기 우선순위를 어떻게 결정 할 것인지? 등등 → 그래프db를 활용하여 해결
- 소셜네트워크 - 친구 관계
- 쇼핑몰 - 상품 구매 패턴, 연관상품을 표현
기타 생각 정리 :
- spring 에서 data jpa 와 같이 data neo4j 프로젝트가 있어 spring boot와 사용하는데 큰 불편함은 없을 것 같다.
- 하지만 레퍼런스 문서가 많이 없다는 점과 러닝커브가 작지 않다는 점에서 도입하기가 꺼려지는 부분이 있다.
참고자료 : Spring data Neo4j , Neo4j
반응형
'컴퓨터 > Spring + JPA' 카테고리의 다른 글
[인텔리제이 DTO generator] json data 자동으로 entity class 생성하기 (0) | 2021.06.29 |
---|---|
[해결방법] JPA MySQL server version for the right syntax to use (0) | 2021.03.13 |
[Spring JPA] OneToOne N+1 문제 (원인 해결방법 포함) (0) | 2021.01.10 |
[스프링] spring bean 과 java bean의 차이점! (0) | 2020.11.10 |
[해결방법] [spring boot] ResourceHttpRequestHandler - Path with "WEB-INF" or "META-INF" (0) | 2020.11.07 |