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를 복제함
