왜 데이터베이스를 쓰는가?
C언어나 파이썬을 사용해서 파일 입출력을 해본 기억이 있으실 겁니다. 그리고 데이터를 저장하기 위해서 엑셀 파일을 프로그램이 사용하는 경우도 있습니다.
C언어의 경우, struct 전체를 바이너리 코드로 읽거나 쓸 수 있습니다. 그런데 프로그래머는 함부로 할당한 변수의 바이트 크기를 바꿀 수 없습니다. 만약 바꾼다면 기존의 바이너리 파일을 읽을 수 없을 것입니다. 이를 데이터 독립성이 떨어진다고 합니다.
또한 이런 파일 시스템은 운영체제에 크게 영향을 받습니다. 이를 데이터 종속적이라고 말합니다.
파일 시스템의 단점
- 데이터 중복성
- 데이터 종속성
기존의 파일 시스템의 문제점을 해결하기 위해서 등장한 것이 데이터베이스입니다.
데이터베이스의 정의
- 통합된 데이터 - 중복을 최소로
- 저장된 데이터
- 운영 데이터
- 공용 데이터
데이터베이스의 특성
특성 | 설명 |
---|---|
실시간 접근성 | 다양한 질의에 대해 실시간으로 응답, 성능이 중요 |
계속적인 변화 | 정확한 데이터 보관 |
동시 공유 | 여러 사용자가 동시에 데이터 액세스 |
내용에 의한 참조 | 데이터의 주소가 아닌 값을 이용한 참조 |
DBMS
데이터베이스가 어떤 것인지는 감이 오는데 응용 프로그램이 어떻게 데이터베이스를 사용할까요?
바로 DBMS가 응용 프로그램이 데이터베이스를 공유할 수 있도록 관리해줍니다.
DBMS의 목적
- 사용의 편의성 - 사용자가 내부를 몰라도 원하는 데이터를 쉽게 읽고 쓰기
- 관리의 효율성 - 데이터를 효율적으로 관리해서 성능, 정확성 보장
데이터베이스 모델링
데이터베이스 언어
DBMS의 필수 기능
정의 기능 - DDL
- Data Definition Language
- 데이터베이스의 스키마( 구조 )를 정의/수정/삭제하는 용도
- 논리적 구조, 물리적 구조, 두 구조 사이의 매핑을 정의
조작 기능 - DML
- Data Manipulation Language
- 레코드에 대한 검색/삽입/수정/삭제 지원
- Query language
- 데이터 처리 기능 ( 추가, 검색, 갱신, 삭제 )
제어 기능 - DCL
- Data Control Language
- 트랜잭션 관리 (Commit, Rollback)
- 보안 관리 (Grant, Revoke)
- 데이터에 대한 정확성과 안정성을 유지
- 트랜잭션, 동시성 제어, 데이터 무결성, 보안
트랜잭션 관리
트랜잭션은 나누어져서는 안되는 논리적 작업의 단위입니다.
ACID
속성 | 설명 |
---|---|
원자성(Atomicity) | All or Nothing. 트랜잭션은 나누어져서는 안되는 작업들의 모음 |
일관성(Consistency) | 트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지 |
고립성(Isolation) | 실행 중간의 결과가 노출되지 않아야 함 트랜잭션을 수행하는 도중에 다른 연산작업이 끼어들면 안됨 |
영구성(Durability) | 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함 |
정리
데이터베이스을 왜 사용해야 하는지 알 수 있었고 이를 사용하기 위해 현실세계의 데이터를 DBMS가 관리할 수 있는 방법으로 바꾸는 과정을 배웠습니다.