RDBMS / DBMS(NoSQL) 차이
RDBMS
Relational Database Management System
의 약자, 관계형 데이터 모델
- 모든 데이터를 2차원 테이블 형태로 표현.
- 각 테이블은 여러개의 행과 열로 구성되며 상호 연결될 수 있다.
기본키(primary key)
가 존재하므로 데이터 중복성이 방지된다. 따라서 정규화 프로세스를 제공함.
- 한 테이블의 행은 특정 열을 고유 키로 사용하여 다른 테이블의 행에 연결할 수 있다. 이 열은 테이블 간의 링크를 나타내며 테이블의 기본 키로 알려질 수 있다.
- 게시글에 관한 정보를 저장한
board
테이블과 댓글을 저장하는comments
테이블이 존재한다면, board
테이블의 column
중 하나인 article_num
은 기본키(primary key)
로 지정가능. 추가로 comments
테이블의 article_num
은 외래키(foreign key)
로 지정한다.
- 정규화를 통해 테이블끼리 중복되는 데이터는 최소화 해야함.
- 동일한 데이터가 중복 존재하면 데이터 수정시 문재 발생 확률이 높아지기 때문.
정규화
: DB설계시 중복을 최소화하면서 데이터 구조를 짜는 프로세스.
- 대량의 데이터 사용에 유리.
ACID
보장, 모든 트랜잭션이 완전하고 정의된 모든 규칙에 따라 일관성을 가지게 함으로써 오류, 시스템 충돌과 같은 문제가 없는지 확인할 수 있도록 함.
트랜잭션
: 특정 데이터를 삭제후 연이어 새로운 데이터를 입력 한다고 가정할 때, 삭제는 성공하고 입력은 실패 했을경우, 제대로 처리된게 아니니 오류가 발생전 상태로 되돌리는작업. 작업이 정상적으로 끝난후에 모든변경을 최종 적용함.
Atomicity(원자성)
: 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중지되는 것이 아니라 하나의 원자 단위로 수행되는 것을 보장하는 특징. 즉, 중간 단계까지 실행되는 것이 아니라 처음부터 끝까지 완전하게 실행되며 중간에서 실패하는 일이 없도록 함.
Consistency(일관성)
: 트랜잭션이 완료되면 언제나 일관된 DB 상태를 유지하는 것을 의미.
Isolation(독립성)
: 트랜잭션을 수행 할 시, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미, 다른 트랜잭션의 연산이 중간 단계의 데이터를 볼 수 없다.
Durability(지속성)
: 성공적인 트랜잭션은 영원히 반영되어야 함을 의미. 시스템 에러, DB 일관성 체크 등을 하더라도 유지되어야함을 의미.
- 다수의 사용자 지원.
DBMS (NoSQL, 비관계형)
Database Management System
의 약자
- 테이블이 서로 관련되지 않을 수 있다.
- 정규화를 수행하는 키가 없으므로 정규화가 수행되지 않음.
- 데이터를 파일로 저장, 탐색 모델 형식.
- 단일 사용자 지원.
- 소량의 데이터 사용에 유리.
- 정해진 스키마가 없다 (schemaless).
Schema(스키마)
: 데이터베이스의 구조(개체, 속성, 관계)와 제약 조건에 대한 정의로 메타 데이터 라고도 불린다.
- RDBMS는 스키마가 있고, NoSQL은 스키마가 없는게 가장 큰 차이이며, 정해진 스키마가 없을때 데이터 구조 변화가 자유롭고 데이터의 분산이 용이하지만 데이터 중복 및 누락이 발생하거나 데이터 변경시에 연산이 오래걸린다는 단점이 있다.