스프링 프래임웍을 쓰다 보면 데이터베스 쪽에서 간간히 보이던 Neo4j
sql과는 다르게 nosql쪽에 분류 되어 있는 neo4j spring framework 를 사용할때마다 먼가 하긴 했는데 이참에 한번 사용해 보기로 합니다.
nosql쪽에 있는 것을 보니 정형화 되어 있지 않고 가지 각색의 모양과 데이터들이 쌓일거 같은데요 nosql과의 차이는 보토오 nosql은 문서 형식으로 하나의 문서를 만들고 그 안에 정형화 되지 않은 데이터를 쌓는다면 neo4j는 노드에 정형화 되어 있지 않은 속성이랑 다른 노드간의 관계를 쌓고 할용할 수 있다.
보통 RDB라 함은 창고에 같은 물품을 차곡차곡 쌓아서 활용 한다면 그래프 디비는 지하철 노선도와 같이 한역에도 다양한 속성과 관계 방향 신도림 역보면 환승도 많고 방향도 많고 각 방향의 급속도 있고
다양한 연결점에 방향과 속성들을 갖는 그런 경우에 활용하면 좋을듯 싶다
그래프란
위의 사진과 같은 것들도 그래프지만 직선, 곡선, 도형 등
개체들 간의 관계를 나타내는 것도 그래프다 지하철 노선도 처럼 이역에서 저역으로 거리 시간 노선 등 이를 나타낸 것도 그래프다
그러면 특정역에서 특정역으로 가장 빠르게 가거나 짧은 길을 구하려면 RDB를 이용해도 가능하겠지만
조인도 많이 해야 하고 데이터가 많으면 조인이 느려지기도 하다
그럴때 사용하라고 만든 그래프 디비인거 같다 지하철 노선 뿐만 아니라 전세계의 인구가 서로 엮여 있는데 이를 특정 관계를 빨리 찾아 내서 활용하기엔 그래피 디비가 수월할거다
예를 들면 가계도
가족중에 누구랑 누구랑 어떤 관계인지를 RDB를 이용해서 나와 어떤 관계인 사람을 찾아 낸다는건 어려울거 같은데
neo4j의 cypher(sql로 치면 쿼리)로 찾기 쉬울거다 그것도 사용할줄 알아야 하지만
이런 식으로 짧은 경로를 찾는 다던지 패턴에 맞는 대상을 찾아서 리턴 시킬 수 있다
그래프 db neo4j는 각 개체의 방향과 속성등을 활용할 수 있고 대상간의 관계 깊이 등을 좀더 효율적으로 관리 할 곳에 사용 하면 좋을거 같다.