본문 바로가기

Work Log/As Cybersecurity Consultant

NoSQL 도입 시 고려해야 할 사항들


NoSQL 도입이 필요하여 관련 자료들을 좀 찾아보게 됐다. 


다양한 NoSQL DB들이 있는데, 들은 풍월에 따르면 특성들이 모두 다르기 때문에 다루어야 하는 데이터와 오퍼레이션들을 확인하고 이를 잘 지원하는 DB를 선정하는 것이 중요하다고 하고, 데이터 뿐만 아니고 하드웨어 적인 특성(메모리가 많이 필요하다던지)도 고려를 해야 적절한 DB를 선정할 수 있다고 한다.


프로젝트에 맞는 NoSQL DB를 선정하는 것이 중요하여 이를 찾기 위한 관점에서 자료를 찾아보게 됐다.


0. 필요한가

기본적으로 NoSQL이 뭔지, 왜 필요한지에 대해서 MongoDB를 만드는 10gen 사이트에 잘 정리가 되어 있다.

http://www.10gen.com/nosql



1. 데이터베이스모델 별 분류


데이터베이스 모델 별로 분류가 가능하다고 한다.

예를 들어 잘 알려진 NoSQL DB의 경우 아래와 같은데, 모델 별로 보다 자세한 설명은 다음 링크를 참조: 

http://en.wikipedia.org/wiki/Database_model

http://en.wikipedia.org/wiki/Column-oriented_DBMS


* Wide Column Store

- Hadoop/HBase나 Cassandra


* Document Store

- MongoDB



2. 관련 웹사이트

* 평판(Popularity) 기준 랭킹 : http://db-engines.com/en/ranking

* 모델 별 분류: http://nosql-database.org/



3. NoSQL 선정 시 고려해야 하는 사항

* Data Modeling을 이해하고, 어떤 Operation을 제공하는지 이해해야 함

* 확장성(Scalability)이 뛰어나지만, 이를 지원하기 위한 부하(여러 노드에 데이터를 분산 저장하고, 결과를 취합하기 위한)가 있음

* 실시간 보다는 배치(Batch) 형태의 도메인에 적합



4. MongoDB

* Schema Design

http://www.10gen.com/presentations/mongodb-melbourne-2012/schema-design-example

http://www.10gen.com/presentations/schema-design-7

http://www.10gen.com/presentations/schema-design-6


* Capacity Planning

http://www.10gen.com/presentations/capacity-planning


* Sharding

http://www.10gen.com/presentations/sharding-1


* Replication

http://www.10gen.com/presentations/replication



5. 스키마 설계 시의 고려사항

- 우선순위가 뭐냐: High Consistency, High read performance, High write performance

- 어플리케이션의 데이터 접근/조작은 어떻게 하는지: Read/Write Ratio, Types of Queries / Updates, Data life-cycle and growth, Analytics (Map REduce, Aggregation)