NoSQL 이란

 NoSQL은 "Not Only SQL" 이라고도 불린다. 우리가 익숙하게 사용하고있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발되었고 대용량의 로그 처리나 Write가 많은 경우에 사용되지만, 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.

NoSQL 등장 배경

빅 데이터 시대를 맞이하여 서비스를 제공하는 시스템에서 많은 양의 데이터를 효율적으로 처리가 필요하게 되었다. 이로인해 데이터의 분산처리( 샤딩 ), 빠른 쓰기 및 데이터의 안정성 ( 복제 ) 즉, 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고, 분산 시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태의 구조다.

RDBMS와의 다른 점

  1. 스키마가 없다. 즉, 데이터 관계와 정해진 규격 ( table - column 의 정의 )이 없다.
  2. 관계정의가 없으니 Join이 불가능 하다. ( 하지만 reference와 같은 기능으로 비슷하게 구현은 가능하다. ) 
  3. 트랜잭션을 지원하지 않는다. 
  4. 분산처리 (수평적 확장)의 쉽게 제공한다. 
    ( 대부분의 NoSQL DB는 분산처리기능을 목적으로 나왔기 때문에 분산처리 기능을 자체 프레임워크에 포함하고 있다 )

트랜젝션과 JOIN 기능은 분산 시스템에서 효율적으로 제공하기 어렵기 때문에 제외 되었으며, 높은 확장성을 제공하는 아키텍처를 위한 결정이다. 


그리고 위의 내용들은 어느 것이 장점이다 단점이다 말하기는 힘들다. 이유는 용도에 따라 장단점이 달라지기 때문이고 NoSQL이 RDBMS의 대안은 아니라는 것이다. 

NoSQL 제품군

Key/Value Store

key로 value를 바로 찾을 수 있는 해시의 데이터 구조를 사용

Memcached, Redis 같은 캐시 솔루션

Column Oriented Store

RDBMS가 하 나의 Record 단위로 저장되는 Row Oriented Store라고 할 수 있으며, Column Oriented Store는 컬럼(Column)별 정보를 모아서 저장하는 형태

HBase, Cassandra 같은 솔루션

Document Oriented Store

데이터를 JSON 형태로 저장하는 구조

스키마를 바꾸기 쉬우며 MongoDB, CouchDB, Riak 등이 대표적인 솔루션 


'DB' 카테고리의 다른 글

[SQL] SELECT 결과 UPDATE  (0) 2016.11.18
[SQL] SQL VS CODE  (0) 2016.10.27
[SQL] Union과 Union all 차이  (0) 2016.10.12
[SQL] Joins  (0) 2016.08.24
[DB] DB Index 란?  (2) 2016.07.06
[DB] NoSQL이란?  (0) 2016.06.26

+ Random Posts