-
[Database] 관계형 데이터 모델링문과생이 이해하는 개발의 길 🚀 2025. 4. 1. 20:47
데이터 모델링이란?
데이터 베이스의 모델링은 비정형 데이터를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법이다.
데이터 모델링 절차
1) 요구사항
- 현실 세계의 대상 및 사용자의 요구 등을 정리 및 분석
2) 개념적 모델링: 중요 개념을 구분
- 핵심 Entity 도출
- 특징을 추출하여 개념적인 데이터 모델을 세우는 작업
3) 논리적 모델링
- 개념적 모델을 관계형 데이터베이스 자료 구조로 변환
4) 물리적 모델링
- 데이터베이스를 위한 상세 구조 설계
- DB 개체 정의
- 테이블 및 인덱스 설계
관계형 데이터베이스 (RDBMS)
관계형 데이터 모델을 기반으로 데이터를 저장, 관리하는 시스템
대표적인 관계형 데이터베이스 종류
DBMS 특징 MySQL 오픈소스, 웹 개발에 널리 사용됨 PostgreSQL 강력한 트랜잭션 지원, 확장성 우수 Oracle DB 대기업에서 사용, 보안과 성능 강점 관계형 데이터 모델은 SQL을 이용한 강력한 데이터 조회 및 조작이 가능하다.
그러나, 데이터 양이 급격히 증가하거나 유연성이 중요한 경우 NoSQL (MongoDB, Cassandra 등)을 사용할 수 있다.
ER 모델
세상의 모든 사물을 *개체(Entity)와 관계(Relationship)으로 표현
* 개체: 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물로 개체의 특성을 나타내는 속성(Attribute)
관계와 관계 유형
- 관계란 개체 사이의 연관성을 나타내는 개념
- 관계 유형이란 개체 간 연결 가능한 관계를 정의한 것
관계 대응수 (Cardinality)
기호 의미 설명 1:1 하나의 개체가 하나의 개체에 대응 1:N 하나의 개체각 여러 개체에 대응 N:1 여러 개체가 하나의 개체에 대응 M:N 여러 개체가 여러 개체에 대응 1. ER Diagram
예시: 직원이 특성 부서에 소속되어 있는 경우
2. IE (Information Engineering)표기법
직원은 반드시 부서에 소속되어야 하므로 비식별자적 관계 (점선 표시)로 이어지고, 부서에 직원이 없을 수도 있으므로 부서에 대응하는 직원에 o 표시를 넣어준다. 모든 직원은 부서에 포함되어야 하므로 |를 그려준다.
정규화 (Normalization)
데이터 중복을 줄이고 무결성을 보장하기 위한 과정으로, 일반적으로 1NF → 2NF → 3NF → BCNF 순서로 진행됨.
- 1NF (제1정규형): 모든 속성이 원자값(Atomic Value)이어야 함
- 2NF (제2정규형): 부분적 종속 제거 (PK에 완전 종속)
- 3NF (제3정규형): 이행적 종속 제거
SQL vs NoSQL?
SQL (Relational Database)
관계형 데이터베이스 시스템(RDBMS)에서 사용하는 언어입니다. 데이터는 테이블 형식으로 저장되며, 각 테이블은 행(레코드)과 열(필드)로 구성됩니다. SQL은 데이터를 쿼리하고 조작하는 데 사용되는 표준화된 언어입니다.
- 정형화된 스키마: 데이터베이스의 구조가 사전에 정의되어 있고, 테이블 간의 관계가 명확하게 설정됩니다.
- ACID 특성: SQL 데이터베이스는 트랜잭션의 신뢰성을 보장하기 위해 ACID(Atomicity, Consistency, Isolation, Durability) 특성을 따릅니다.
- 쿼리 언어: SQL을 사용하여 데이터를 삽입, 업데이트, 삭제, 조회할 수 있습니다.
- 확장성: 수평 확장이 어려운 경우가 많고, 수직 확장이 일반적입니다.
종류: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
NoSQL (Non-Relational Database)
NoSQL은 관계형 데이터베이스와는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스 시스템입니다. NoSQL은 비정형 데이터 또는 반정형 데이터를 저장하는 데 적합하며, 구조가 자유롭고 확장성이 뛰어납니다.
- 비정형 데이터: 데이터가 테이블 형식에 맞지 않고, JSON, BSON, XML 형식 등의 다양한 형태로 저장됩니다.
- 스키마리스(Schemaless): 데이터의 구조가 사전에 정의되지 않거나 유연하게 변경할 수 있습니다.
- 수평 확장성: NoSQL 데이터베이스는 데이터를 여러 서버에 분산하여 수평적으로 확장할 수 있어 대규모 데이터 처리에 유리합니다.
- CAP 이론: 일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition Tolerance) 중 두 가지를 선택해야 한다는 제약이 있습니다.
종류
- Document Store: 데이터를 문서 형식(JSON, BSON 등)으로 저장. 예: MongoDB, CouchDB
- Key-Value Store: 키와 값의 쌍으로 데이터를 저장. 예: Redis, Riak
- Column Family Store: 데이터를 열 단위로 저장. 예: Cassandra, HBase
- Graph Database: 노드와 엣지를 사용하여 데이터를 저장. 예: Neo4j, ArangoDB
ACID: ACID 트랜잭션 vs BASE 모델
ACID 트랜잭션
ACID는 관계형 데이터베이스에서 트랜잭션이 안전하게 처리되도록 보장하는 네 가지 특성입니다.
*트랜잭션: 데이터베이스의 일관된 상태를 유지하도록 하는 최소한의 요구 사항을 정의합니다.
ACID의 4가지 특성:
- Atomicity (원자성):
- 트랜잭션은 전체로 실행되거나 전혀 실행되지 않음. 즉, 트랜잭션 중 일부가 실패하면 모든 변경 사항이 취소되고, 이전 상태로 돌아갑니다. 트랜잭션이 완료되면 그 변경 사항은 영구적으로 데이터베이스에 반영됩니다.
- 예: 은행 송금에서 한쪽 계좌에서 돈이 빠져나가면, 다른 계좌에 돈이 입금되지 않으면 안 되므로 두 작업은 함께 성공하거나 모두 실패해야 합니다.
- Consistency (일관성):
- 트랜잭션이 실행되기 전과 후에 데이터베이스는 항상 일관된 상태를 유지해야 합니다. 트랜잭션은 데이터베이스의 모든 규칙(제약 조건)을 준수해야 하며, 트랜잭션이 완료되면 데이터가 유효한 상태가 되어야 합니다.
- 예: 돈을 송금할 때, 송금 후 총 계좌 금액의 합은 변경되지만 여전히 논리적으로 일관된 상태여야 합니다.
- Isolation (격리성):
- 트랜잭션은 다른 트랜잭션과 독립적으로 수행됩니다. 하나의 트랜잭션이 처리되는 동안 다른 트랜잭션은 그 트랜잭션이 완료될 때까지 영향을 미치지 않습니다. 트랜잭션의 격리 수준은 다를 수 있으며, 이로 인해 dirty read, non-repeatable read, phantom read 등의 문제가 발생할 수 있습니다.
- 예: A와 B라는 두 사람이 동시에 송금을 시도할 경우, 두 트랜잭션은 서로 간섭하지 않고 독립적으로 처리되어야 합니다.
- Durability (지속성):
- 트랜잭션이 완료되면 그 결과는 영구적으로 데이터베이스에 기록됩니다. 시스템 오류가 발생하더라도 트랜잭션 결과는 손실되지 않습니다.
- 예: 송금이 완료되면 시스템이 갑자기 꺼져도 송금된 금액은 잃어버리지 않고 계속 기록됩니다.
BASE 모델
BASE는 NoSQL 데이터베이스에서 주로 사용되는 모델로, ACID 모델의 대안입니다. 이는 시스템이 높은 가용성과 일관성을 제공하는 방식에 대해 다소 유연한 접근법을 제시합니다.
BASE의 3가지 특성:
- Basically Available (기본적으로 사용 가능):
- 시스템은 항상 사용할 수 있어야 하며, 응답은 항상 제공됩니다. 일부 데이터가 일시적으로 불완전할 수 있지만, 시스템은 항상 요청을 처리하려고 합니다.
- 예: 서버가 과부하 상태일 때도 일부 데이터에 접근할 수 있지만, 데이터의 일관성은 보장되지 않을 수 있습니다.
- Soft State (소프트 상태):
- 데이터베이스의 상태는 항상 일관되게 유지되지 않을 수 있습니다. NoSQL 시스템은 데이터를 빠르게 처리하기 위해 데이터의 상태를 잠시 "불완전"하게 유지할 수 있습니다. 즉, 데이터가 일관성을 잃을 수 있지만, 시간이 지나면 최종적으로 일관된 상태로 돌아옵니다.
- 예: 데이터가 여러 서버에 분산되어 있을 때, 일부 노드에 최신 데이터가 없을 수 있지만, 시스템은 이를 감수하고 계속해서 작동합니다.
- Eventually Consistent (최종적으로 일관성):
- 데이터베이스는 시간이 지남에 따라 일관성 있는 상태로 수렴합니다. 즉, 모든 복제본이 일관되게 유지되기까지 일정 시간이 소요될 수 있습니다. 일시적인 불일치가 있을 수 있지만, 결국 모든 데이터가 동기화되어 일관된 상태를 이루게 됩니다.
- 예: 분산된 시스템에서 데이터 업데이트 후 모든 서버가 즉시 일관된 데이터를 갖지 않지만, 시간이 지나면 모든 서버가 일관성 있게 데이터를 동기화합니다.
'문과생이 이해하는 개발의 길 🚀' 카테고리의 다른 글
FastAPI가 뭔데? (0) 2025.03.30