NoSQL이란

  • cloud에 적용되는 DB기술
  • 실시간 추천 서비스에서 거의 예외없이 사용되는 기술이다.

용어

  • NoSQL이란? Not Only SQL 의 약자라고 하며 관계형데이터베이스RDBMS가 갖는 특성 + 다른 특성을 부가적으로 지원한다.
  • RDBMS의 시스템을 보장하는 ACID특성을 제공하지 않지만 뛰어난 확장성이나 뛰어난 성능을 갖는 수많은 비관계형, 분산 데이터베이스를 가리킨다.

등장

  • 2000년 후반에 인터넷활성화와 SNS등장으로 관계형 데이터, 정형데이터가 아닌 비정형데이터를 보다 쉽게 담아서 저장하고 처리하는 구조를 가진 데이터베이스들에 대한 관심이 많아졌다.
  • 해당 기술이 점점발전하게 되는 시대적 배경
  • NoSQL 데이터베이스 인기가 많아졌다. 혹자는 NoSQL을 Modern web-scale databases라고 칭하기도 한다.

특징

  • 기존 RDBMS보다 융통성있는 데이터모델을 사용하고, 데이터 저장 검색에 특화된 메커니즘을 사용한다.
  • 단순작업이나 추가작업에 있어서는 매우 최적화된 키-값 저장기법을 사용하고 있으며
  • 응답속도나 처리속도에 있어서 매우 뛰어난 성능

관계형데이터베이스와의 비교

  • 관게형 모델이 아니므로 테이블 조인기능없음
  • 직접 프로그래밍하여 데이터에 엑세스
  • 대부분 어려대의 데이터베이스 서버를 묶어서(클러스터링 사용)하나의 데이터베이스를 구성한다.
  • 데이터의 스키마와 속성을 다양하게 수용 및 동적 정의
  • 데이터베이스의 중단없는 서비스와 자동복구기능을 지원
  • opensource인 데이터베이스가 다수이다.
  • 확장성, 가용성, 뛰어난 성능

정리

  • NoSQL은 초고용량 데이터처리 등 성능에 특화된 목적을 위해 비관계형 데이터 저장소에 비구조적인 데이터를 저장하기 위한 분산 저장 시스템이다.

NoSQL인 것들

데이터 구조에 따라

  • key - value DB형태
    • key와 value의 쌍으로 데이터를 저장
    • Riak, Vodemort, Tokyo
  • Wide Columnar Store형태
    • Big Table DB라고도 하며, google의 BigTable Paper에서 유래되었고 Key-value에서 발전된 형태의 Column Family데이터 모델을 사용하고 있다.
    • HBase, Cassandra, ScyllaDB
  • Document DB형태
    • JSON, XML과 같은 Collection 데이터모델구조를 채택
    • MongoDB, CoughDB
  • GraphDB
    • Nodes, Relationship, Key-value 데이터모델을 채택
    • Neo4J

위 데이터 구조에 따르면 어떤 NoSQL이 많아사용될까?

인기있는 NoSQL

  • MongoDB(Document), HBase(Wide Coumnar Store), Cassandra(Wide Columnar Store)

MongoDB

  • master-slave구조
  • 단순한 구성
  • document-oriented dataBase로 JSON의 이진버전인 BSON을 사용
  • c++로 개발되었음

HBase

  • Master-slave구조
  • 하둡분산파일시스템에서 동작하는 key-value 구조 분산 데이터베이스로 Google의 BigTable을 참고해서 Java로 개발되었다.
  • 복잡한구성으로 HBase + HDFS + ZOOKEEPER로 필수구성이다.

Cassandra

  • Decentrailized 구조로 모든 노드가 동듬
  • Amazon의 Dynamo의 특징인 Hash알고리즘을 사용해서 masterless 아키텍처로 모든 노드가 coordinator노드와 replica노드이다.
  • peer-to-peer 복제방식
  • replication factor 수만큼 shard를 복제함

profile
welcome

0개의 댓글