DBMS (Database Management System)란?
DBMS(Database Management System, 데이터베이스 관리 시스템)는 데이터베이스를 생성, 관리, 운영할 수 있도록 도와주는 소프트웨어를 말한다. 쉽게 말해, 데이터를 효율적으로 저장하고, 수정하고, 조회할 수 있게 해주는 시스템이다.
RDBMS( Relational Database Management System ) 란?
R + DBMS 로 쉽게 말하자면 테이블 기반의 DBMS이다. 테이블(표) 형태로 저장하고, 관계(Relation)를 이용해 데이터를 관리하는 데이터베이스 시스템을 말한다.
RDBMS의 주요 특징
- 테이블 구조
- 데이터를 행(Row)과 열(Column)로 구성된 테이블(table) 형태로 저장함.
- 예: 고객 테이블(Customer), 주문 테이블(Order) 등
- 관계(Relation) 정의
- 각 테이블 간 외래 키(Foreign Key) 를 통해 관계를 맺음.
- 예: 고객 ID를 주문 테이블에서 참조하면, 고객 정보와 주문 정보를 연결할 수 있음.
- SQL(Structured Query Language) 사용
- 데이터를 삽입(INSERT), 조회(SELECT), 수정(UPDATE), 삭제(DELETE)하는 데 SQL을 사용함.
- ACID 특성 보장 (데이터 무결성과 신뢰성을 유지하기 위한 4가지 원칙)
- Atomicity(원자성): 트랜잭션이 모두 실행되거나 전혀 실행되지 않음 (실패 시 롤백).
- Consistency(일관성): 트랜잭션 실행 후에도 데이터의 무결성이 유지됨.
- Isolation(고립성): 여러 트랜잭션이 동시에 실행되어도 서로 영향을 주지 않음.
- Durability(지속성): 시스템 장애 발생 후에도 트랜잭션이 완료된 데이터는 보존됨.
- 정규화(Normalization) 지원
- 데이터 중복을 최소화하고 저장 효율성을 높이는 데이터 설계 방법을 제공함.
RDBMS의 대표적인 시스템
MySQL | 오픈소스, 가볍고 빠름 (웹 서비스에 많이 사용됨) |
PostgreSQL | 강력한 트랜잭션 처리 및 확장 기능 지원 (ERP, 금융 시스템에서 많이 사용됨) |
Oracle DB | 기업용 데이터베이스, 높은 안정성과 성능 제공 |
SQL Server | Microsoft의 관계형 데이터베이스, 윈도우 환경에서 강점 |
NOSQL란?
NoSQL은 관계형 데이터베이스의 제약을 벗어난 비관계형 데이터베이스 시스템을 일컫는다. 정형 데이터 뿐만 아니라 다양한 형태의 데이터를 저장하고 관리할 수 있다.
BASE의 속성
NoSQL은 RDBMS의 ACID 속성과 다르게 BASE라는 속성을 따릅니다. BASE는 NoSQL 시스템에서 유연한 성능, 확장성, 가용성을 제공하기 위한 모델로 사용됩니다.
BA (Basically Available) | 시스템은 항상 응답할 수 있도록 기본적으로 사용 가능해야 한다는 원칙. |
S (Soft state) | 데이터베이스 상태는 일시적으로 불일치할 수 있으며, 시간이 지나면서 최종적으로 일관성을 맞춘다. |
E (Eventual consistency) | 최종 일관성을 보장하며, 시스템의 모든 복제본이 시간이 지나면 결국 일관성 있게 된다. |
BASE와 ACID 비교
속성 | ACID (관계형 데이터베이스) | BASE (NoSQL) |
A (Atomicity) | 트랜잭션은 완전하게 실행되거나 전혀 실행되지 않음 | 없음 (일부 데이터는 실패할 수 있음) |
C (Consistency) | 데이터베이스는 항상 일관성 있는 상태를 유지 | 최종 일관성(시간이 지나면 일관성 회복) |
I (Isolation) | 트랜잭션은 서로 독립적으로 실행됨 | 트랜잭션 격리 수준이 낮을 수 있음 |
D (Durability) | 트랜잭션은 커밋 후에도 영구적으로 저장됨 | 시스템 장애 후에도 데이터 복구는 가능하지만, 일부 데이터는 유실될 수 있음 |
NoSQL의 주요 특징
- 유연한 데이터 모델
- 정형 데이터 뿐만 아니라 반정형, 비정형 데이터도 쉽게 저장 가능.
- 데이터의 스키마가 고정되지 않고 동적으로 변할 수 있음.
- 수평 확장(Scale-Out)
- 데이터가 급증해도 여러 대의 서버에 분산하여 처리함.
- 데이터베이스 성능 향상을 위해 수직 확장이 아닌 수평 확장을 사용.
- 비관계형 데이터 저장
- 데이터 간 관계를 정의할 필요 없이 문서, 키-값, 그래프 등 다양한 형식으로 데이터를 저장함.
- 예: 문서형( MongoDB), 키-값형(Redis), 그래프형(Neo4j) 등.
- 트랜잭션 처리 방식
- 궁극적 일관성 (BASE) 을 지원.
- RDBMS의 ACID 특성과 달리 일관성보다는 가용성, 성능을 중시하는 방식. (고가용성, 빠른 응답속도 등)
NoSQL의 주요 유형
- 문서형 데이터베이스 (Document-based)
- JSON, BSON 형식의 문서로 데이터를 저장.
- 예: MongoDB, CouchDB
- 키-값 데이터베이스 (Key-Value-based)
- 데이터를 키와 값의 쌍으로 저장.
- 예: Redis, DynamoDB
- 컬럼 패밀리 데이터베이스 (Column-family-based)
- 컬럼 패밀리라는 구조로 데이터를 저장.
- 예: Cassandra, HBase
- 그래프 데이터베이스 (Graph-based)
- 노드와 엣지로 이루어진 그래프 구조로 데이터를 저장.
- 예: Neo4j, ArangoDB
RDBMS vs NOSQL
구분 | RDBMS (관계형 데이터베이스) | NoSQL (비관계형 데이터베이스) |
데이터 구조 | 테이블(행과 열) 기반의 정형 데이터 | 문서(Document), 키-값(Key-Value), 컬럼(Column-Family), 그래프(Graph) 등 다양한 형식 |
스키마 | 고정된 스키마 (미리 정의된 테이블 구조) | 유연한 스키마 (필드 추가/삭제가 자유로움) |
확장성 | 수직 확장(Scale-up) 중심 (하드웨어의 성능을 높여 처리 능력을 증가시키는 방식 , 한계가 있고 비용이 많이 든다. ) |
수평 확장(Scale-out) 중심 (서버를 여러 대로 분산) |
데이터 일관성 | 강한 일관성 (ACID 지원) | 궁극적 일관성 (BASE 모델 적용) |
트랜잭션 | 다중 행 트랜잭션이 강력하게 지원됨 | 일부 NoSQL만 트랜잭션 지원 (MongoDB는 단일 문서 수준에서 지원) |
성능 | 복잡한 쿼리 처리에 강함 (JOIN, 정규화) | 대량의 데이터 처리 및 빠른 읽기/쓰기 성능 강점 |
사용 사례 | 금융, ERP, CRM 등 *데이터 정합성이 중요한 경우 | 빅데이터, IoT, SNS 등 대용량 데이터 처리 및 유연성이 중요한 경우 |
대표적인 DBMS | MySQL, PostgreSQL, Oracle, SQL Server | MongoDB, Cassandra, Redis, DynamoDB |
* 데이터 정합성이란?
데이터 정합성은 데이터가 정확하고 일관되며 신뢰할 수 있는 상태를 말한다. 쉽게 말해, 데이터가 저장된 형식이나 값에 오류가 없고, 시간이 지나도 변하지 않도록 유지되는 것을 말한다.
데이터 정합성의 4가지 유형
- 유효성 정합성 (Validity)
- 데이터가 정해진 규칙이나 제약조건을 만족하는지 확인하는 것.
- 예: 연령 데이터가 0 이상 120 이하로 입력되어야 한다는 조건.
- 일관성 정합성 (Consistency)
- 여러 시스템이나 데이터베이스에서 데이터를 일관되게 유지하는 것.
- 예: 사용자 정보가 서로 다른 시스템에서도 동일하게 저장되고 변경되어야 한다.
- 완전성 정합성 (Completeness)
- 필요한 모든 데이터가 누락 없이 존재하는지 확인하는 것.
- 예: 고객의 이름, 주소, 전화번호와 같은 필수 정보가 모두 채워져 있어야 한다.
- 신뢰성 정합성 (Reliability)
- 데이터가 정확하고 신뢰할 수 있게 유지되는 것.
- 예: 금융 거래에서 발생한 모든 거래 기록이 정확하게 기록되고 변조되지 않도록 보장하는 것.
'DB' 카테고리의 다른 글
트랜잭션 정리(개념/ 특성/ 상태/ 수행방법/ 격리수준/ 병행 제어) (4) | 2025.03.06 |
---|---|
데이터 사전(Data Dictionary) 이란? / 필요한 이유 (0) | 2025.02.24 |
PostgreSQL란? 프로세스 구조/ MySQL과 차이점 (1) | 2025.02.22 |
데드락(교착상태) 개념, 발생 조건과 해결 방법 (1) | 2025.02.12 |