50 lines
2.7 KiB
Markdown
50 lines
2.7 KiB
Markdown
---
|
|
id: RDBMS 20260420
|
|
created: 2026-04-20 08:43
|
|
tags:
|
|
aliases:
|
|
---
|
|
## 💡 생각
|
|
데이터간의 관계를 고민하고 관계를 이용해서 중복된 데이터가 들어가는것을 최소화하는 DB를 일컫는다고 보면 된다. 왜냐하면 데이터 정합성은 사실 RDBMS든 NoSQL이든 무조건 지켜주는게 좋은 부분이니까 이걸 RDBMS와 NoSQL의 차이다 라고 하기에는 좀 과하다고 생각된다.
|
|
|
|
---
|
|
## 📑 개념
|
|
관계형 DB의 가장 큰 특징은 데이터를 **Table(표)** 형태로 관리하고, 테이블 간의 **Relation(관계)** 을 정의한다는 점입니다.
|
|
|
|
## 📌 상세
|
|
- **스키마(Schema):** 데이터의 구조와 제약 조건을 정의한 설계도입니다.
|
|
|
|
- **기본키(PK)와 외래키(FK):** 테이블 간의 연결 고리이자 데이터의 유일성을 보장하는 핵심 장치입니다.
|
|
|
|
- **무결성(Integrity):** 데이터가 정확하고 일관되게 유지되도록 하는 규칙들입니다.
|
|
|
|
|
|
[[ACID]] [[트랜잭션(Transaction)|트렌젝션]]을 지킴으로 인해 DB에서 가장 중요한 덕목인 [[데이터 정합성(Data Consistency)]] 지키는데 특화됨.
|
|
![[ACID#📌 상세]]
|
|
|
|
### 성능 최적화: 인덱스와 정규화
|
|
|
|
실무에서 가장 많이 고민하게 되는 부분입니다.
|
|
|
|
- **정규화(Normalization):** 데이터 중복을 최소화하고 구조를 체계화하는 과정입니다. (1NF, 2NF, 3NF 등)
|
|
|
|
- **인덱스(Index):** 책의 색인처럼 데이터를 빠르게 찾기 위한 구조입니다. B-Tree 구조가 대표적이죠.
|
|
|
|
- **실행 계획(Execution Plan):** 작성한 SQL이 내부적으로 어떻게 실행되는지 분석하여 병목을 찾아내는 도구입니다.
|
|
|
|
---
|
|
|
|
## 주의
|
|
> [!warning] 하지만 데이터 정합성의 경우 RDBMS의 고유한 특징이라고 하기엔 무리가 있다.
|
|
|
|
왜냐하면 DB라면 데이터 정합성을 지켜야하는게 당연하기 때문이다.
|
|
( 얼마나 정합성을 강하게 지켜서 성능에서 손해를 보느냐, 약간 덜 엄격하게 지키고 성능에서 이점을 얻느냐가 차라리 더 중요하다. )
|
|
|
|
## RDBMS의 본질
|
|
> [!note] RDBMS의 본질: "구조적 설계를 통한 중복 제어"
|
|
|
|
- **정규화(Normalization):** 데이터 간의 관계를 분석해 원자 단위로 쪼개고, 중복을 원천 차단하는 프로세스입니다.
|
|
|
|
- **무결성 제약 조건:** DB 엔진 차원에서 외래키(FK), 유니크(Unique) 제약 등을 통해 "중복되거나 잘못된 관계가 맺어지는 것"을 물리적으로 막습니다.
|
|
|
|
- **저장 효율성:** 중복을 최소화하기 때문에 저장 공간을 효율적으로 쓰고, 데이터 수정 시 한 곳만 고치면 되는 구조를 만듭니다. |