운영체제에서도 파일 시스템 (file system)이라는 것을 배우는데
어디다 써먹나 했더니 여기서 써먹는다.
영구적으로 데이터를 디스크에 저장하는 가장 보편적인 방법이 바로 파일 시스템을 이용하는 것이다.
**파일 시스템이란 운영체제의 한 부분으로 데이터나 프로그램을 디스크에 쓰고 읽을 수 있게 해주는 프로그램을 말한다.
++ DBMS라는 것이 나오기 전에는 운영체제에서 제공하는 파일시스템만 이용했었다.
그러나 왜 파일 시스템을 쓰지 않고 DBMS를 만들어냈을까??
파일 시스템은 운영체제의 요구사항을 기반으로 최적화되었기 때문에 간혹가다 데이터베이스의 처리에는 부적절하거나 기능이 부족한 경우가 생긴 것이다.
쉽게 말하자면 파일 시스템의 한계는 5가지로 볼 수 있었다.
1. 프로그램 밖에서의 데이터 조작, 외부에서 데이터 접근
프로그램의 데이터 파일이 텍스트 파일인 경우 텍스트 편집기로 편집이 가능하며
이진 파일인 경우에는 16진수 또는 8진수 편집기로 편집이 가능했다.
즉, 데이터의 형식이나 내용을 프로그램과는 상관없이 쉽게 변형가능해서 데이터의 무결성을 유지하기가 어려워진 것이다.
비유하자면 출석부를 선생님이 아니어도 수정이 가능해서 출석부가 엉망진창이 되었다고 보면 된다.
++무결성 문제
무결성이란 데이터가 얼마나 정확한가를 뜻한다.
-> 데이터 중복으로 인한 불일치 문제가 없게 해준다.
2. 프로그램과 데이터 형식의 통합
일반적으로 프로그램의 파일 입출력 함수들은 읽고 쓰는 데이터의 형식과 길이, 그리고 파일 내에서 데이터의 위치를 정확히 지정해야 한다. 즉 프로그램은 데이터 파일에 종속되어 있다.
그렇다면 두 개 이상의 프로그램이 데이터 파일을 공유할 경우 두 프로그램 모두 데이터 파일의 위치와 내부 형식에 맞게 작성되어야 한다. 만약 한 프로그램이 새로운 데이터 항목을 추가하거나 수정이 불가피할 경우 다른 프로그램도 기능과는 상관없이 프로그램을 수정해야 된다는 것이다.
** 여러 프로그램이 여러 데이터 파일을 공유하는 시스템에서는 더 복잡해진다는 것이다.
쉽게 말하자면, 파일 경로를 바꾸면 작동이 안되는 프로그램을 생각해보면 된다.
2가지 프로그램이 1가지 데이터를 공유하는데 어느 한 프로그램이 파일의 위치를 바꿔버렸다??? 그럼 나머지 프로그램이 정상적으로 작동하기 위해서 그 프로그램을 수정시켜줘야 한다는 것이다.
3. 동시 접근성(Concurrency problem)
위에 나와있듯이 두 가지 프로그램이 하나의 데이터를 공유할 수 있다.
그렇지만 동시 접근이 허용되지 않는다. 이것은 스케줄러를 통해 관리되어야만 한다.
++동시 접근은 안되지만 파일이 수정되지 않고 읽기만 목적으로 한다면 그 데이터를 복사해서 동시에 읽게 하는 것은 가능하겠지?
-> 스레드의 동기화 문제 비슷하다.
4. 보안
데이터 파일은 여느 파일과 마찬가지로 접근 권한에 대해 설정이 가능하다. 그렇지만 DBMS를 통해 더 다양하고 편리한 보안 기능에 대한 요구를 충족시킬 수 있다.
5. 장애 복구
응용 프로그램이 데이터 파일의 데이터를 갱신하다가 시스템에 장애가 발생했을 경우 그 작업이 어디까지 진행되었는지 파일 시스템은 알려주지 못한다. 따라서 중단되었던 작업을 마치거나 다시 원래의 상태로 복구시키려면 응용 프로그램이 어떤 방식으로든 스스로 해결을 해야 한다.
내가 번복하는 것 같지만 아니다..
파일 시스템은 쓸모없고 DBMS가 최고야 라고 말하는 것은 아니다.
DBMS 자체도 프로그램의 하나이기 때문에 운영체제의 제어 하에서 수행되는 것은 마찬가지이다.
파일 시스템도 운영체제의 일부로서 DBMS가 자신의 데이터를 저장하는 방편으로 사용할 수 있다. 즉, 응용 프로그램들은 DBMS를 통해 데이터베이스의 데이터에 접근을 하며 DBMS는 그 데이터베이스를 디스크에 파일의 모습으로 저장한다.
'컴퓨터(Computer Science) > 데이터베이스, DB, DataBase' 카테고리의 다른 글
SQL(Structured Query Language) + 보충내용(NULL처리, 중첩질의, 뷰(VIEW)) (0) | 2020.12.12 |
---|---|
SQL(Structured Query Language)이란? (0) | 2020.12.12 |
관계형 데이터베이스, Relation Database 란? (0) | 2020.12.11 |
데이터베이스에서의 키(Key) (0) | 2020.12.11 |
데이터와 데이터베이스 (0) | 2020.09.08 |