IT의 중심에서

세상을 밝히는 SW 제품을 개발합니다.

NoSQL DB의 종류

RDB를 오랫동안 사용해오면서 NoSQL DB를 처음 접하는 사람들은 처음에 잘 이해를 하지 못합니다.
간단한 개발을 하다보면 DB는 대부분 데이터를 저장하고 읽는 기능에 충실합니다.
오히려 다양한 데이터 조작보다, 빠른 탐색속도가 필요한 더 많습니다.
NoSQL은 그런 목적에 특화된 저장소라고 할 수 있습니다.

조금 량이 많은 Java Cache를 만들어 써야 한다면 Redis 같은 Key-value store를 사용하는 것이 더 쉬운거죠.


nosql-logos

※원문: The four categories of NoSQL databases
※출처: http://rebelic.nl/, 2011.5.28

Monitis 블로그에 ‘올바른 NoSQL툴을 고르는 방법’에 대한 글이 올라왔다. 그들은 그것이 무엇인지, 어떤 것이 RDBMS와 맞지 않는지 파헤쳐서, NoSQL의 종류와 각 장단점을 기술했다.
많은 사람들이 단지 거대한 양의 NoSQL DB의 크기만 알고 있다. 하지만, 그들 사이에도 꽤 많은 차이점들이 있다.
예를 들어 만일 Graph DB를 사용해야 한다면 Key-Value DB를 사용할 수 없다. RDBMS를 사용해야 한다.

Montis 는 아래와 같이 분류했다.

1. Key-Value Stores
이 아이디어는 특정 데이터에 대한 unique key나 pointer가 있다면 hash table을 사용하자는 것이다.
Key/value 모델은 매우 구현하기 쉽고, 간단하다. 그러나, value의 일부분을 읽거나 업데이트 한다면 매우 비효율적이다.
(주: 이 Stores의 특징은 Key를 Search해서 value를 찾는 겁니다. value를 search하는 건 매우 느립니다. Key-value store는 DB라기 보다 대용량 Cache Store라고 이해하는게 맞습니다.)

예: Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB, Amazon SimpleDB, Riak

2. Column family store
이 기술은 여러 서버에 분산된 수많은 데이터를 저장, 처리하기 위해 만들어졌다.
여전히 key를 사용하지만, key는 여러 개의 컬럼을 가리키고 있다. 컬럼은 컬럼 패밀리에 따라 정렬되어 진다.

예: Cassandra, HBase

3. Document DB
이 기술은 Lotus Notes에서 영감을 받았다. 기본적으로 key-value store와 비슷하다.
이 모델에서 document는 많은 key-value collection들의 collection이다.
반 정형화된 document들이 JSON과 같은 포맷으로 저장되어진다.
Document DB는 기본적으로 key-value DB의 차세대 버전이다.
각 key마다 nested value를 허락한다. Document DB는 좀 더 효율적으로 조회를 지원한다.

예: CouchDB, MongoDb

4. Graph Databases
SQL은 Row, column기반의 테이블과 정형화된 구조를 가지고 있다.
우리는 SQL 대신에, 유연한 graph model을 여러 서버들에 확장할 목적으로 사용할 수도 있다.
NoSQL DB는 프로세스 상의 오버타임을 피하기 위해 SQL과 같은 고급 query를 제공하지 않는다.
DB 조회는 데이터 모델에 기반한다.
일반적으로 DB가 query api를 제공하는 반면, 많은 NoSQL 플랫폼은 데이터에 대한 RESTful 인터페이스를 제공하고 있다.
(주: 일반적인 DB가 데이터를 가공 질의하는 탐색기능을 지원하는 반면, NoSQL은 데이터에 대한 접근기능을 제공하고 있는 정도로 이해할 수 있다.)

Examples: Neo4J, InfoGrid, Infinite Graph

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

정보

이 엔트리는 2011년 5월 31일에 님이 API와 기술, 번역글에 게시하였으며 , , 태그가 지정되었습니다.

내비게이션

%d 블로거가 이것을 좋아합니다: