원문 『빅데이터 저장 및 분석을 위한 NoSQL & Redis - 주종면』

NoSQL은 주로 빅데이터를 다루는 분야에서 활용되고 있다. RDBMS와 비교하여 설계하는 비용이 크게 들지 않는다. 또한 읽고 쓰는 기능도 설계를 잘한다면 3배 이상의 성능을 낼 수가 있다.

NoSQL에는 여러 DBMS가 존재하고, 이 DBMS들이 모두 같은 저장구조를 가지고 있는 것이 아니다. 대표적인 것들은 다음과 같이 있다.

  • Key.Value Database
  • Document Database
  • ColumnFamily Database
  • Graph Database
  • Multimodel Database

NoSQL 선정 가이드라인

그러면 어떠한 경우에 어떤 NoSQL을 사용해야할까? 본 책에서는 다음과 같은 가이드라인을 제시한다.

1. 초당 5만건 이상의 데이터가 발생하는가?

5만건이 넘어간다면 기존 관계형 DBMS로 처리할 수 없기 때문에 NoSQL을 사용한다.

2. 트랜잭션 제어가 필요한가?

commit과 rollback 명령어를 통해 사용자가 직접 트랜잭션을 제어하며 이를 통해 데이터의 입력, 수정, 삭제가 이루어진다. Hadoop은 파일 시스템을 사용하기 때문에 트랜잭션이 불가한다.

3. 데이터 무결성이 요구되는가?

Primary Key, Foreign Key, Not Null, Check, Unique와 같은 제약 조건을 원하지 않는다면 Key-Value 또는 Column-Family DB를 선택하는것이 좋다.

4. 수평적 DataSets인가?

수평적 구조라하면은 RDB에서는 여러개의 칼럼으로 구성되어 있어 열과 다수의 행이 교차되는 구조를 말한다. 수평적 DataSets 구조로 저장 관리해야 한다면 Document DB를 선택해야한다.

5. 계층형 데이터인가?

기본적인 계층형 데이터는 Document DB로 처리할 수 있지만 10~20개가 넘어가는 Depth에서는 Graph DB를 사용을 하는 것이 좋다.

NoSQL 제품 가이드라인

그렇다면 어떻게 NoSQL 제품을 선택해야할까? 본 책에서는 다음과 같은 가이드라인을 제시한다.

1. Simple API 지원 여부

대부분 NoSQL은 오픈소스 라이선스로 제공된다. 이와 같은 경우 별도의 드라이버를 개발해야 할 수도 있기 때문에 불필요한 시간이 소요될 수 있다.

2. Easy Distributed 기술 제공 여부

초당 10만건 이상의 데이터를 빠르게 쓰고 읽는 것의 핵심은 분산 저장과 처리이다. 샤딩이나 파티셔닝이 제공되는지 검토해야한다.

3. Easy Replication 지원 여부

예기치 못한 문제로 시스템이 종료되는 경우가 종종 발생하는데, 이 경우 데이터 유실을 방지하기 위하여 Replication 시스템도 함께 구축되어야한다.

4. 스케일-아웃(Scale-Out) 가능 여부

기존 RDBMS는 시스템 자원이 부족하는 경우 해당하는 서버의 자원을 최대 임계치로 끌어 올린다. 서버 확장을 갖지 못하는 이유는 추가로 라이센스를 구매해야하기 때문이다. NoSQL은 오픈소스 라이센스를 사용하기 때문에 훨씬 유용성이 있다.

5. 유지보수 비용이 저렴한가

RDB의 역사는 오래되었지만 유지보수에 대한 불만은 언제나 있다. NoSQL은 RDBMS의 30%정도 수준의 비용으로 유지보수가 가능하다.

6. 비정형 데이터 구조 지원 및 트랜잭션 제어가 가능 여부

사진, 동영상, 음성 등의 비정형 데이터들에 대한 운영 관리도 필요하다. NoSQL은 그러한 데이터를 다룰수있도록 설계되어 있다.

대부분의 NoSQL은 트랜잭션을 사용자가 직접 제어할 수가 있다.

7. 오픈소스

대부분 NoSQL은 듀얼 라이센스 정책을 제공한다. 엔터프라이즈의 경우 추가 비용이 발생하는데 이는 추가 SW와 유지보수 비용이 들어있다.