월요일, 5월 20
Shadow

#002 오픈 소스 기반의 고성능의 분산 데이터 저장 시스템들(NoSQL)

최근들어 MySQL, Oracle, DB2, and SQL Server 등의 상용 관계형 DB보다 성능이 우수한 오픈소스 및 인덱스 기반의 데이터 저장 구조를 가진 이른바 NoSQL이라는 새로운 형태의 데이터 스토리지 솔루션이 개발자들사이에 많이 회자되고 있네요.

재정이 빈약한 Web 2.0 기업들이 구글이나 아마존, MS 등의 대기업군을 따라 잡을려면 오픈 소스 기반의 NoSQL 밖에는 대안이 없다고 생각한다는 증거죠.
한 예로, 페이스북은 기존 데이터베이스인 MySQL이 아니라 카산드라(Cassandra) 데이터 스토어에서 개발해 새로운 검색 기능을 추가해서 전세계 개발자들에게 주목 받았죠.

그래서 관련 Paper인 Rick Cattell의 High Performance Scalable Data Stores라는 내용을 한번 정리해 보았습니다.

이들 NoSQL 이라는 데이터 저장 시스템의 공통된 특징들은…

  • 데이터 베이스라 부르기를 거부하고
  • Key & Value로 저장되고
  • 분산 환경 지원되고
  • Call level interface 지원(DBMS에 접근하는 표준)
  • 막대한 양의 데이터를 처리할 수 있는 대용량 데이터의 빠른 인덱싱
  • 클러스터나 그리드에서의 구동을 위해 다양한 테이블로 데이터베이스를 나눠야 하는 복잡한 작업과 ‘샤딩(sharding)’ 없이 손쉽고 저렴하게 여러 서버들의 수평적 확장(horizontal scaling)됨
  • 데이터의 스키마와 속성들을 동적 정의

Data Stores의 다양한 관점에서 종류들을 요약해보자면…

1. Key-value Stores : 해쉬 방식으로 데이터 저장
– Redis : 트위터에서 사용된 C기반의 데이터베이스
– Scalaris : Erlang 기반 데이터 베이스
– Tokyo Tyrant : B-trees & hash, C기반 데이터 베이스, memcached 프로토콜을 지원
– Voldemort : LinkedIn 채택중, Java 기반 데이터베이스
– Riak : REST지원, Erlang 기반 데이터 베이스

2. Document Stores
– SimpleDB : 아마존에서 제공하는 DB
– CouchDB : Map-Reduce, rest 지원, Apache 소속, Erlang 기반 데이터 베이스
– MongoDB : 다중 인덱싱가능, Map-Reduce 지원, C++ 기반 DB

3. Extensible Record Stores : 컬럼 지형의 데이터 베이스
– BigTable : 구글의 구조화된 데이터 관리, C++기반, B-trees
– HBase : Java 기반 파일 시스템, B-trees, BigTable과 유사한 Hadoop 기반
– HyperTable : 오픈소스 칼럼을 기반으로 하는 데이터베이스, 지역 검색 엔진인 지벤츠에 적용됨, BigTable과 유사
– Cassandra : Twitter에서 MySQL + memcached에서 Cassandra 전환중, facebook에서는 검색에서 활용중, 그외 Digg 사용중, apache incubate된 상태임, Java기반

4. Relational Databases : RDBMS
– MySQL Cluster : C++기반의 오픈 소스 관계형 데이터 베이스
– ScaleDB : C++기반,  MySQL에서 branch됨
– Drizzle :  C++기반, MySQL의 아류작
– VoltDB : Java 기반, 개발진행중임

각 데이터 저장장치별로 동시제어, Replication, 트랜젝션 모델, 완성도, 히트 등의 관점에서 비교를 해 놓아서 서비스 아키텍처 설계시 DB선택 및 설계에 도움을 받을 수 있을것 같네여.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.