인턴 과제간 Neo4j를 사용하게 되었다. 우선은 Neo4j의 소개글을 정리해보며, Neo4j가 무엇이고 어떠한 이점을 누릴 수 있는지 전달하고자 한다.
Neo4j는 GrpahDB에 속하는 데이터베이스이다. GrpahDB는 데이터 저장, 데이터 처리, 쿼리 작성을 응집성있게 하도록 도우며, 유연하게 데이터 모델을 설계할 수 있게 해준다.
연관관계를 쿼리타임에 질의하는 것이 아니라 자체적으로 내장하고 있다. 이로 인해서 여러 연관관계를 활용하는 질의하게 될 때 단순하고 빠르게 질의할 수 있다.
e.g. 소셜 네트워크, 도로망 등
오픈소스(GCP v3), NoSQL, ACID를 보장하는 네이티브 그래프 DB[1]이다. Aura[2] DB를 통해 이용할 수 있고, 커뮤니티 에디션과 백업, 클러스터링 등이 추가된 엔터프라이즈 에디션 또한 존재한다. 자바와 스칼라로 작성되었고 깃헙에서 코드를 확인할 수 있다.
[1] Native GrpahDB는 추상화된 그래프만을 제공하는 것이 아니라 (실제 스토리지는 그래프가 아니라 다른 요소로 구성되고, 그래프로 이를 추상화하여 제공하는 형태가 아니라) 실제 스토리지 레벨까지 그래프로 이루어져 있어, 성능이 뛰어나고 유연하다. 또한 ACID, 클러스터링, 런타임 페일오버 등을 제공한다.
[2] Aura란? (중요하진 않으나, 자주 언급되어 간단하게 정리하였습니다.)
Neo4j에서 제공하는 클라우드 서비스(플랫폼)이다. 데이터베이스인 AuraDB와 데이터 사이언스 솔루션인 AuraDS를 제공한다.
RDBMS, CSV, API Data 등에서 데이터를 가져올 수 있다. RDBMS의 경우를 살펴보면 자체적으로 RDBMS가 제공하는 CSV 백업 파일을 가져오거나 APOC, ETL, Ketle과 같은 툴들을 이용하여 가져올 수 있다. 가장 기본적인 방법인 드라이버를 통해 직접 프로그래밍하는 방식도 있다.
"Neo"는 실제로는 새로운이라는 뜻을 갖는 고대 그리스어에서 비롯되었다는 게 중론이지만, 매트릭스 주인공의 이름인 Neo에서 유래되었다는 얘기도 있다.
"4j"는 log4j
등과 같이 자바 라이브러리를 나타내는 관례일 것이다. (현재는 자바를 비롯한 타 언어들도 지원하고 있다.)