2015. 12. 28. 23:54

※ NoSQL 이란? - 'No! SQL' 이 아니라, 【Not Only SQL】의 약어이다.


  1. 관계형 데이터베이스의 장점과 단점

    * 장점
        - 데이터의 일관성을 보장한다. (transaction, atomicity)
        - 정규화를 전제로 하고 있기 때문에 데이터의 중복 가능성이 상대적으로 적다.
        - SQL 언어를 이용하고, JOIN, LIKE 등 다양한 검색 조건을 이용해 원하는 데이터를 손쉽게 찾을 수 있다.
        - 축적된 경험과 수십년간 검증된 솔루션(제품, out of box)들이 있다.
        - 상대적으로 설치,사용 및 관리가 용이하다.

    * 단점
        - 단시간에 대량의 데이터 입력(수십 GB byte 이상)이 발생할 경우, 느리다. (상대적으로 그렇다)
        - 데이터 구조 혹은 스키마(schema)이 일정(혹은 정적)하고, 변동이 많을 경우, 유지관리가 어렵다.
        - 누적된 데이터 크기가 커질수록 수행 성능이 급격히 낮아진다.
        - 분산, 대용량 시스템을 구축하기 불가능한 것은 아니나, 상대적으로 어렵다.

    1. NoSQL과 RDBMS의 관계

      - NoSQL은 관계형 데이터베이스(RDBMS)를 대체하기 위한 것이 아니다.
        (관계형 데이터베이스가 엄격/정밀하다면, NoSQL은 유연하지만 데이터 구조가 정교하지 않다.)
      - 관계형 데이터베이스는 데이터의 일관성 및 신뢰성이 매우 중요한 비즈니스(금융, 전자상거래 등)에서는 필수적이나,
        대량의 데이터를 고속으로 처리하거나, 비정형 데이터를 처리하는데 적합하지 않다.
      - NoSQL은 대규모/분산 환경에 보다 적합한 형태로 설계되어 있다.
      - 신뢰성을 (약간이나마) 희생할 수 있다면, NoSQL은 보다 적은 하드웨어 비용으로 고성능/고가용성을 달성할 수 있다.
      - RDBMS는 SQL, 정규화 등 표준화된 언어와 기술 표준이 있으나, NoSQL은 제품(오픈 소스 등) 종류가 다양하고,
        각각의 기능/성능/특징이 매우 다양하기 때문에 용도에 맞는 솔루션을 선택하기가 까다롭다.
      - NoSQL은 발전(버전 업) 속도가 빠른 반면, 시장을 주도하는 솔루션 사업자가 명확하지 않다. (Do/Try It Yourself!)

      ▶ NoSQL과 RDBMS는 경쟁 관계가 아니라, 고유의 적합/적용 가능한 데이터/처리 영역이 있다. (일부 겹치는 부분도 있음) ◀

    2. NoSQL을 고려해야 하는 상황

      - 대량의 데이터를 수집/처리해야 할 경우
      - 데이터 구조 혹은 스키마가 일정하지 않을 것이라고 예상되는 경우
      - 보다 적은 비용으로 대용량 / 분산 처리를 하고 싶은 경우
      - 빠른 데이터 접근 속도를 보장 받고 싶은 경우.
      - 데이터의 무결성, 일관성을 최우선 조건으로 고려하지 않아도 되는 상황
      - 그리고, 가장 중요한 것은 직접 설치 및 검증을 수행할 수 있고 다양한 문제에 부딧치는 상황에 외부의 도움(기술지원 등) 없이 스스로 해결할 수 있는 역량과 의지를 가진 경우.

    3. NoSQL 분류[각주:1]

    휘발성 key-value
    스토어

    영속성 key-value 
    스토어

    문서형 데이터

    컬럼형 데이터

     memcached

    Flare 

    MongoDB

    Casandra 

     (Redis)

    (Redis) 

    CouchDB 

    HBase 

     

     

     

    HyperTable



    1. 빅데이터 시대를 위한 NoSQL 핵심 가이드 (로드북 출판사, Tatsuya Sasaki 저, 송은영 편역) 참조 [본문으로]
    Posted by 곽중선