GraphDB 소개

AMUD·2023년 4월 14일
0

🦄 GDB (Graph Database)란 ?

  • GDB(Graph Database)는 데이터를 노드(node)와 엣지(edge)로 표현하는 데이터베이스
  • 노드는 개체(entity)를 나타내고, 엣지는 노드 간의 관계(relationship)로 표현
  • 노드 및 엣지는 그래프(graph)로 구성
  • 높은 성능을 가지고 있고, 복잡한 쿼리 처리 가능
  • 대규모의 데이터와 복잡한 관계를 가진 데이터 처리에 적합
  • 보통 네트워크 관련 데이터에 많이 활용

🪂 GDB 장점

  • 유연성: 데이터 모델을 변경할 필요 없이 새로운 데이터 요구 사항에 대응 가능. 또한, 노드 및 엣지 간의 관계를 유연하게 조작할 수 있습니다.

  • 높은 성능: Graph DB는 쿼리 성능이 뛰어나며, 연결된 데이터를 빠르게 검색 가능. 일반적으로 관계형 데이터베이스보다 훨씬 더 빠른 성능을 제공.

  • 복잡한 쿼리 지원: Graph DB는 매우 복잡한 쿼리를 처리할 수 있으며, 여러 노드 및 엣지 간의 복잡한 관계를 쉽게 쿼리 가능.

  • 확장성: Graph DB는 분산 환경에서 확장이 용이합니다. 데이터베이스의 성능을 높이기 위해 서버를 추가하거나 클러스터링할 수 있습니다.

  • 인사이트 발견: Graph DB는 매우 복잡한 데이터 세트에서 패턴을 발견하는 데 도움이 된다. 노드 및 엣지 간의 관계를 시각화할 수 있으며, 이를 통해 데이터 세트에서 인사이트를 발견 가능.

🗻 GDB 종류

  • Neo4j : 가장 많이 사용
  • Amazon Nepture, Apache TinkerPop etc

🍩 GDB 활용 개념

  • 위 예시는 Neo4j의 cypher 문서를 바탕으로 구성
  • 정점, 간선, 라벨, 속성에 대해 정확히 구분 가지 않아 위와 같이 정리
  • 간선(relation)도 속성을 가질 수 있음
  • 라벨을 통해 정점을 분류할 수 있음
  • RDB와 다르게 Join 연산을 통해 두 개체를 연결하는 것이 아닌, 바로 간선을 통해 탐색을 하여 쿼리 속도 대폭 향상
  • 초기 정점 탐색은 index로 탐색. (그 이후엔 간선을 통해 이동)

🦴 참고

https://bitnine.net/blog-graph-database/data-modeling-gdb/
https://neo4j.com/docs/

최근에 개발하고 있는 사이드 프로젝트에서 다양한 관계를 가지는 개체들이 있다. 그런데 기존 RDB에서는 다른 관계를 가지기 위해서는 대부분 관계에 대한 새로운 Table을 만드는 것이 일반적인데, 이는 문득 비효율적이라는 생각이 들어 GraphDB 활용에 도전해 볼 것이다!

profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글