본문으로 바로가기

NoSQL 종류

category Development/NoSQL 2015.02.03 11:18

 

NoSQL의 장점 및 단점
하드웨어 확장에 제약이 없다.
저렴한 비용으로 분산 병렬처리가 가능하다.
메모리 mapping기능을 통해 읽고 쓰기가 빠르다.
비정형 데이터구조로 설계비용이 감소한다.
join인 없는 구조로 simple하고 성능이 빠르다.
기존의 하드웨어를 활용하여 구축할 수 있다.

RDBMS를 사용한 많은 시간이 흐르면서 성능/관리면에서 안정기에 접어들었다면 NOSQL 아직 성장하고 있는 기술이기에 문제점도 존재하는 것이 사실이다.하지만 빅데이터를 처리할 수 있는 새로운 요구와 맞물려 빠른 속도로 성장 할 것으로 예측됨RDBMS가 클라이언트/서버환경에 맞는 데이터 저장기술이라면NOSQL은 클라우드 환경에 맞는 데이터 저장기술이다.NoSQL이 RDBMS를 완전 대체하기보다는 상호 보완적인으로발전할 것으로 예상된다

NoSQL의 종류
대략 150 가지 이상의 제품이 존재함.
하지만 실제 사용자층을 확보하고 있고 꾸준한 기술지원과 관리를 지원하는제품은
대략 6가지 정도가 있다.
MongoDB, Casandra, HBASE, CouchDB, Redis

NoSQL 제품 유형
1.key-value Database (Riak, Voldemort)
2.Document Database (mongoDB, CouchDB)
3.Big Table Database (Hbase, Casandra)
4.Graph Database (Sones,AllegroGraph)

 


카산드라는 구글의 BigTable 컬럼 기반의 데이타 모델과 FaceBook에서 만든 Dynamo의 분산 모델을 기반으로 하여 제작되어 Facebook에 의해 2008년에 아파치 오픈소스로 공개된 분산 데이타 베이스 입니다. 기존의 관계형 데이타 베이스와 다르게 SQL을 사용하지 않는 NoSQL의 제품중의 하나이며, 대용량의 데이타 트렌젝션에 대해서 고성능 처리가 가능한 시스템이다.(High-Scale). 노드를 추가함으로써 성능을 낮추지 않고 횡적으로 용량을 확장할 수 있다.얼마전에 트위터도 MySQL에서 Cassandra로 데이타베이스를 전환하였다고 한다.자바로 작성되었음에도 불구하고, 데이타베이스라는 명칭에 걸맞게 여러 프로그래밍 언어를 지원합니다. Ruby,Perl,Python,Scala,Java,PHP,C#
데이타간의 복잡한 관계 정의(Foreign Key)등이 필요없고, 대용량과 고성능 트렌젝션을 요구하는 SNS (Social Networking Service)에 많이 사용되고 있습니다. 성능이나 확장성과 안정성이 뛰어납니다.

 


HBase는 Cassandra와 마찬가지로 Bigtable의 영향을받은, 대량 데이터를 효율적으로 다루기 위한 목적으로 개발된 NoSQL 데이터베이스입니다. 대용량 데이터를 다루는 NoSQL 데이터베이스중 Cassandra와 함께 가장 많이 사용되고 있습니다만, Cassandra와는 구별되는 뚜렷한특징을 가지고 있습니다. Cassandra는 성능을 우선시 할 경우 데이터 일관성이 보장되지 않을 수있는데. 대량 데이터를우수한 성능으로 데이터 일관성을 보장하면서 다뤄야 할 때는바로 HBase입니다.

HBase는 중앙에 전체 분산 시스템을 통제하는 마스터를 두고 복제된 전체 데이터의 일관성을 관리 하기때문에 분산된 복제 데이터 사이의일관성을 보장하며 제약이 있지만 트랜잭셔성 처리도 지원이 가능합니다.대량 데이터 분석 및 처리를 위해 사용되는 Hadoop의 산하 프로젝트로 시작된 데이터베이스로 HDFS 및 MapReduce등과 함께 사용하기에최적화 되어 있습니다. MapReduce를 지원하는 다른 데이터베이스도 있지만 별도로 개발되었기 때문에 HBase처럼 HDFS를 사용하며 MapReduce의 기능을 적합하게 사용하는 예는 없습니다.대량 데이터를 분삭하여 의미 있는 값을 만드는 데 있어 널리 사용되고 있는 MapReduce와 함께 효율적으로 이용할 수 있다는 것이 큰
장점 입니다.

 


MongoDB는 10gen 사에서 개발된 높은 성능과 확장성을 가지고 있는 데이터베이스 입니다.NoSQL 데이터베이스에서는 문서형 데이터베이스로 분류. C언어로 개발되었다.
몽고DB는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 문서들을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다
<스키마 없이사용이 가장 큰 장점>
ㅁ스키마가 없기 때문에 프로그램 코드만 수정하면 됩니다.
ㅁ스키마와 프로그램 코드사이의정합성에 신경쓰지 않아도 된다.
ㅁ검색조건을 유연하게 지정할 수 있습니다(정규표현을 통한 검색부터 배열 데이터에 특정 값이 포함되어 있는지등)


Redis는 "REmote DIctionary System"의 약자로 메모리 기반의 Key/Value Store 이다.
Cassandra나 HBase와 같이 NoSQL DBMS로 분류되기도 하고, memcached와 같은 In memory 솔루션으로 분리되기도 한다.성능은 memcached에 버금가면서 다양한 데이타 구조체를 지원함으로써 Message Queue, Shared,memory, Remote Dictionary 용도로도 사용될 수 있으며, 이런 이유로 인스탄트그램, 네이버 재팬의 LINE 메신져 서비스, StackOverflow,Blizzard,digg 등 여러 소셜 서비스에 널리 사용되고 있다.
ㅁ처리 속도가 빠르다
ㅁ데이터가 메모리+Disk에 저장된다
ㅁ만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다.
ㅁ저장소 메모리 재사용 하지 않는다
ㅁ문자열, Set, Sorted Set, Hash, List등의 다양한 Data Type을 지원

'Development > NoSQL' 카테고리의 다른 글

BookSleeve - Pipelined .NET bindings for redis  (0) 2015.04.01
[MongoDB] Windows에 MongoDB 설치하기  (0) 2015.02.03
NoSQL 종류  (0) 2015.02.03

댓글을 달아 주세요