Database
[데이터베이스 기초] 데이터베이스 VS 파일 시스템
dev-ohdam
2024. 5. 31. 19:29
파일 & 파일 시스템
데이터베이스가 개발되기 전에 우리는 파일 시스템을 사용해 데이터를 관리했다.
파일이란? 단순한 txt, 이미지가 아닌 데이터들이 저장된 것
파일은 다음과 같은 특징을 가진다.
- 순차적인 레코드로 구성된다.
- 레코드는 데이터와 연관된 필드의 모임이다.
파일 시스템이란? 이런 데이터 파일을 관리하는 모듈/시스템
여기서 파일 시스템의 중요한 특징은 다음과 같다.
- 데이터에 대한 프로그램의 의존도가 높다.
응용 프로그램 안에는 데이터에 접근하기 위한 상세한 처리방법이 정의되어 있다.
즉, 프로그램이 데이터에 종속되어 있다는 것이다.
이게 뭐가 문젠데?
예를 들어 내가 LoL 챔피언 정보가 담겨있는 파일을 만들었다고 가정하자.
상황
1. 나는 해당 파일을 이용해 롤 백과사전 프로그램을 만들 것이다.
2. 해당 파일 데이터를 응용 프로그램 내에서 사용하기 위해서 나는 구조체를 만들 것이다. (struct Champion)
3. 응용 프로그램은 이 구조체를 기준으로 동작할 것이다.
문제점
1. 개발자 입장에선 응용 프로그램을 설계하기 위해서, 파일의 구조를 하나도 빠짐없이 인지하고 있어야 한다.
2. 그리고 만약, 내가 LoL 챔피언 정보가 담긴 파일을 수정하게 된다면? (나이를 삭제, 혈액형을 추가)
이전 파일에 맞게 설계 되어있던 응용 프로그램은 이 변화에 대처하지 못한다.
결국, 개발자는 작성한 응용 프로그램을 새로운 파일의 구조에 맞게 재구현 해야한다.
즉 굉장히 불편하다.
- 데이터의 중복 관리가 어렵다.
하나의 응용 프로그램이 여러 파일 데이터에 접근한다고 가정해보자.
상황
1. 학생 관리 시스템 프로그램은 인적 사항과 성적 파일을 접근한다.
2. 이 두 파일에는 이름이라는 중복된 필드를 가지고 있다.
문제점
1. 학생 한명이 이름을 개명했을 경우, 인적 사항과 성적 파일에 모두 반영해줘야 한다.
만약 이 부분이 제대로 갱신되지 않았을 경우 데이터 불일치 현상이 발생된다.
1 - 2. 데이터 불일치 → 어떤 데이터 값이 정확한 값인지 구분하지 못한다.
2. 시스템의 규모가 커졌을 때, 관리자가 모든 파일의 중복 항목을 관리하는 것에 대해 큰 비용이 발생한다.
그리고 다음 기능들이 부족하다.
- 데이터 모델링 개념
실세계의 일부분을 데이터로 바꿔 집어넣을 때 어떤 형태로 데이터를 저장하는가, 구현하는가?
를 정의
- 질의어(쿼리)
파일을 수정하기 위한 쉬운 질의어가 제공되지 않는다.
- 동시성제어
서로 다르게 저장된 데이터를 액세스하던 주체들이 동일한 데이터에게 액세스하는 상황에서 발생하는 충돌/오류 현상을 제어 하는 것
Ex) 교차로의 신호등 교착상태!!!!
- 데이터 파손에 대한 회복
손상된 데이터를 복구할 수 있는 기능이 없다.
- 보안
실제 권한이 있는 사용자만 접근할 수 있도록 하는 것
- 데이터 무결성 보장
데이터가 잘못된 내용을 담고 있을 경우, 이를 검증해주는 기능이 없다.
즉,개발자들이 일일히 예외 처리을 구현해야 한다.
데이터베이스는 이런 파일 시스템의 단점들을 보완한 개념이다.
데이터베이스의 특징
데이터베이스는 DBMS를 통해 관리된다.
그리고 DBMS는 컴퓨터 시스템 중
HW -> OS -> DBMS -> 응용 개발 도구 -> 응용 프로그램 -> 사용자
이곳에 위치한다.
그리고 다음과 같은 특징을 가진다.
- 자기기술성 ( =메타 데이터)
메타 데이터를 통해 데이터 구조를 직접 알고 있지 않아도 액세스 가능함.
- 프로그램과 데이터의 분리
데이터베이스의 저장구조가 변경되어도 DBMS는 영향을 받지 않음.
- 데이터 추상화
데이터 모델을 통해 데이터의 의미를 표현할 수 있음.
- 데이터에 대한 다양한 뷰
사용자 별로 자기의 목적에 맞게 데이터를 볼 수 있다
- 여러 사용자의 동시 사용
결론
파일 시스템 << 데이터베이스