NoSQL (Non SQL or Not only SQL)
NoSQL databases (aka "not only SQL") are non tabular, and store data differently than relational tables. NoSQL databases come in a variety of types based on their data model. The main types are document, key-value, wide-column, and graph. They provide flexible schemas and scale easily with large amounts of data and high user loads.
출처 - mongoDB
NoSQL 데이터베이스는 테이블을 사용하는 관계형 데이터베이스와는 다른 형식으로 데이터를 저장하는
비관계형 데이터베이스이다.
이런 NoSQL 데이터베이스에는 여러 타입의 데이터 모델이 저장되는데,
대표적인 타입으로는 document, key-value, wide-comlumn, 그리고 graph 타입이 있다.
이들은 유연한 스키마를 제공하며, 많은 양의 데이터를 쉽게 확장 가능하게 한다.
NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여 응답솓고단 처리 효율 등에 있어서 매우 뛰어난 성능을 나타낸다.
관계형 데이터베이스와의 차이점은 아래와 같다.
- 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음.
- 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 액세스
- 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
- 관계형 데이터베이스에서는 지원하는 Data처리 완결성(Transaction ACID 지원) 미보장
- 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의 (Schema-less)
- 데이터베이스의 중단 없는 서비스와 자동 복구 기능지원
- 다수가 Open Source로 제공
- 확장성, 가용성, 높은 성능
NoSQL은 저장되는 데이터 모델에 따라 나누어 볼 수 있다.
1. Document databases
: 데이터를 JSON 객체와 비슷한 형태로 저장. 각 도큐먼트는 필드값과 벨류값의 쌍으로 이루어져있다.
이 벨류값은 string, number, boolean, array, object 등 다양한 형태로 존재할 수 있으며 코드를 작성하는 개발자가 사용하는 객체에 따라 구조가 정해진다.
필드값의 다양성과 쿼리의 강력한 기능성 덕분에 document DB는 일반 목적의 DB로 사용될 만큼 사용성이 우수하다.
데이터 사이즈 확장에 따른 조정을 위해 수평적인 확장이 가능하다.
대표적인 데이터베이스로 MongoDB가 있다. (+CouchDB)
MongoDB의 대표적인 특성
Document-Oriented Storage
: 모든 데이터가 JSON 형태로 저장되며, 스키마가 없다.
Full Index Support
: RDBMS에 뒤치지 않는 다양한 인덱싱을 제공한다.
Replication & High Availability
: 데이터 복제를 통해 가용성을 향상시킬 수 있다.
Auto-Sharing
: Primary key를 기반으로 여러 서버에 데이터를 나누는 scale-out이 가능하다.
Querying
: key 기반의 get, put 뿐만 아니라 다양한 종류의 쿼리들을 제공한다.
Fast In-Place Updates
: 고성능의 atomic operation을 지원한다.
MapReduce
: 맵리듀스를 지원한다.
GridFS
: 별도 스토리지 엔진을 통해 파일을 저장할 수 있다.
2. Key-value databases
: 각자의 항목이 키 값과 밸류 값을 가지는 데이터베이스이다. 밸류값은 일반적으로 키 값의 레퍼런싱을 통해서만 획득될 수 있기 때문에 쿼리가 굉장히 간단해진다.
방대한 양의 데이터를 저장하면서도 복잡한 쿼리를 실행시킬 필요가 없는 것이 가장 큰 장점이다.
대표적인 DB로 Radis와 DynanoDB가 있다.
3. Wide-column stores
: 와이드컬럼 스토어는 데이터를 행과 동적인 열을 가진 테이블에 저장한다.
와이드 컬럼 스토어의 행은 같은 열 (Attribute)를 가질 필요가 없으므로 관계형 데이터베이스로부터의 확장이 아주 유연하다.
대량 데이터를 축적하고, 쿼리 패턴이 예측 가능할시에 유용하게 쓰인다.
와이드컬럼 스토어는 IoT 데이터와 User 데이터를 저장할 때 일반적으로 사용되며, 대표적인 DB로 Cassandra와 HBase가 있다.
4. Graph databases
: 그래프 DB는 데이터를 노드와 간선에 저장한다. 노드는 일반적으로 사람, 장소, 물건에 대한 정보를 저장하며 간선은 노드 사이의 관계를 저장하는데에 쓰인다.
그래프 DB는 social network와 같이 관계들을 추적하며 패턴을 찾을 때 유용하게 쓰이며, 사기 추적과 추천 엔진에도 많이 쓰인다.
대표적인 DB로 Neo4j와 JanusGraph가 있다.
'CSE > Computer Science' 카테고리의 다른 글
소프트웨어 공학 디자인 패턴 정리 (0) | 2021.05.03 |
---|