본문 바로가기
DataBase/NoSQL

[NoSQL]NoSQL(Not Only SQL) 종류와 특징 간단히 정리

by 스파이디웹 2020. 10. 8.
728x90

●NoSQL 특징

-전통적인 관계형 데이터베이스보다 덜 제한적

-일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 메커니즘 제공

-디자인의 단순화, 수평적 확장성 추구

-단순 검색 및 추가 작업을 위한 매우 최적화된 키값 저장 공간으로, Latency와 throughput과 관련하여 상당한 성능 이익 제공

-빅데이터와 실시간 웹 애플리케이션용

 

●NoSQL 종류

-key value stores(KVS)

Memcached,Redis,Dynamo,Disk Based

 

-ordered KVS

NMDB,luxio,Memcachedb

 

-column oriented store

BigTable,Hbase,cassandra,HyperTable,Azure TS

 

-Document-Oriented store)

CouchDB,MongoDB,Lotus Domino,ThruDB

 

-Graph Database

Neo4j,FlockDB,InfiniteGraph


●MongoDB

-데이터를 JSON의 2진 버전인 BSON을 사용하여 문서에 데이터 저장

 

-웹 응용 프로그램과 인터넷기반 서비스를 위해 설계

 

-읽기/쓰기 효율을 높임과 동시에 자동으로 장애조치를 수행하고 확장이 쉬움

 

-C++,C#,GO 언어로 개발


●Apache CouchDB

-스키마가 필요없는 document저장

 

-Erlang 언어로 개발

 

-JSON 포맷으로 데이터 교환

 

-CouchDB 설치시 웹서버가 같이 설치되어 client와 HTTP로 통신하고 Data(Document)는 JSON으로 주고 받음


●Redis

-인메모리 기반의 “키-값” 구조 데이터 관리 시스템,모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비 관계형 데이터베이스

 

-크게 5가지< String, Set, Sorted Set, Hash, List >의 데이터 형식을 지원

 

-처리속도가 빠르다. 디스크와 메모리에 저장되는데도 memcached랑 차이가 없다.

 

-데이터는 메모리와 디스크에 저장되서, 데이터 복구가 가능하다.

 

-만료일을 지정해서 만료시 데이터는 캐시처럼 영원히 사라진다.

 

-저장소 메모리 재사용 없음. 명시적으로만 데이터 제거 가능

 

-서버측 복제를 지원하고,샤딩을 지원한다.

 

-리스트,배열과 같은 데이터 처리에 유용하다.


●Memcached

-인 메모리 키 -값 캐시

 

-String만 지원한다.

 

-처리속도가 빠르다. 메모리에만 저장된다.

 

-프로세스가 죽거나 장비를 끄게 되면 데이터가 복구가 안된다.

 

-만료일을 지정해서 만료시 데이터는 캐시처럼 영원히 사라진다.

 

-저장소 메모리를 재사용한다. 만료전에도 더 이상 데이터를 넣을 메모리가 없으면 LRU 알고리즘을 따라 데이터는 사라져 버린다.


●Amazon DynamoDB

-배포가 단순하고 신속함

 

-확장이 단순하고 신속함-수백만 IOPS(Input/Output Operations Per Second)

 

-데이터는 자동으로 복제되어 있음

 

-빠르고 일관된 응답시간

 

-보조 인덱스를 통한 빠른 조회

 

-사용한만큼 지불해야됨-저장소 및 프로비저닝 처리된 용량

 

-자동으로 AWS의 Region별로 데이터를 가용영역 3곳에 보통 복제해서 저장

-가용 영역 중에 하나가 장애가 발생하여 정지하더라도 DB를 정상적으로 사용이 가능

 

-높은 가용성과 지속성을 제공하기때문에 사용자가 따로 데이터를 백업할 필요가 전혀 없음

 

-Key-Value Store(Hash 기반)

 

-용량이 제한없는 storage

 

-데이터 형식 지원

Key-Value
  - String : S

  - Number : N

  - NumberSet : NS
  - StringSet : SS

  - Binary : B

  - BinarySet : BS

Document
  - Map : M // Map을 잘 조합하면 json처럼 사용 가능

  - List : L

  - Null : NULL
  - Boolean : BOOL


●Google BigTable

 

  • 수백 petabytes 까지 스케일 가능
  • 고가용성
  • 리플리케이션 기능
  • 전송중 또는 휴지중의 데이터 암호화
  • Fully managed
  • Hadoop 에코시스템과의 통합
  • 금융, IoT, 시계열 및 마케팅 데이터에 적합

●Apache Hbase

-Hadoop 플랫폼을 위한 구글의 BigTable을 본보기로 자바를 기반으로 만들어진 데이터 비관계형 분산 데이터 베이스이다.

 

-하둡의 분산 파일 시스템인 HDFS에서 동작하기 때문에 가용성 및 확장성을 그대로 이용할 수 있다.

 

-구글의 BigTable 논문에 설명된 Bloom필터 기능을 제공하며 자바를 기반으로 만들어져 자바 API, REST, Avro, Thrift를 통해 접근 가능

 

- 선형 확장성을 가짐

 

- 읽기와 쓰기의 일관성 제공

 

- Hadoop 시스템과 연계하기 편리 source와 destination으로 사용 가능

 

- 클러스터를 통한 데이터 복제로 장애 극복(fail over)가능

 

-대용량의 데이터를 안정적으로 다루는데 효과적

중앙의 전체 분산 시스템을 통제하는 마스터를 두고 전체 데이터의 일관성을 관리하여 복제 데이터 사이의 일관성을 보장

 

-대량의 데이터 분석 처리 지원에 적합

   HDFS, mapreduce등과 함께 사용하기에 최적화

 

-region 서버를 추가하면 확장 및 성능을 유지할 수 있음


●Apache Cassandra

데이터모델

  • Key space
  • Table
  • Row
  • column name : column value
    • SET, LIST, MAP 도 칼럼에 저장 가능

-Column-family(Wide-Column) key-value store

 

-CQL(Cassnadra Query Language) - SQL과 비슷한 쿼리 인터페이스

 

-gossip 프로토콜을 이용한 ring 구조

 

-마스터 없이 동작,sharding지원

 

-replication 복제 지원

 

-Distributed Muliple machines 에서 작동 가능하도록 최적화

 

-Decentralized : 모든 노드가 동등하다

 

-Elastic Scalability (탄력적 확장성)

 

-High Availability and Fault Tolerance

 

-High PerformanceHigh Performance

 

-Tunable Consistency

 

(참고)

  • Cassandra : Key-space > Table > Row > Column name : Column value
  • Mongodb : db > collection > document > key:value
  • RDBMS : DB > Table > row > column
  • elasticsearch : index > type> document > key : value

 

 

728x90

댓글