DB – RDBMS VS NoSQL
-
DataBase
- 데이터를 구조화하여 체계적으로 저장한 데이터의 집합체
-
DBMS
- 사용자와 데이터베이스 사이의 상호작용을 도와 정보를 삽입, 삭제, 갱신할 수 있고 사용자의 권한 부여를 하는 등 데이터베이스를 관리하는 역할의 소프트웨어
RDBMS 특징
관계형 DBMS라 불리며 SQL을 통해 접근하여 스키마를 통해 데이터 구조를 저장하고 테이블에 데이터를 저장하는 소프트웨어를 말합니다.
-
SQL
- RDBMS의 데이터를 관리하기 위해 설계된 프로그래밍 언어
-
스키마 (Schema)
- 데이터베이스의 자료 구조로 표현 방법과 자료 간의 관계를 SQL 형식 언어로 정의한 구조

-
테이블 (Table)
- 데이터 저장 형태

NoSQL 특징
NoSQL (Not Only SQL)은 의미 그대로 SQL이 아닌 다른 저장 기술을 의미합니다.
SQL를 통한 접근 방식을 취하는 RDBMS의 반대에 속하는 여러 방식들이라고 볼 수 있습니다.
-
Key-Value
- 데이터 타입이 제목과 같이 Key-Value 구조로 단순한 형태로 보입니다.
Key와 Value는 1:1 관계이며 Key를 통해 Value에 접근하는 방식입니다.
Value는 다양한 형태의 데이터를 저장할 수 있습니다. - 대표 제품
- Redis, Amazon Dynamo DB
- 데이터 타입이 제목과 같이 Key-Value 구조로 단순한 형태로 보입니다.

-
Document
- 데이터 타입이 구조화된 데이터 (JSON, XML, YAML) 형태로 Key-Value의 계층 구조 표현이 가능하고 추가적인 기능이 다양하지만 그만큼 사용이 번거로운 점이 있습니다.
- 대표 제품
- CoucbDB, CouchBase, Mongodb

-
Wide Column
- Key 안에서 Key(Column)-Value로 저장하는 형태이며 Key 안에서 Colume을 결정합니다.
RDBMS의 경우 하나의 Column을 추가하면 모든 row에 저장되지만 이 경우 Key 별로 별도의 MiddleColumn을 가질 수 있어 매우 유연한 형태입니다.
- 대표 제품
- HBase, Hypertable, Cassandra
- Key 안에서 Key(Column)-Value로 저장하는 형태이며 Key 안에서 Colume을 결정합니다.

- 그 외 저장 방식
- Graph
- Full Text Search Engins
SQL과 NoSQL 비교
| 기준 | SQL | NoSQL |
|---|---|---|
| SELECT, INSERT 성능 | 느림 | 빠름 |
| UPDATE 성능 | 빠름 | 느림 |
| JOIN 지원 | 지원 | 미지원 |
| 복잡도 | 복잡함 | 단순함 |
| 데이터 규격화 | 명확 | 불명확 |
| 확장성 | 수직적 | 유연함 |
| 신뢰도 | 높음 | 비교적 낮음 |
| 데이터 타입 | Table | Key-value, document, graph, wide-column |
| 무결성 이론 | ACID | CAP, BASE |
무결성 이론
-
ACID
- 트랜잭션의 안정적인 수행을 보장하기 위해 갖춰야하는 특성에 대한 이론
-
Atomicity (원자성)
- 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것
-
Consistency (일관성)
- 모든 요청은 항상 최신의 동일한 데이터를 보장하는 것
-
Isolation (격리성)
- 트랜잭션 간의 영향을 주지 않도록 보장하는 것
-
Durability (영속성)
- 한번 적용된 내용은 변하지 않고 지속 반영되도록 보장하는 것
-
CAP
- 분산 시스템이 CAP 중 3가지를 다 만족하지 못하고 2가지만 만족할 수 있다는 이론
-
Consistency
- 모든 요청은 항상 최신의 동일한 데이터를 보장하는 것
-
Availability
- 특정 DB가 장애가 발생해도 서비스 동작을 보장하는 것
-
Partitions Tolerance
- 물리적인 분할로 통신에 장애가 발생해도 시스템 동작을 보장하는 것
-
BASE
-
Basically Available
- 분산 시스템으로서 서버에 장애가 발생해도 (백업 서버로) 언제든 데이터 접근을 보장하는 것
-
Soft state
- 특정 시점에 일관성이 보장되지 않는 것
- 스키마가 없기 때문에 불일치한 데이터가 저장될 수 있다는 말
-
Eventual consistency (결과적 일관성)
- 일시적으로 일관성이 보장되지 않더라도 최신 데이터로 덮어씌여지므로서 결과적으로 일관성을 보장하는 것
-
Basically Available
댓글 한 개
핑백 :