📌파일 시스템과 데이터 베이스
1. 파일 시스템
- 운영체제가 파일을 저장하고 관리하는 기본적인 시스템
- 데이터를 개별적인 파일로 저장하며, 디렉터리를 통해 파일을 조직
- 단순한 데이터 저장 구조로 빠른 접근이 가능하지만, 데이터 중복 및 무결성 유지가 어렵다
2. 데이터베이스
- 체계적으로 데이터를 저장하고 관리하는 시스템
- 데이터를 구조적으로 저장하며, 관계형 모델(RDBMS)이나 NoSQL 등의 방식이 있다
- 트랜잭션 관리, 동시성 제어, 데이터 무결성 보장 들의 기능을 제공
- SQL과 같은 질의 언어를 이용하여 데이터를 효율적으로 접근하고 관리한다.
파일 시스템은 단순한 데이터 저장이 필요할 때 유용하지만, 데이터 간의 관계, 검색, 보안, 동시성 처리가 필요하면 데이터베이스를 사용하는 것이 적합한다.
파일 시스템에 이미지를 저장하고, 데이터베이스에 해당 파일의 메타데이터(경로, 크기, 생성 시간)를 저장하곤 한다.
📌데이터베이스의 정의와 DBMS의 역할
1. 데이터베이스란?
- 데이터를 체계적으로 저장하고 관리하는 시스템
- 여러 사용자가 데이터를 쉽게 검색, 수정, 삭제, 추가할 수 있도록 지원
- 중복을 최고화하고 일관성과 무결성을 유지할 수 있도록 설계
- 데이터를 관리하기 쉽게 구조화해서 저장하는 저장소
2. DBMS의 역할
- Database Management System (데이터 관리 시스템)
- 데이터 베이스를 효율적으로 관리해주는 프로그램으로 SQL 같은 언어로 데이터를 쉽게 다룰 수 있게 해준다.
역할 | 설명 |
데이터 저장 및 관리 | 데이터를 효율적으로 저장하고, 빠르게 검색할 수 있도록 구조화 |
데이터 무결성 유지 | 데이터가 손상되지 않고, 일관성을 유지하도록 제약 조건 관리 |
트랜잭션 관리 | 여러 작업을 하나의 단위로 처리하여 데이터 정합성 유지 |
동시성 제어 | 여러 사용자가 동시에 데이터를 읽고 쓰는 경우 충돌 방지 |
보안 및 접근 제어 | 사용자 권한을 설정하고 인증을 통해 보안 강화 |
백업 및 복구 | 데이터 손실을 방지하고 장애 발생 시 복구 가능 |
데이터베이스(DB) = 데이터를 저장하는 공간
DBMS = 데이터베이스를 관리하는 프로그램 (MySQL, PostgreSQL, Oracle, MongoDB)
DBMS없이 데이터베이스를 효율적으로 관리하기 어렵다.
📌RDBMS와 릴레이션 모델의 기본 개념
1. RDBMS란?
- 관계형 모델을 기반으로 데이터를 저장하고 관리하는 DBMS
- 데이터를 테이블 형식으로 저장하며, 각 테이블을 행과 열로 구성된다.
2. 릴레이션 모델
- 데이터를 테이블(표, Relation) 형태로 구조화하여 저장하고 관리하는 데이터 모델
- 모든 데이터를 행과 열로 구성된 테이블에 저장하며, 여러 테이블 간의 관계를 설정하여 데이터의 일관성 유지
- 릴레이션 = 테이블
- 데이터가 저장되는 기본 단위
- 튜플 = 행 = 레코드
- 테이블의 한 줄을 의미
- 하나의 개체에 대한 데이터를 담음
- 애트리뷰트 = 열 = 필드
- 테이블에서 데이터의 속성을 정의하는 열
- 각 애트리뷰트는 특정 데이터 타입을 가진다. (정수형, 문자열, 날짜형 등..)
- 도메인
- 하나의 애트리뷰트가 가질 수 있는 값의 범위 (gender 컬럼 => man, woman)
- 차수
- 컬럼의 개수
- 카디널리티
- 행의 개수
📌데이터베이스 키와 무결성 제약조건
1. 키(Key)
데이터베이스에서 키는 튜플(행)을 유일하게 식별하는 속성이다.
(1) 슈퍼 키
- 한 테이블에서 튜플을 유일하게 식별할 수 있는 속성 또는 속성들의 집합
- 기본 키도 슈퍼 키에 포함
- ex) "학번" ,"학번+이름", "학번+이름+전화번호" => 불필요한 속성이 포함될 수 있다.
(2) 후보 키
- 슈퍼 키 중에 최소한의 속성만 포함하여 튜플을 유일하게 식별할 수 있는 키
- 여러 개 존재할 수 있으며, 그중 하나가 기본 키로 선택 된다.
- 후보 키 ⊆ 슈퍼 키
- ex) "학번", "이메일", "전화번호" => 불필요한 속성이 제거된 최소 키
(3) 기본 키
- 후보 키 중에서 대표로 선택된 키 ex) "학번"
- NULL 값을 가질 수 없으며, 중복될 수 없다
(4) 대체 키
- 후보 키 중에서 기본 키로 선택되지 않은 키
- ex) "이메일", "전화번호"
(5) 외래 키
- 다른 테이블의 기본 키를 참조하는 속성
- 외래 키가 가리키는 값이 반드시 존재해야 한다 (참조 무결성 유지)
2. 무결성 제약조건
무결성 제약 조건은 DB의 데이터가 일관성을 유지하도록 강제하는 규칙이다.
(1) 개체 무결성
- 기본 키는 NULL이거나 중복될 수 없다.
(2) 참조 무결성
- 외래 키는 참조하는 기본 키 값이 존재해야 한다.
(3) 도메인 무결성
- 컬럼의 값 정의된 도메인 범위(자료형과 제약조건)를 벗어나지 않도록 제한한다.
(4) 고유 무결성
- 특정 컬럼에 대해 중복을 허용하지 않도록 설정한다.
- 기본 키와 다르게 NULL 허용
- UNIQUE 제약 조건 사용
(5) NULL 무결성
- 특정 컬럼의 값이 NULL이면 안 된다.
- NOT NULL 제약조건을 사용
📌 MySQL과 InnoDB의 주요 특징 및 동작 원리
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이고, InnoDB는 MySQL에서 기본적으로 사용되는 스토리지 엔진이다.
1. MySQL
- 관계형 데이터베이스로 데이터를 테이블 형태로 저장하고 관리한다.
- 오픈 소스이며, 빠르고 안정적이고 확장성이 뛰어나다.
2. InnoDB
- MySQL의 기본 스토리지 엔진으로, 트랜잭션을 지원하는 강력한 엔진
- ACID 보장, 외래 키 지원, 데이터 무결성 유지, 데이터 충돌 최소화 등의 기능 제공
- ❔ACID?
- 원자성(Atomicity): 하나의 트랜잭션이 모두 실행되거나 전혀 실행되지 않음
- 일관성(Consistency): 트랜잭션 전후로 데이터베이스 상태가 일관됨
- 격리성(Isolation): 동시 트랜잭션 간 영향을 최소화
- 지속성(Durability): 트랜잭션이 커밋되면 데이터가 영구적으로 저장
- ❔외래키 지원 => 참조 무결성 보장
- 외래키를 지원하여 참조 무결성을 보장한다.
- 부모 테이블의 데이터 삭제 시 자식 데이블 데이터도 함께 삭제 (ON DELETE CASCADE)
- ❔충돌 최소화? => MVCC(다중 버전 동시성 제어) 지원
- 여러 트랜잭션이 동시에 데이터를 읽고 수정할 때 충이 발생하지 않도록 관리하는 방식
- 데이터 변경 시 이전 데이터를 유지해서, 트랜잭션이 동시에 실행될 때도 각 트랜잭션이 자신만의 일관된 데이터를 볼 수 있도록 해주는 기술
- InnoDB는 데이터를 변경할 때 기존 데이터를 바로 덮어쓰지 않고, Undo Log에 이전 버전을 저장해둔다.
- Undo Log (롤백 로그)
- 롤백 시 Undo Log를 사용하여 이전 상태로 복원 가능하다.
- Redo Log (재실행 로그)
- MySQL이 갑자기 종료되더라고 Redo Log를 사용하여 데이터 복구 가능하다.
- Undo Log (롤백 로그)
- 트랜잭션이 시작될 때 그 시점에서 볼 수 있는 스냅샷을 유지한다.
- 즉, MVCC는 커밋되지 않은 변경 사항이 다른 트랜잭션에 영향을 주지 않도록 해준다.
- ❔ACID?
- 기본적으로 Clustered Index(B+Tree) 구조를 사용하여 데이터를 저장
- ❔클러스터형 인덱스
- 데이터를 실제로 저장하는 방식
- 기본 키를 기준으로 정렬되어 저장된다.
- 기본 키 인덱스와 데이터가 함께 저장된다.
- ❔B+Tree
- 데이터베이스 및 파일 시스템에서 널리 사용되는 균형 탐색 트리
- InnoDB 스토리지 엔진이 인덱스를 저장하는 방식
- ❔클러스터형 인덱스
'CS > 데이터베이스' 카테고리의 다른 글
[CS] 데이터 베이스_트랜잭션 (0) | 2025.03.23 |
---|---|
[CS] 데이터 베이스_이상현상, 정규화 (3) | 2025.03.11 |
[CS] 데이터베이스_인덱스 (0) | 2025.03.10 |
[CS] 데이터베이스_SQL (0) | 2025.03.02 |