이전에 DB 포스팅에서 RDB와 NoSQL을 잠깐 이야기하며 NoSQL이 무엇인지 추후 올려드리겠다고 했었는데 지금 다루게 되었습니다.
[NoSQL]
- NoSQL이 무엇의 약자인지는 사람에 따라 NoSQL, Not Only SQL, Non-Relational Operational Database SQL로 엇갈리는 의견들이 있습니다만, 현재 Not Only SQL로 풀어 설명하는 것이 다수를 차지하고 있다고 합니다.
이 말의 의미를 풀어보면, 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미합니다.
이 용어가 처음으로 등장한 것은 1998년 카를로 스트로찌(Carlo Strozzi)라는 엔지니어가 공개한 표준 SQL인터페이스를 채용하지 않은 자신의 경량 Open Source 관계형 데이터베이스를 NoSQL이라고 명명한 데서 유래했다고 합니다.
이후 2009년에는 요한 오스칼손(Johan Oskarsson)이라는 엔지니어가 Open Source기반의 분산데이터베이스 관련 행사를 준비하며 NoSQL이라는 용어를 사용했다고 합니다. 이때부터 기존의 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity)특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들이 등장했고, 이때부터 NoSQL이라는 용어가 보편적으로 사용되었습니다.
NoSQL이 등장한 이후에도 시장에서는 관계형 데이터베이스가 데이터를 처리하는 데 가장 최적의 시스템으로 받아들이고 있었습니다. 특히 기업의 ERP나, MIS시스템 등 데이터의 정확한 처리가 필수적인 시스템에서는 현재도 관계형 데이터베이스(RDB)를 사용하고 있습니다.
그 이유로는 무엇보다도 SQL이라고 하는 데이터를 처리해주는 언어의 편의성 때문에 NoSQL등 다른 DBMS는 많은 활용이 되지않고 있었습니다.
그러나 2000년대 후반으로 넘어오며 인터넷이 활성화되고, 소셜네트워크 서비스 등이 등장하며 관계형 데이터 또는 정형화된 데이터가 아닌 데이터, 즉 비정형 데이터라는 것을 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 DB들이 관심을 받게되었습니다. 해당 기술이 점점 발전하게 되며 NoSQL 데이터베이스가 각광받게 되었습니다.
- NoSQL의 특징
: NoSQL 데이터베이스는 기존의 관계형 데이터베이스보다 더 융통성있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공합니다. 이를 통해 NoSQL 데이터베이스는 단순 검색 및 추가작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에 있어서 매우 뛰어난 성능을 나타냅니다.
1) 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능이 없음
2) 데이터 조회를 위해 직접 프로그래밍하는 등의 비 SQL 인터페이스를 통한 데이터 접근
3) 대부분 여러 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
4) 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(Transaction, ACID 지원)이 보장되지 않음
5) 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의(Schemaless)
6) 데이터베이스의 중단없는 서비스와 자동 복구 기능 지원
7) 대다수의 제품이 Open Source로 제공
8) 대다수의 제품이 고 확장성, 고 가용성, 고 성능 특징을 가짐
정리하면, NoSQL은 초고용량 데이터 처리 등 성능에 특화된 목적을 위해 비 관계형 데이터 저장소에 비 구조적인 데이터를 저장하기 위한 분산저장 시스템이라고 볼 수 있습니다. 최근 각광받는 빅데이터에 대한 처리에 특화되었다고 보면 될 듯 합니다.
- NoSQL의 종류
저장되는 데이터의 구조(Data Model)에 따라 아래와 같이 나누어 볼 수 있습니다.
1) Key-Value DB(널리 쓰임)
: Key와 Value의 쌍으로 데이터가 저장되는 유형으로써 Amazon의 Dynamo Paper에서 유래되었습니다. Riak, Vodemort, Tokyo등의 제품이 알려져 있습니다.
2) Wide Columnar DB
: Big Table DB라고도 하며, Google의 BigTable Paper에서 유래되었습니다. Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당됩니다.
3) Document DB
: Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있습니다. Mongo DB, Cough DB가 이 종류에 해당됩니다.
4) Graph DB
: Euler & Graph Theory에서 유래한 DB입니다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있습니다. Neo4J 등의 제품이 있습니다.
일반적으로 웹과 관련하여 JSON, XML 데이터를 많이 접하게 되고, 또한 자료가 많이 나와있는 Mongo DB로 시작하는 분들이 많은 것 같아서 NoSQL을 처음 다루시는 분이라면 Mongo DB로 차근차근 시작해보는 것이 나을 것 같다는 개인적인 생각입니다.
'DB' 카테고리의 다른 글
DBMS의 필수 기능, 장/단점 (0) | 2016.04.24 |
---|---|
DataBase(데이터베이스)의 정의와 특징 (0) | 2016.04.24 |
참조 무결성이란? (0) | 2016.04.21 |
RDB, RDBMS 란? (0) | 2016.04.20 |
E-R(Entity-Relationship) Model 이란? (0) | 2016.04.19 |
WRITTEN BY