| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 크롤링
- ORM
- 모두의매블챌린지
- Test-Driven Development
- 오즈 코딩스쿨
- 초격자캠프
- 오즈코딩스쿨모두의매블챌린지
- git충돌
- cafepos
- 개발 방법론
- 오즈코딩스쿨후기
- sqlalchemy
- flask-sqlalchemy
- 개발부트캠프
- 오즈코딩스쿨#모두의매블챌린지
- 프로젝트
- TDD
- 다형성
- 우분투
- 명령어
- 리눅스
- flask
- 테스트 주도 개발
- mini-project
- 오즈코딩스쿨
- Today
- Total
codewithbeom 님의 블로그
NoSQL 방식의 데이터베이스의 구조와 특징 본문
NoSQL이란?
단어 뜻 자체로 해석하자면
"Not only SQL" or "Non-Relational Operational DataBASE"
=> SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS) 라는 뜻이다.
=> 여러 유형의 데이터베이스를 사용하는 비관계형 데이터베이스 프로그래밍언어.
기존의 RDBMS와 같은 관계형 데이터 모델을 지양하며 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화된 데이터베이스로 SCHEME없이 사용하거나 느슨하게 제공하는 저장소이다.
=> 빅데이터, 분산 시스템 환경에서 대용량의 데이터를 처리하는데 적합하다.
=> RDBMS는 일관성에 중점을 두었다면 NoSQL은 확장성에 중점을 두고 있다.

NoSQL의 특징
유연한 스키마를 통해 데이터 모델을 쉽게 변경할 수 있다 -> 요구사항에 빠른 대처 가능
수평적 확장성을 통해 데이터베이스의 크기를 쉽게 늘릴 수 있다 -> 대규모 데이터 효과적으로 처리 가능
대량의 데이를 빠르게 읽고 쓸 수 있도록 최적화 되어 있다 -> 높은 성능 제공
다양한 데이터 유형을 저장할 수 있다 -> 텍스트, 이미지, 비디오 등
NoSQL종류

✔️ Key-Value DB
키와 값으로 이루어진 가장 간단한 원칙에 충실한 데이터베이스
key-value가 하나의 묶음으로 저장되는 단순한 구조이기때문에 속도가 빠르고 분산 저장 시 용이히다.
(key는 고유값, value는 모든 데이터 타입이 허용)
이용 - > 성능향상을 위해 관계형 데이터베이스에서 데이터 캐싱
장바구니 같은 웹 애플리케이션에서 일시적인 속성추적
모바일 애플리케이션용 사용자 데이터 정보와 구성정보 저장
대용량 객체 저장
종류 - Redis, Riak, Oracle Berkely
✔️Wide-Column DB
대량의 데이터의 압축, 분산처리, 집계처리 (sum, count, avg등) 및 쿼리동작 속도 그리고 확장성이 뛰어나다.
종류 - Hbase, Cassandra, GoogleBigTable, Vertica
✔️Document Database
XML,JSON,BSON - 계층적트리 데이터 방식으로 저장한다.
데이터를 여러 서버에 분산 저장이 가능하고, 복제와 회복이 가능한 형태이다.
장애가 발생하더라도 대응에 유리하다.
이용 -> 로깅 시스템(로그의 중앙 집중화된 저장소로 사용하기에 적합)
인터넷 상거래(잦은 스키마 변경이 있어도 데이터베이스 변경에 따른 비용이 적고 잦은 변경에도 유연하게 대처할 수 있음)
sns 서비스 블로그나 sns서비스 데이터에 적합 스키마가 없기 때문에 다양한 컨텐츠를 취합하여 저장 관리 가능함
종류 - MongoDB, CouchDB, Azure CosmosDB
✔️Graph Database
데이터를 노드로 표현하며 녿 사이의 관계를 엣지로 표현 한다.
RDBMS보다 Performance가 좋고 유연하며 유지보수에 용이한 것이 특징이다.
이용 -> social networks, Network diagrams 등
종류 - Neo4j, Blazegraph, OrientDB, AgensGraph

레디스는 고성능 Key-Value 저장소로서 리스트, 해시, 셋, 정렬된 셋등 여러 형식의 자료구조를 지원하는 NoSQL입니다. 메모리에 상주하면서 RDBMS의 캐시 솔루션으로서 주로 사용되며 라인, 삼성전자, 네이버, Stackoverflow, 인스타그램 등 여러 IT대기업에서도 사용하는 검증된 오픈소스 솔루션입니다.
1. Key-Value Store
레디스는 key와 value가 매핑된 단순한 맵 데이터 저장소로서 데이터를 쉽고 편하게 읽고 쓸 수 있으며 특정 키 값에 값을 저장하는 구조로 되어있고 기본적인 PUT/GET Operation 을 지원한다.
2. 다양한 데이터 타입
레디스에 저장되는 Value가 단순한 객체가 아니라 자료 구조를 가지기 때문에 다른 nosql과 차이가 있다. 레디스가 지원하는 데이터 형은 일반적인 string 뿐만 아니라 그외에 다양한 집합형 데이터 구조를 지원한다.

- string
- set
- sorted set
- hashes
- list

MongoDB(몽고디비)
문서 지향 데이터 모델(Document DB)을 사용하는 데이터베이스이다. MongoDB는 정형 및 비정형 데이터를 보다 쉽고 빠르게 통합할 수 있는 장점이 있다. NoSQL 데이터베이스 중 가장 많이 쓰는 것 중 하나이다.
특징
1. Reliability (신뢰성)- 서버 장애에도 서비스는계속 동작
2. Scalability (확장성)- 데이터와 트래픽 증가에 따라 수평확장(scale-out) 가능
데이터를 샤딩하여 수평확장 할 수 있음
3. Flexibility (유연성)- 스키마가 없으므로 여러가지 형태의 데이터를 손쉽게 저장
4. Index Support (인덱스 지원)- 다양한 조건으로 빠른 데이터 검색

참고 자료