[DataBase] NoSQL의 정의와 특징 그리고 NoSQL DB 와 관계형 DB의 차이점
NoSQL 이란?
단어 그 자체의 뜻을 보면 No + SQL로, SQL만을 사용하지 않는 데이터 베이스 관리 시스템(DBMS)을 지칭한다.
여러 유형의 데이터 베이스를 사용한다.
NoSQL은 데이터 베이스 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하며 질의한다.
데이터를 구성하는 방법으로는 리스트, 해시 테이블, 트리, 그래프 등의 다양한 방법이 있고 각각의 방식은 명확한 장단점이 존재한다.
NoSQL은 관계형 데이터베이스의 한계를 극복하고 다양한 형태의 데이터를 처리하기 위해 등장했다.
NoSQL 등장 배경
NoSQL이 등장하게 된 이유는 크게 두 가지로 볼 수 있다.
- 다양한 형태의 데이터 베이스가 중요해졌다.
- 관계형 데이터베이스(RDBS)는 테이블 형태로 정형화된 데이터를 다루기에는 적합하지만, 최신 애플리케이션에서는 반정형, 비정형 데이터도 중요해졌다.
- RDBS에 비해 NoSQL은 다양한 형태의 데이터를 다루기 때문에 더 유연하게 대처할 수 있다.
- 데이터 저장 단위가 기하급수적으로 증가하면서 데이터 분산 처리가 중요해졌다.
- NoSQL은 대규모의 데이터를 효과적으로 처리하고 확장하기 위한 목적으로 등장했다.
- NoSQL DB는 수평적 확장이 용이하며, 분산 데이터베이스로서 대규모의 트래픽과 데이터를 다룰 수 있다.
- NoSQL DB는 고정된 스키마가 없어서 다양한 형태의 데이터를 쉽게 저장하고 관리할 수 있다.
👉 데이터 분산과 확장을 용이하게 해 주며 유연한 구조 덕분에 여러 노드에 분산시켜 데이터를 저장하여도 데이터 조회 및 저장에 큰 이슈가 없다. - NoSQL은 데이터를 여러 노드에 걸쳐 분산시켜 저장하며, 단일 노드의 과부하를 줄이고 데이터의 병렬 처리를 향상한다.
- NoSQL DB는 고정된 스키마가 없어서 다양한 형태의 데이터를 쉽게 저장하고 관리할 수 있다.
NoSQL의 이점
- 유연성
- 엄격한 스키마 없이 훨씬 더 자유로운 형식으로 저장될 수 있다.(Schema-less 구조)
- 저장소에서 구조적, 반구조적, 비구조적 데이터 등 모든 형식의 데이터를 손쉽게 처리할 수 있다.
- 확장성
- 서버를 증설해 확장하는 대신 상업용 하드웨어를 사용해 확장할 수 있음, 서버확장에 용의 하다.
- 증가된 트래픽을 지원하고 다운타임 없이 수요를 충족시킬 수 있다.
- 고성능
- 데이터를 수집하여 이를 빠르고 안정적으로 제공할 수 있다. 즉, 대용량 데이터를 처리하는 성능이 뛰어나다.
- 가용성
- 여러 대의 백업 서버 구성이 가능해서 장애 발생 시에도 무중단 서비스가 가능하다.
NoSQL의 단점
- 낮은 일관성
- Key에 대한 입출력만 지원
- 데이터에 대한 규격화가 되어 있지 않음
- 데이터가 여러 컬렉션에 있을 경우 속도가 느림
- 데이터 중복에 따른 수정 작업의 번거로움
NoSQL의 주요 유형
- Key-Value
Redis, AWS DynamoDB, Riak - Document
MongoDB, Azure Cosmose DB, Couch DB, Mark Login, OrientDB - Graph
Neo4 j, Blazegraph, OrientDB - Wide-Column
Cassandra, HBase
NoSQL DB vs 관계형 DB
NoSQL 데이터 베이스 | 관계형 데이터베이스 | |
최적의 워크로드 | NoSQL 데이터베이스는 짧은 지연 시간의 애플리케이션을 포함한 수많은 데이터 액세스 패턴에 맞도록 설계되었습니다. NoSQL 검색 데이터베이스는 반구조화된 데이터에서 분석을 위해 설계되었습니다 | 관계형 데이터베이스는 일관성이 뛰어난 온라인 트랜잭션 프로세싱(OLTP) 애플리케이션을 위해 설계되었습니다. 온라인 분석 처리(OLAP)에도 적합합니다. |
데이터 모델 | NoSQL 데이터베이스는 키-값, 문서, 그래프, 열 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공합니다. | 관계형 모델은 데이터를 행과 열로 구성된 테이블로 정규화합니다. 스키마는 테이블, 행, 열, 인덱스, 테이블 간 관계, 기타 데이터베이스 요소를 정확하게 규정합니다. 데이터베이스는 테이블 사이의 관계에서 참조 무결성을 실현합니다. |
ACID 속성 | 대부분의 NoSQL 데이터베이스는 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화합니다. 그렇게 때문에 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량과 짧은 지연 시간을 위한 탁월한 선택이 됩니다. | 관계형 데이터베이스는 원자성, 일관성, 격리성 및 지속성(ACID)의 속성을 제공합니다.
|
성능 | 성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능입니다. | 성능은 일반적으로 디스크 하위 시스템에 따라 다릅니다. 최고 성능을 달성하기 위해서는 쿼리, 인덱스 및 테이블 구조를 자주 최적화해야 합니다. |
규모 조정 | NoSQL 데이터베이스는 일반적으로 분할이 가능합니다. 분산 아키텍처를 사용하여 처리량을 늘려 거의 무한한 규모에서 일관된 성능을 제공함으로써 액세스 패턴을 스케일 아웃할 수 있기 때문입니다. | 관계형 데이터베이스는 일반적으로 하드웨어의 계산 성능을 높여 스케일 업되거나 읽기 전용 워크로드의 복제물을 추가하여 스케일 아웃됩니다. |
API | 앱 개발자는 객체 기반 API를 통해 데이터 구조를 쉽게 저장 및 검색할 수 있습니다. 파티션 키를 사용하면 앱에서 키-값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반구조화된 문서를 검색할 수 있습니다. | 데이터 저장 및 검색 요청은 구조화된 쿼리 언어(SQL)를 준수하는 쿼리를 사용하여 전달됩니다. 쿼리는 관계형 데이터베이스에 의해 구문 분석되고 실행됩니다. |
출처 : https://aws.amazon.com/ko/nosql/
언제 NoSQL DB를 선택해야 할까?
- 빠르고 반복적인 개발을 가능하게 하는 유연한 스키마가 필요한 경우
- 강력한 데이터 일관성과 데이터 테이블 간의 관계 유지(참조 무결서)보다 성능이 우선시되는 경우
- 서버 간 샤딩을 통해 수평 확장이 필요한 경우
- 반구조화된 데이터와 구조화되지 않은 데이터를 사용해야 하는 경우
NoSQL DBMS 정리(진행 중)
[DB] MongoDB란?
slowprogramer.tistory.com
[DB]Amazon DynamoDB란?
slowprogramer.tistory.com
[DB] Redis란?
slowprogramer.tistory.com
[DB] Neoj4란?
slowprogramer.tistory.com
참고 사이트
NoSQL
단어 뜻 그 자체를 따지자면 "Not only SQL "로, SQL만을 사용하지 않는 데이터베이스 관리 시스템(
namu.wiki
개발자가 NoSQL 데이터베이스를 선호하는 이유
NoSQL 데이터베이스는 변화하는 요구사항에 빠르게 적응하기에 애자일 개발 방법론에 자연스럽게 부합합니다.
www.oracle.com
NoSQL이란 무엇인가요? | 비관계형 데이터베이스, 유연한 스키마 데이터 모델 | AWS
aws.amazon.com
RDBMS의 한계와 NoSQL을 사용하는 이유 (3) NoSQL 장단점, 특징
DB RDBMS의 한계와 NoSQL을 사용하는 이유 (3) NoSQL 장단점, 특징 NoSQL(Not Only SQL, 비-관계형 데이터베이스) RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장했다. 정해진 스키마가 없어 자유
sujl95.tistory.com