(이 포스팅은 개인 프로젝트 진행 중 정리할 필요가 있는 내용을 포스팅 한 것이다. 자세한 프로젝트 내용은 아래 링크를 참조해주길 바란다)
포스팅 보러가기
SQL과 NoSQL 중 왜 NoSQL?
나의 경우, 인스타와 카카오에서 API로 크롤링과 정보를 수집할 거라 굳이 정해진 스키마도 필요없고, 데이터 구조도 다 다를거라 (게다가 내용이 많아 속도도 중요함) NoSQL을 선택했다.
간단하게 각각의 자료형의 특징을 정리해보면,
Key-value형
Document형
Wide-column형
Graph형
그래서 어떤 NoSQL?
내가 크롤링해 올 데이터들은 기본적으로 JSON
으로 제공이되며, 업데이트가 많고
, 빠른 속도
가 중요하기 때문에 Key-value형과 Graph형은 필요하지 않을 것 같아 이번에는 Document형과 Wide-column형 중 선택하기로 했다. 아래와 같이 접해본 적 있는(그렇다고 써봤다고는 안 함) NoSQL Tool을 비교 분석하고 결정하기로 했다.
둘 다 Document형 NoSQL로 빠른 속도가 특징이지만, 그 중에서도 Elasticsearch의 속도가 훨씬 빠르다(게다가 용량까지 적게 든다)는 블로그를 발견했다. 참고
각각의 내가 느낀 특징들을 정리해보자면,
둘 다 각각의 장단점이 있어 고민이 되던 차, 이런 글을 보게 되었다.
"MongoDB에 어떤 데이터가 저장되면 ElasticSearch의 데이터로 동기화시켜 데이터를 구할때는 MongoDB가 아닌 Elastic Search에서 가져올 것이다." 참고
즉! MongoDB에 넣고 Elasticsearch에도 동기화 시켜서 검색할 때는 Elasticsearch에서 빠르게 뽑아온다!!
사람들 진짜 지니어스 하다 증맬. 각각의 좋은 점만 뽑아서 실행 할 수 있구나😎
우선 Google이 발표한 Bigtable 논문에 기초해 만든 Apache의 HBase라 둘은 크게 다르지 않을 것이라고 생각했다. Wide-column형 NoSQL은 거의 대부분 Column-Family라는 것이 있다. 둘의 큰 차이점은 자체 관리형인 HBase에 비해, Bigtable은 클라우드 기반이라는 점 정도...?(성능은 Bigtable이 훨씬 빠르다). 하지만, 여기서 중요한 점.
MongoDB와 Elasticsearch가 연동되는 것과 비슷하게, HBase와 Bigtable도 연동된다! 참고
그래서 무엇을 선택할 것인가
정말 어렵다. 다 써보고 싶다. 솔직히. 하지만 무엇보다
라는 이유로 MongoDB와 Elasticsearch를 연동해서 써보기로 결정했다.
게다가 Elasticsearch는 Kibana까지 써볼 수 있으니 시각화도 도전해볼 수 있는 좋은 기회인 것 같다.