1. 개념
관계형 DB의 한계를 벗어나 빅데이터 처리를 위해 데이터의 읽기보다 쓰기에 중점을 둔 DB이다. 수평적 확장이 가능하며, 다수의 서버들에 데이터 복제 및 분산저장이 가능한 DB이다. (Not Only SQL의 약자)
2. 특징
특징 | 설명 |
스키마 리스 (Schema-less) |
• 데이터 모델링을 위한 고정된 데이터 스키마 없이 키(key)값을 이용해 다양한 형태의 데이터 저장과 접근이 가능한 기능을 이용 • 데이터를 저장하는 방식은 컬럼(column), 값(value), 문서(document), 그래프(graph)로 4가지로 나뉨 |
캐싱 (Caching) |
• 대규모 질의에도 고성능 응답속도를 제공할 수 있는 메모리 기반의 캐싱 기술 적용이 매우 중요하고, 개발 및 운영에서도 일관되게 적용할 수 있는 구조 |
탄력성 (Elasticity) |
• 시스템의 일부 장애에도 불구하고 시스템에 접근하는 클라이언트, 응용시스템의 다운타임이 없도록 하는 동시에 대용량 데이터의 생성, 업데이트, 질의에 대응할 수 있도록 시스템 규모와 성능 확장이 용이하고 입출력의 부하 분산에도 용이한 구조를 갖춤 |
저렴한 클러스터 | • PC수준의 사용 하드웨어를 활용하여 다수의 노드를 구성하고, 수평적 확장과 데이터 복제 및 분산 저장이 가능 |
3. 종류
종류 | 설명 | 예시 | 제품 |
Key-Value | • 단순하고 빠른 get, put, delete 기능의 기본 DB • 메모리 기반에서 성능을 우선하는 시스템과 빅데이터를 저장・처리할 수 있는 방식 |
Redis, Dynamo |
|
Wide-Column | • 관계형 DB의 테이블에 대응되는 와이드-컬럼의 행으로 데이터를 저장하는 구조 | Cassandra, Hbase |
|
Document | • XML, JOIN 등 문서를 Key-Value의 value부분에 저장하는 구조 | MongoDB, CouchDB |
|
Graph | • RDB의 엔트리 속성을 노드로 표현하고, 관계를 Node간의 Edge로 표현하는 구조 | Neo4J, OrientDB |
4. 특징 (BASE)
- 관계형 DBMS의 ACID와 대조적으로 가용성과 성능을 중시하는 NoSQL의 특징 - 분산시스템
특징 | 설명 |
Basically Availiable (기본적인 가용성) |
• 다수의 실패에도 가용성을 보장, 다수의 스토리지에 복사본을 저장 (주 서버가 다운되더라도 백업 서버는 동작) • 부분적인 고장은 있을 수 있지만, 나머지는 사용 가능 |
Soft-state (부드러운 상태) |
• 저장소는 쓰기 일관성이 있을 필요가 없으며, 서로 다른 복제본이 항상 상호 일관성이 있을 필요도 없음 • 분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신함 |
Eventually consistent (최종적인 일관성) |
• 일시적으로 일관성이 깨지는 상태가 되더라도, 일정시간 후에는 일관성이 있는 상태가 되는 성질 • 저장소는 나중에 어떤 시점에서 일관성을 나타냄 |
5. BASE vs ACID 비교
속성 | BASE | ACID |
적용분야 | NoSQL | RDBMS |
일관성 측면 | 약한 일관성 | 강한 일관성 |
중점사항 | Availability | Commit |
시스템 측면 | 성능 | 데이터 무결성, 정합성 |
효율성 측면 | 쿼리 디자인이 중요 | 테이블 디자인이 중요 |
범위 | 시스템 전체 특성 | 트랜잭션에 한정 |
6. CAP 이론
- Consistency, Availability, Partition tolerance 3가지 특성을 모두 만족시킬 수는 없고, 2가지만 선택이 가능하다는 이론
- 경제학의 삼원불가능성(불가능의 삼각) 정리와 유사한 개념구조 (내용은 완전 다름)
'Computer Science > Database' 카테고리의 다른 글
[데이터베이스 핵심 요약] 8. 정규화(Normalization)와 함수적 종속성 (0) | 2022.11.13 |
---|---|
[데이터베이스 핵심 요약] 7. 데이터 무결성 (Data Integrity) (0) | 2022.11.12 |
[데이터베이스 핵심 요약] 5. JOIN 문 (0) | 2022.11.12 |
[데이터베이스 핵심 요약] 4. 트랜잭션(Transaction) (0) | 2022.11.11 |
[데이터베이스 핵심 요약] 3. DBMS 질의어 - DDL, DML, DCL (0) | 2022.11.11 |