🔎 파일시스템과 데이터베이스의 차이
파일 시스템(File System)이란
- 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록 유지 및 관리하는 방법
- 데이터베이스가 개발되기 전 데이터 관리를 위해 사용
- 업무 별 애플리케이션이 개별 데이터를 데이터 파일에 저장/관리하는 시스템
- 대량의 데이터가 누적되다 보면 데이터 중복으로 인해 데이터 불일치가 발생하게 됨
파일 시스템의 한계
운영체제의 파일 시스템 관리 기능을 사용하여 파일에 텍스트 형태로 특정 저장 형식을 두어 저장하게 됨 → 어떠한 데이터를 일관적으로 관리하는 기능을 제공하기 어렵다
파일 시스템과 데이터베이스의 차이

1. Data Dependency (데이터 종속성)
- 데이터와 상호작용하는 물리적 혹은 논리적 종속성을 의미
- 데이터가 관리될 때는 물리적, 논리적 독립성을 유지하는 것이 매우 중요
- 실제 물리적 디스크 혹은 데이터의 논리적 구조가 변경되더라도 프로그램 입장에서는 동일한 코드로 사용할 수 있어야 한다는 것을 의미
- 파일 데이터의 수정은 빈번히 일어남
- 파일 시스템은 데이터가 변경될 때마다 프로그램 자체를 수정해야 함
- 데이터베이스는 DBMS를 이용해 데이터를 받기 때문에 변경이 쉬움
2. Data Redundancy (데이터 중복성)
- 데이터는 중복되어 저장되면 안됨
- 파일 시스템은 응용 프로그램 별로 독립된 파일을 가지므로 데이터의 중복 저장이 발생할 수 있으며 이로 인해 데이터 값의 불일치 발생
- 데이터베이스는 데이터를 조직적으로 통합하여 중복을 없애고 자료를 구조화함
3. Integrity Problems (무결성 제약조건)
- 파일 시스템은 수많은 파일을 복제하기 때문에 새로운 제약조건이 발생했을 때 모든 파일에 제약 조건을 추가하기 어려움
- DBMS는 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입, 길이, 값의 범위 등에 대한 정보를 가지고 있음
🔎 데이터베이스의 정의와 DBMS의 역할
데이터베이스(Database)란
- DBMS를 도입하여 데이터를 통합 관리하는 시스템
- DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능 수행
- 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
- 데이터의 검색과 변경(삽입, 삭제, 수정 등의 작업)을 주로 수행
- 기존 파일 시스템의 단점을 보완하기 위해 만들어짐
DBMS(Database Management System)란
- 데이터베이스를 관리하는 소프트웨어 시스템
- 데이터의 생성, 조회, 업데이트, 삭제를 포함한 다양한 작업을 가능하게 함
DBMS의 주요 역할
1️⃣ 데이터 저장 및 검색 : 데이터를 저장하고 효율적으로 검색하는 방법 제공
2️⃣ 데이터 무결성 : 데이터가 정확하고 일관되게 유지되도록 보장
3️⃣ 동시성 제어 : 여러 사용자가 동시에 데이터베이스에 접근할 수 있도록 하여 데이터 충돌을 방지
4️⃣ 보안 : 데이터에 대한 접근 제어를 설정하여 권한 있는 사용자만 데이터에 접근하도록 함
5️⃣ 백업 및 복구 : 데이터를 안전하게 백업하고, 문제가 발생했을 때 복구할 수 있게 함
🔎 RDBMS와 릴레이션 모델의 기본 개념
RDBMS(Relational Database Management System)
- 데이터를 테이블 형식으로 저장하는 데이터베이스 관리 시스템
- 릴레이션 모델을 기반으로 데이터를 관리.
- 테이블 간 관계를 정의하고 이를 통해 데이터를 효율적으로 관리
- ex) MySQL, Oracle, PostgreSQL, SQL Server 등
릴레이션 모델
-
릴레이션(Relation) = 테이블
- 행(Row)과 열(Column)로 구성되며, 각 행은 레코드(tuple)를, 각 열은 속성(Attribute)을 나타냄
-
기본키(Primary Key)
- 테이블에서 각 레코드를 고유하게 식별하는데 사용되는 속성
-
외래키(Foreign Key)
- 다른 테이블과의 관계를 정의하는 데 사용되는 속성
- 외래키는 다른 테이블의 기본키를 참조
-
정규화(Normalization)
- 데이터의 중복을 최소화하고 데이터 무결성을 유지하기 위한 테이블 설계 방법
🔎 데이터베이스 키와 무결성 제약조건
데이터베이스 키
-
기본키(Primary Key)
- 각 행을 고유하게 식별
- 중복이 없으며 NULL 값을 가질 수 없음
-
대체키(Alternate Key)
- 기본키 외에도 테이블에서 고유한 값을 가지는 속성
- 기본키를 제외한 다른 후보키
-
외래키(Foreign Key)
- 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 정의
- 참조 무결성을 보장함
-
슈퍼키(Super Key)
- 테이블에서 레코드를 고유하게 식별할 수 있는 속성들의 집합
- 기본키는 슈퍼키의 특수한 경우
-
복합키(Composite Key)
무결성 제약조건
1️⃣ 개체 무결성 : 기본키는 NULL 값을 가질 수 없으며, 각 레코드는 고유해야 함
2️⃣ 참조 무결성 : 외래키가 참조하는 기본 키 값이 항상 유효해야 하며, 외래키가 참조하는 테이블에서 해당 값이 존재해야 함
3️⃣ 도메인 무결성 : 각 속성의 값은 해당 속성이 정의한 도메인에 맞아야 함
4️⃣ 널 값 제약 : 특정 열이 NULL 값을 가질 수 있는지 여부를 제한하며 필수적인 정보는 NULL 값을 허용하지 않음
🔎 MySQL과 InnoDB의 주요 특징 및 동작 원리
MySQL
- 오픈 소스 관계형 데이터베이스 관리 시스템 = RDBMS
- 빠르고 안정적인 성능 제공
- 다양한 저장 엔진을 지원하며, 각 엔진은 서로 다른 특성을 가지고 있음
- 대표적인 엔진은 InnoDB, MyISAM 등이 있음
InnoDB
- MySQL의 기본 저장 엔진
- ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션 속성을 지원함
- 트랜잭션 지원
- 트랜잭션을 지원하여 데이터베이스 작업의 일관성과 무결성 보장
- 외래 키 지원
- 외래 키 제약조건을 지원하여 테이블 간 관계 유지
- 행 수준 잠금
- 테이블 전체가 아닌 행 단위로 잠금을 수행하여 높은 동시성 지원
- Crash Recovery
- 시스템 장애 발생 시 데이터를 복구할 수 있는 기능 제공
- 지연된 쓰기
- 데이터를 디스크에 즉시 기록하지 않고 일정한 주기로 디스크에 저장함