728x90
관계형 데이터베이스를 사용하는 이유
- 데이터 무결성과 일관성 유지
- ACID 속성을 통해 데이터 무결성과 일관성을 유지
- 원자성 (Atomicity): 모든 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함을 보장
- 일관성 (Consistency): 트랜잭션이 데이터베이스를 일관된 상태로 유지하도록 보장
- 고립성 (Isolation): 동시에 실행되는 트랜잭션이 서로 간섭하지 않도록 보장
- 지속성 (Durability): 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저장됨을 보장
- 동시성 제어: MVCC(Multi-Version Concurrency Control)나 잠금(Locking) 메커니즘을 통해 다수의 사용자가 동시에 안전하게 데이터에 접근 가능
- ACID 속성을 통해 데이터 무결성과 일관성을 유지
- 데이터 중복 최소화
- 데이터베이스의 저장 공간을 절약하고 데이터 일관성을 유지
- 정규화: 데이터 중복을 줄이고, 테이블 간의 관계를 명확히 하여 데이터 일관성을 유지
- 데이터 무결성 제약: 기본 키, 외래 키, 고유 제약 등을 통해 데이터 무결성을 보장
- 데이터베이스의 저장 공간을 절약하고 데이터 일관성을 유지
- 강력한 쿼리 및 성능 최적화 기능
- SQL(Structured Query Language)을 사용하여 복잡한 쿼리와 데이터 조작을 쉽게 수행
- *인덱스(Index)**를 통해 데이터 검색 속도를 향상
- B-Tree 인덱스, 해시 인덱스 등 다양한 구조 지원
- *뷰(View)**를 사용해 특정 데이터만 제공하거나 복잡한 쿼리를 단순화
- *스토어드 프로시저(Stored Procedure)**와 **트리거(Trigger)**를 통해 서버 단 로직 처리 및 자동화 가능
- 데이터 보안
- 다양한 보안 기능을 제공하여 데이터 접근을 제어하고 보호
- 사용자 권한 관리: 사용자별 데이터 접근 권한을 설정
- 암호화: 데이터 암호화를 통해 저장 데이터 보호
- 감사 로그(Audit Log): 데이터 변경 이력을 추적하여 보안 사고 분석에 활용
- 다양한 보안 기능을 제공하여 데이터 접근을 제어하고 보호
- 트랜잭션 관리
- 여러 작업을 하나의 단위로 묶어 처리해 데이터 일관성을 유지
- 트랜잭션: 작업 중 일부 실패 시 전체 취소 가능
- 롤백(Rollback) 및 커밋(Commit) 기능 제공
- 여러 작업을 하나의 단위로 묶어 처리해 데이터 일관성을 유지
- 데이터 관계 모델링
- 엔터티 간의 관계를 명확히 모델링하여 복잡한 데이터 구조를 이해하고 관리
- ER 다이어그램: 엔터티-관계 다이어그램을 통해 데이터 모델을 시각적으로 표현
- 참조 무결성: 외래 키를 통해 데이터 간 관계 보장
- 엔터티 간의 관계를 명확히 모델링하여 복잡한 데이터 구조를 이해하고 관리
- 확장성 및 호환성
- 다양한 규모의 데이터베이스를 효율적으로 관리, 다양한 애플리케이션과 호환
- 확장성: 수직 확장(성능 향상) 가능, 필요 시 샤딩(Sharding)으로 수평 확장
- 호환성: 다양한 플랫폼 및 애플리케이션과 연동
- 다양한 규모의 데이터베이스를 효율적으로 관리, 다양한 애플리케이션과 호환
- NoSQL 대비 장점
- 스키마 기반 구조로 복잡한 관계 데이터 처리에 강점
- 다중 테이블 조인(Join) 및 복잡한 질의 처리에 유리
- 트랜잭션 처리와 데이터 무결성 보장에 더 적합
사용 시 고려해야 할 단점
- 수평 확장성 제한: 대규모 데이터 분산 저장 시 샤딩 구현 복잡
- 스키마 변경 비용: 운영 환경에서 테이블 구조 변경이 어렵고 위험할 수 있음
- 대규모 비정형 데이터 처리에는 비효율적
실제 활용 사례
- 전자상거래: 주문·결제·배송 정보를 일관성 있게 관리
- 금융 시스템: 계좌 이체, 결제 처리 시 ACID 보장
- 공공 행정: 주민 정보, 세금 기록 등 관계형 데이터 관리
- ER 다이어그램 예시
- 고객(Customer) ──< 주문(Order) >── 상품(Product)
참고자료
728x90
'웹프로그래밍 > 부트캠프 - Codeit' 카테고리의 다른 글
| [10주차] 위클리페이퍼 - 세션 기반 인증과 토큰 기반 인증의 차이점을 설명하세요. 어떤 상황에서 각각을 사용하면 좋을지 예를 들어 설명해 주세요. (0) | 2025.09.01 |
|---|---|
| [9주차] 위클리페이퍼 - 리액트만 사용할 때와 비교해 Next.js를 사용하는 이유에 대해 설명해 주세요. (2) | 2025.08.18 |
| [8주차] 위클리 페이퍼 - 웹 페이지 렌더링 방식 CSR, SSR, SSG 각각의 특징과 각 방식을 어떤 상황에 사용하면 좋을지 설명해 주세요. (2) | 2025.08.11 |
| [7주차] 위클리 페이퍼 - 데이터베이스 정규화에 대해 설명해주세요. (3) | 2025.08.08 |
| [7주차] 위클리 페이퍼 - 리액트 생명주기(life cycle)에 대해 설명해 주세요. (1) | 2025.08.08 |