Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 개발공부
- Wil
- 코딩테스트
- Python
- CS
- Til
- 파이썬
- web
- ERD
- JWT
- 도커
- github
- 세션(Session)
- viewsets
- redis
- NoSQL
- Doker
- SQL
- flask
- 아티클 스터디
- docker
- 쿠키(cookie)
- 티스토리챌린지
- 오블완
- django
- 연습
- git
- 장고
- nginx
- 자료구조
Archives
- Today
- Total
SteadyDrills
RDBMS (관계형 데이터베이스 관리 시스템) 본문
241128
RDBMS (Relational Database Management System)
RDBMS는 관계형 데이터베이스 모델을 기반으로 데이터를 관리하는 시스템이다. 데이터는 테이블(표)로 표현되며, 각 테이블은 행(인스턴트)과 열(속성)으로 구성되며, SQL(Structured Query Language)을 사용하여 데이터를 정의, 조작 등을 할 수 있다.
특징
- 정형화된 데이터 구조
- 데이터는 테이블 기반으로 저장되며, 스키마(schema)를 미리 정의해야 한다.
- 데이터의 구조(열 이름, 데이터 타입 등)가 엄격하게 유지된다.
- SQL 사용
- 데이터 정의, 조회, 수정, 삭제를 위한 표준 언어인 SQL을 사용한다.
- 강력한 쿼리 기능(조인, 필터링, 집계 등)을 제공한다.
- ACID 속성 지원
- 트랜잭션의 신뢰성을 보장하는 ACID속성을 지원함다.
- 은행, 금융, 회계 등 높은 데이터 정확성과 안정성이 필요한 환경에 적합하다.
- 스케일 업(Scale-Up) 방식
- 서버의 하드웨어 성능(CPU, RAM, 저장소 등)을 확장하여 성능을 높인다.
- 수직적 확장 방식이 일반적이다.
개념정리
더보기
- 스키마(schema)
데이터베이스의 구조와 제약 조건을 정의 → 데이터베이스의 설계도 - 트랜잭션
데이터베이스에서 논리적으로 하나의 작업 단위로 묶인 일련의 작업 - ACID속성
- Atomicity (원자성)
- 트랜잭션 내의 모든 작업이 모두 완료되거나, 아무 것도 실행되지 않은 상태로 롤백되는 것을 보장.
- 예시 A 계좌에서 B 계좌로 돈을 송금하는 경우,
하나의 트랜잭션 == (A 계좌의 인출 & B계좌의 입금) → 모두 완료 or 모두 실패
- Consistency (일관성)
- 트랜잭션이 실행된 후에도 데이터베이스가 항상 일관된 상태를 유지.
- 예시
트랜잭션 전후에 데이터의 제약 조건(Primary Key, Foreign Key 등)이 항상 유효. → 통장 잔액이 음수가 되는 일이 없어야 함.
- Isolation (격리성)
- 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 서로 간섭하지 않도록 보장합니다.
- 하나의 상품을 두 구매자가 구매하려고 할때, 별개의 트랜잭션으로 충돌하지 않고, 하나의 트랜잭션이 끝나고 다음 트랜잭션이 영향을 미침 → 상품 재고 없음, 티켓팅 등.
- Durability (지속성)
- 트랜잭션이 성공적으로 완료되면, 그 결과가 영구적으로 저장됨. 시스템 장애가 발생하더라도 데이터는 손실되지 않음.
- 전원이 꺼지더라도 완료된 송금 트랜잭션은 데이터베이스에 저장되어 있어야 함.
- Atomicity (원자성)
장점
- 데이터 무결성과 일관성이 보장된다.
- 관계를 기반으로 한 복잡한 쿼리를 효율적으로 수행할 수 있다.
- 표준화된 SQL을 사용하므로 다양한 툴 및 프레임 워크와 호환성이 높다.
단점
- 스키마 변경의 어려움
- 테이블 스키마가 고정적이므로 데이터 모델 변경이 복잡하고 시간이 많이 걸린다.
- 대규모 데이터 처리의 한계
- 수직적 확장 방식이 한계에 도달하면 성능이 저하될 수 있다.
- 비정형 데이터 처리의 비효율성
- JSON, XML, 이미지 등 비정형 데이터를 저장하고 처리하는 데 비효율 적이다.
프로그램 예시
- MySQL, PostgreSQL, SQLite, Oracle Database 등
'CS' 카테고리의 다른 글
RDBMS와 NoSQL의 차이 (2) | 2024.12.02 |
---|---|
NoSQL (0) | 2024.11.29 |
클라이언트(Client)란? (0) | 2024.11.26 |
세션 인증과 JWT 인증의 차이 (1) | 2024.11.24 |
JWT(JSON Web Token) (0) | 2024.11.18 |