●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
'DataBase > NoSQL' 카테고리의 다른 글
[NoSQL] MongoDB capped collection, TTL collection (0) | 2021.01.19 |
---|---|
[NoSQL] python에서 MongoDB연동시키기 (0) | 2021.01.14 |
[NOSQL] MongoDB Shell(명령어)로 CSV, JSON import 해보기 (0) | 2021.01.11 |
[NOSQL] MongoDB의 역할 및 활용 사례 (0) | 2021.01.08 |
[NOSQL]MongoDB 기본 명령어 (1) | 2021.01.07 |
댓글