NoSQL 관련

[CAP 이론]
- 데이터 베이스 CAP 이론(Brewer's CAP) : 데이터 베이스는 C,A,P 중 2가지만 보장할 수 있고, 3개 모두를 보장하는 것을 불가능
  Consistency(일관성) : 모든 노드들은 동시에 같은 노드를 보아야 함
  Availability(유효성) : 모든 노드들은 항상 읽기와 쓰기를 할수 있어야 함
  Partition Tolerance(파티션 허용) : 시스템은 물리적인 네트워크 파티션을 넘어서도 잘 동작해야 함
- CAP 이론을 Nathan Hurst 가 만든 Visual Guide to NoSQL System 그림으로 설명(http://blog.nahurst.com/visual-guide-to-nosql-systems)

[NoSQL(Not only SQL)]
- 기존 관계형데이터베이스(RDB) 와 구분되는 다른 형태의 데이터베이스를 통칭
- 수평적 확장(서버를 하나씩 붙여 나가면서 데이터베이스를 확장)이 용이하려면 P 특성이 필요
- 다양한 데이터와 많은 데이터량을 처리하기 위해 RDBMS 가 갖기 못한 P 의 특성이 필요하면서 등장

[특징]
- 고정된 테이블 스키마 없음
- 일반적으로 수평적 확장 지원
- RDB 에 비해 읽기/쓰기 성능이 좋음

[저장 형식]
- column oriented db
전통적인 RDB 의 경우 테이블을 row(튜플)로 집어넣는 것에 반해, column db column(attribute) 단위로 데이터를 집어넣는다.
비슷한 column 을 압축할 경우 압출률이 좋다.
로그분석과 같이 데이터를 가져오는 것이 목적이아닌 경우 효율적이다.
예) 아래와 같은 테이블이 있을 경우
 ID name sex phone
 1  bill  m  123
 2  steve m  456
row oriented db 는 1, bill, m, 123; 2, steve, m, 456; 으로 row 단위로 읽어온다.
column oriented db 는 1, 2; bill, steve; m, m; 123, 456; 으로 column 단위로 읽어온다.

- document oriented db
JSON 과 같이 일정한 포맷을 그대로 DB 집어 넣는다.
DML(select, insert, update, delete)가 없다. DML 대신 각 언어별로 api 를 제공
예) { "name" : "yoonbyounghoon", "sex" : "male", "phone" : "123-456-789" } 의 경우
RDB 테이블을 사용하면 name, sex, phone 의 attribute 를 만들어야 하지만 document oriented db 는 통채로 집어넣는다.

[주요 NoSQL]
- Cassandra
라이센스 : Apache
개발언어 : Java
프로토콜 : custom, binary
특징 : column oriented
사용예 : FaceBook

- CouchDB, CouchBase(CouchDB + memcached)
라이센스 : Apache
개발언어 : Erlang
프로토콜 : HTTP, REST
통신 포맷 : JSON
특징 : document oriented
사용예 : CRM

- MongoDB
라이센스 : MongoDB 는 AGPL, MongoDB Driver 는 Apache 2.0
개발언어 : C++
프로토콜 : JSON, custom, binary
특징 : document oriented, Hadoop 을 사용할 경우 MapReduce 사용 가능
사용예 : 10gen

- HBase
라이센스 : Apache
개발언어 : Java
프로토콜 : HTTP, REST
특징 : column oriented, Hadoop 기반의 MapReduce 사용
사용예 : FaceBook 메세징 데이터 베이스

comments:

댓글 쓰기