실무자를 위한 그래프 데이터 활용법
한빛미디어 “나는 리뷰어다” 활동을 위해서 책을 제공받아 작성된 서평입니다.
TL;DR
- 그래프 구조를 활용해서, 서비스에 적용하는 과정을 소개하고 있기 때문에 Neo4j, TigerGraph, Azure의 Cosmos DB 등에 관심이 많으시면 이 책은 굉장히 재미있고 흥미로운 책이다.
- Neo4j를 사용했던 경험이 있으시면 9~13장을 먼저 접해도 좋을 듯 하다. 그래프 구조를 활용해서 영화를 추천하는 과정을 소개하고 있기 때문에 실습을 먼저 해보셔도 좋을 듯 하다.
- RDMBS에 대한 이해도가 있으시고, 새로운 데이터 구조에 대해서 관심이 있으시면 실습을 진행하지 않는 방법으로 가볍게 읽어보시면 그래프 구조에 대해선 충분히 학습하실 수 있다.
- 개인적인 의견으로는 1~6장까지 실습없이 읽어보시고, 향후 과정을 고민하셔도 좋을 듯 하다.
- 이 책을 읽는데 있어서 RDBMS에 대한 이해도가 없으면 생각보다 높은 난이도가 될 수 있으니, 기본적인 RDBMS를 먼저 학습하시기를 권장한다. 배경지식이 없다고 가정한다면 생각보다 난이도가 높을 것으로 예상되기 때문에 ‘생활코딩의 관계형 데이터 모델링’ 정도를 미리 학습하시고 진행하시면 좋을 듯 하다.
1 - Long time ago?
이 책을 선택했던 이유는 순전히 호기심 때문이었다. 약(about) 4년전에 Neo4j를 사용해서 뭔가를 했던 적이 있다. 어떤 것을 했는지 말하긴 쉽지 않지만, 확실한 것은 실패했다는 것이다. 당시 프로젝트에 사용된 비용에 비하면 결과가 참혹했기 때문에, 햇빛도 못보고 프로젝트를 접어야 했다. 당시, 이 프로젝트의 핵심을 담당하던 분이 ‘Neo4j’와 ‘그래프 알고리즘’을 활용하면 손쉽게 해결할 수 있다고 했지만, 그 분을 제외한 거의 모든 참여자들이 Neo4j와 그래프 알고리즘을 제대로 활용하지 못해서 쉽지 않았다. 하지만, 우리가 풀지 못했던 문제의 경우 Neo4j를 사용하면 정말 손쉽게 풀었지만, 그 외에 다른 문제는 달랐던 것이다.
지금와서 돌이켜 생각해보면 RDBMS를 기반으로 만들어진 서비스에 Neo4j를 적용하는 방법에 미숙했고, 당시 그래프 이론을 기반으로 서비스를 구성하는 것에 대해서 다들 처음이라서 실패 경험과 기간이 너무 길었던 것은 아닐까 생각해본다.
2
개인적인 의견이지만, 이 책의 목표는 Neo4j와 같은 그래프 구조나 데이터베이스를 곧바로 활용하는 것이 아닌 듯 하다. 이 책은 기존의 RDBMS를 사용했던 사용자의 경험을 기반으로 그래프 구조를 활용할 수 있는 개념을 차근 차근 설명하는 것이라 생각한다. 이 책은 실습에 관한 태도를 대해서 ‘하면 좋고, 못해도 괜찮다’라는 태도를 취하고 있다. 즉, 실습을 적극적으로 권장하고 있지 않다. 하지만, 실습을 적극적으로 권장한다(강추!).
3
이 책은 RDBMS에 대한 이해도가 어느정도 있다고 가정하고, 그래프 데이터베이스를 스스로 사용할 수 있다고 가정한다. 실습의 경우 Neo4j 등을 사용하는 것이 아니라 Cassandra를 사용하고 있다. 그렇다고 Cassandra를 별도로 설치하는 등의 번거로운 과정없이 ‘DataStax Studio’를 다운로드 받아서 설치만 하면 된다. 나는 Docker를 사용하고 있어서 Docker의 compose를 활용하였고 편하게 실습을 진행할 수 있었다.
예제 프로그램의 기능을 조금씩 확장/개선하면서 그래프 구조를 기반으로 한 데이터베이스를 왜, 언제 활용해야 하는지 알려주고 있다. RDMBS 구조를 함께 설명하고 있기 때문에 실습 없이도 이해는 가능하지만 이왕이면 실습을 함께 진행하길 다시 한번 권하고 싶다. 무엇보다 데이터의 양이 많아졌을 때 쿼리를 개선하는 과정은 굉장히 흥미로운 경험이었다.
4
이 책은 크게 4가지 챕터로 나눌 수 있다.
- 1~3장은 그래프 데이터베이스를 활용하기 위한 기본적인 개념을 제공하며, 3장의경우 C360 예제를 사용해서 사례를 설명하고 있다.
- 4~6장은 C360 예제를 확장하면서 그래프 구조를 연습하고, 실습을 통해서 연습한다.
- 7~8장은 분산시스템에 적용하는 방법이나, 네트워크 경로 등을 활용하는 방법을 설명한다.
- 9~13장 그래프 구조를 활용해서 영화를 추천하는 과정 자세히 소개하고 있다.
개인적으론 1~6장까지 정도는 꼭 읽어보면 좋을 것 같고, Neo4j 등을 사용했던 경험이 있다면 9~13장 부터 진행해도 무리없을 것으로 예상된다.