NO-SQL은 not only sql 의 약어이다. 기본적으로 데이터 베이스는 계층형 -> 네트워크형 -> 관계형 으로 발전해 왔으며, 최근 대용량 데이터 처리가 이슈되면서 아래와 같은 관계형 데이터 베이스의 장단점의 보완 및 활용하고자 no-sql 에 대한 관심이 높아지고 있다.
관계형 데이터 베이스의 장점
- 데이터의 일관성을 보증할 수 있다. (트랜잭션)
- 정규화를 전제로 하고 있기 때문에 갱신 시의 비용이 적게 든다.
- 조인이나 복잡한 검색조건으로 검색이 가능하다.
- 참고 자료나 노하우가 많이 있다. (검증되고 성숙된 기술)
관계형 데이터 베이스의 단점
- 대량의 데이터 입력 처리 시 성능 이슈
- 갱신이 발생한 테이블의 인덱스 생성이나 스키마 변경에 대한 처리 이슈
- 컬럼을 확실히 정의하기 어려운 경우에 대한 처리 이슈
- 단순히 빨리 결과를 조회하고자 할때의 성능 이슈
<참고>
* 일반적으로 데이터 베이스 저장소의 처리 성능을 확장하기 위한 노력은 2가지로 분류될수 있다.
스케일업과 스케일다운이다.
스케일업 방식
사용중인 서버 자체를 고성능으로 바꿔서 처리능력을 향상시키는 방법
-> 상당히 많은 비용이 발생하지만, 소스에 대한 변경이 없다
스케일다운 방식
저가의 여러 장비를 사용하여 처리 능력을 향상 시킴.
-> 저가의 비용으로도 원하는 성능을 확보할 수 있지만, 소스 수정이 필요하다.
-> NO-SQL 에서 제공하는 방식
NO-SQL 데이터베이스
조인 연산이 불가능하며, 각 데이터가 독립적으로 설계 되어 있어 데이터를 여러 서버에 분산하여 작업 하는 방식.
데이터를 여러 서버에 분산하는 것을 통하여 각 서버에서 처리하는 데이터의 양이 줄고 따라서 대량의 데이터의 입출력이 있어도 처리가 쉬워진다.
* 일반적으로 관계형 데이터 베이스의 경우에는 고가의 장비를 마스터-슬래이브 혹은 액티브-스탠바이 형태로 구성하여 서비스하고 있는 경우가 많으나, NO-SQL 에서 이야기 하는 구성은 이런 구성이 아닌 10대 혹은 100대 정도의 저가의 서버들을 클러스터링 혹은 샤팅 등의 방법으로 데이터를 쪼개서 나누어 처리하는 방식을 말한다.
NO-SQL 데이터베이스 종류
NO-SQL 서버는 특징에 따라 3가지로 분류 될수 있다.
1. 키-값 형 스토어
- MEMCACHED
- REDIS
2. 문서형 데이터 베이스
문서형이라 함은 여러가지 형태의 값들을 모아놓은 논리적 구조라고 표현할 수 있겠다.
- MONGODB
3, 컬럼형 데이터 베이스
관계형 테이터 베이스가 ROW 단위로 데이터를 관리 하였다면, ROW 가 아닌 컬럼 단위로 관리하는 데이터 베이스를 말한다.
- HBASE
- CASSANDRA














