※ NoSQL 이란? - 'No! SQL' 이 아니라, 【Not Only SQL】의 약어이다.
- 관계형 데이터베이스의 장점과 단점
* 장점
- 데이터의 일관성을 보장한다. (transaction, atomicity)
- 정규화를 전제로 하고 있기 때문에 데이터의 중복 가능성이 상대적으로 적다.
- SQL 언어를 이용하고, JOIN, LIKE 등 다양한 검색 조건을 이용해 원하는 데이터를 손쉽게 찾을 수 있다.
- 축적된 경험과 수십년간 검증된 솔루션(제품, out of box)들이 있다.
- 상대적으로 설치,사용 및 관리가 용이하다.
* 단점
- 단시간에 대량의 데이터 입력(수십 GB byte 이상)이 발생할 경우, 느리다. (상대적으로 그렇다)
- 데이터 구조 혹은 스키마(schema)이 일정(혹은 정적)하고, 변동이 많을 경우, 유지관리가 어렵다.
- 누적된 데이터 크기가 커질수록 수행 성능이 급격히 낮아진다.
- 분산, 대용량 시스템을 구축하기 불가능한 것은 아니나, 상대적으로 어렵다. - NoSQL과 RDBMS의 관계
- NoSQL은 관계형 데이터베이스(RDBMS)를 대체하기 위한 것이 아니다.
(관계형 데이터베이스가 엄격/정밀하다면, NoSQL은 유연하지만 데이터 구조가 정교하지 않다.)
- 관계형 데이터베이스는 데이터의 일관성 및 신뢰성이 매우 중요한 비즈니스(금융, 전자상거래 등)에서는 필수적이나,
대량의 데이터를 고속으로 처리하거나, 비정형 데이터를 처리하는데 적합하지 않다.
- NoSQL은 대규모/분산 환경에 보다 적합한 형태로 설계되어 있다.
- 신뢰성을 (약간이나마) 희생할 수 있다면, NoSQL은 보다 적은 하드웨어 비용으로 고성능/고가용성을 달성할 수 있다.
- RDBMS는 SQL, 정규화 등 표준화된 언어와 기술 표준이 있으나, NoSQL은 제품(오픈 소스 등) 종류가 다양하고,
각각의 기능/성능/특징이 매우 다양하기 때문에 용도에 맞는 솔루션을 선택하기가 까다롭다.
- NoSQL은 발전(버전 업) 속도가 빠른 반면, 시장을 주도하는 솔루션 사업자가 명확하지 않다. (Do/Try It Yourself!)
▶ NoSQL과 RDBMS는 경쟁 관계가 아니라, 고유의 적합/적용 가능한 데이터/처리 영역이 있다. (일부 겹치는 부분도 있음) ◀ - NoSQL을 고려해야 하는 상황
- 대량의 데이터를 수집/처리해야 할 경우
- 데이터 구조 혹은 스키마가 일정하지 않을 것이라고 예상되는 경우
- 보다 적은 비용으로 대용량 / 분산 처리를 하고 싶은 경우
- 빠른 데이터 접근 속도를 보장 받고 싶은 경우.
- 데이터의 무결성, 일관성을 최우선 조건으로 고려하지 않아도 되는 상황
- 그리고, 가장 중요한 것은 직접 설치 및 검증을 수행할 수 있고 다양한 문제에 부딧치는 상황에 외부의 도움(기술지원 등) 없이 스스로 해결할 수 있는 역량과 의지를 가진 경우. - NoSQL 분류 1
휘발성 key-value |
영속성 key-value |
문서형 데이터 |
컬럼형 데이터 |
memcached |
Flare |
MongoDB |
Casandra |
(Redis) |
(Redis) |
CouchDB |
HBase |
|
|
|
HyperTable |
- 빅데이터 시대를 위한 NoSQL 핵심 가이드 (로드북 출판사, Tatsuya Sasaki 저, 송은영 편역) 참조 [본문으로]