용어들의 관계
- RDB(관계형 데이터베이스)를 RDBMS(데이터베이스를 관리)로 생성하고 수정하고 관리한다.
- SQL은 RDBMS를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
- NoSQL(비관계형 데이터베이스)은 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 방식이다.
- RDBMS가 클라이언트/서버 환경에 맞는 데이터 저장 기술이라면, NoSQL은 클라우드 환경에 맞는 저장 기술이다.
RDB(Relational Database)
- RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.
- SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장할 수 있다.
- 스키마: 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것이다.
- 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체이다.
- 이러한 관계를 나타내기 위해 외래 키(foreing key)라는 것을 사용한다.
- 이러한 테이블간의 관계에서 외래 키를 이용한 테이블 간 조인(Join)이 가능하다는게 가장 큰 특징이다.
[회원 Table]
회원 번호(Primary Key) | 회원 이름 | 휴대폰 번호 |
---|---|---|
1111111 | 김희진 | 010-xxxx-xxxx |
2222222 | 김또깡 | 010-yyyy-yyyy |
[주문 Table]
주문 번호 (Primary Key) | 주문 회원 번호 (foreign key) | 주문 상품 |
---|---|---|
20200207xxxxxxxx | 1111111 | 컴퓨터 |
20200207yyyyyyy | 2222222 | 키보드 |
20200207zzzzzzz | 2222222 | 마우스 |
RDBMS(Relational Database Management System)
- 사용자의 요구에 따라 정보를 생성해 RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어이다.
SQL(Structured Query Language)
- 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
- 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다.
- SQL의 예시로는 MySQL, PostgreSQL, Oracle DB, DB2 등이 있다.
NoSQL(Not Only SQL)
- SQL을 사용하지 않는 데이터베이스 관리 시스템을 지칭하는 단어이다.
- RDB 형태의 관계형 데이터베이스가 아닌 다른 형태로 데이터를 저장한다.
- NoSQL의 예시로는 MongoDB, DynamoDB 등이 있다.
- NoSQL에서는 테이블 간 관계를 정의하지 않는다.
- 데이터 테이블은 그냥 하나의 테이블이며, 테이블간의 관계를 정의하지 않아 일반적으로 테이블 간 조인도 불가능하다.
- 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 스케일 아웃(Scale-Out)을 목표로 등장하였다.
NoSQL vs RDBMS
구분 | NoSQL | RDBMS |
---|---|---|
장단점 | 데이터 무결성, 정합성 보장하지 않음 비정형, 반정형 데이터 처리 |
데이터 무결성 보장(CA) 정규화된(정형) 데이터 처리 확장성 이슈, 분산환경 부적합 |
특징 | 약한 consistency schema가 없거나 변경이 용이 |
JOIN ACID |
use case | 대량 데이터 처리 빠른 성능 요구 |
중요한 트렌젝션처리(금융) 요구되는 경우 |