Welcome to My World (www.dgmayor.com)

소프트웨어/신 기술 및 잡동 사니

1. 파일 시스템 및 데이터 베이스 사용에 대한 비교...

dgmayor 2022. 3. 11. 11:21
728x90

《 파일 시스템(File System) 

 

파일 시스템은 파일(데이터의 모임)을 저장 장치에 저장하고 사용하기 위한 일종의 규칙이나 체계를 뜻하며, 파일의 이름을 붙이고, 쉽게 파일에 접근할 수 있도록 배치를 신경 쓰는 등 파일과 관련된 기능을 수행하는 시스템입니다.
파일의 기본적인 구성요소는 순차적인 레코드들이며, 레코드는 파일을 다룰 때 실제로 읽고 쓰는 단위로서 사용되는 데이터 단위를 뜻합니다.
파일 시스템은 데이터 시스템(DS)이 등장하지 않았을 때인 1960년대부터 사용돼 왔습니다.

파일 시스템에서는 파일에 접근하는 방식이 응용 프로그램 내에 표현되므로 응용 프로그램과 데이터 간의 의존관계가 존재하게 되어 데이터의 구조, 접근 방법이 변경되면 기존의 프로그램과 데이터를 함께 변경해야만 합니다.
즉, 데이터 정의가 응용 프로그램에 내포되어 있다는 의미입니다.
또, 프로그램에서 데이터를 접근하고 조작하는 것 이외에 별도의 제어가 없다는 것입니다.
이 두 가지 요인은 많은 단점을 발생시킵니다.

 데이터 간 불일치가 발생할 수 있다.
중복된 데이터의 변경을 제어하는 것이 어렵기 때문에 여러 개의 중복 데이터 중 일부의 데이터만 변경된다고 하면, 중복된 데이터 간에 불일치가 발생할 수 있습니다.
 다수 사용자를 위한 동시성 제어가 제공되지 않는다.
두 사용자가 동시에 파일에 접근할 때 각 사용자가 혼자서 데이터베이스를 접근하는 것처럼 인식하도록 하는 동기화가 되지 않습니다.
 쉬운 질의어가 제공되지 않는다.
SQL 같은 쉬운 질의어가 제공되지 않죠.
 보안 기능이 미흡하다.
파일 시스템에서는 파일 단위로만 검색, 갱신, 실행 권한을 부여할 수 있어서 사용자의 권한에 따른 세밀한 접근 제어(레코드 단위)를 시행하기 어렵습니다.
 회복 기능이 없다.
응용 프로그램에서 파일 내의 데이터를 수정하는 도중에 강제로 파일이 닫히는 등의 사고가 발생했을 때 데이터를 복구하는 기능이 없습니다.
 데이터 독립성이 없어 유지보수 비용이 크다.
파일의 구조가 응용 프로그램에 반영되어 있기 때문에 파일의 구조가 바뀌면 영향을 받는 모든 응용 프로그램들을 수정해야 합니다.
또한 응용 프로그램의 기능을 확장하려면 파일의 구조에 대한 요구 사항이 바뀌므로 파일을 재조직해야 됩니다.
유지보수에 대한 비용이 상당히 높죠.
데이터 독립성은 중요한 개념이라 후에 다른 포스팅에서 자세히 다룰 생각입니다.
 데이터 모델링 개념이 부족하다.
단순히 순차적인 레코드만으로 나타내기 때문에 데이터의 의미와 데이터 간의 상호 관계를 나타내기 힘듭니다.

 데이터 무결성을 유지하기가 어렵다.
파일 내의 데이터가 만족시켜야 하는 무결성 제약조건들을 명시하려면 프로그래머가 직접 프로그래밍 언어를 사용하여 일일이 프로그램에 표현해야 하므로 데이터 무결성을 유지하기가 어렵습니다.
또한 새로운 제약조건들을 추가하거나 기존의 제약조건을 수정하는 것도 어렵습니다.

 생산성이 낮다.
각 응용 프로그램마다 프로그래머가 새로운 파일 형식과 설명을 설계하는 과정부터 시작한 후 새로운 응용 프로그램을 위한 파일 접근 논리를 작성해야 하기 때문에 개발 시간이 오래 걸립니다.
프로그래머는 자바, C 등의 프로그래밍 언어로 원하는 데이터 및 원하는 데이터를 찾는 방법을 상세하게 구현해야 합니다.
 데이터 공유가 잘 되지 않는다.
각 응용 프로그램마다 파일들을 갖고 있으며 데이터를 접근하는 응용 프로그램들이 여러 가지 프로그래밍 언어들로 작성되어 데이터 공유가 제한됩니다.

《 데이터베이스 시스템(DS) 

파일 시스템의 단점을 극복하고자 만들어진 것이 데이터베이스 시스템이기 때문에 파일 시스템의 단점을 역으로 생각하면 데이터베이스 시스템의 장점을 충분히 유추할 수 있습니다.
파일 시스템에서 데이터 무결성을 유지하기가 힘들다면 데이터베이스 시스템에서는 데이터 무결성이 잘 유지된다는 식으로요.
아니면 데이터베이스 시스템의 요구 사항을 데이터베이스 시스템의 장점으로 보아도 무방하겠네요.(아래 링크 참고)

그래서 데이터베이스 시스템의 장점은 몇 개만 추가로 언급하고 넘어가겠습니다.

 사용자에게 보다 나은 서비스와 다양한 도구를 제공한다.
데이터베이스에 데이터를 통합시켜 관리하므로 사용자가 데이터를 관리하기 쉬우며, 데이터베이스 시스템을 잘 모르는 사용자들도 질의어를 통해 보다 용이하게 데이터에 접근할 수 있습니다.
또한, 데이터베이스를 설계하는 도구, 응용 프로그램을 개발하는 도구, 성능을 튜닝하는 도구 등 다양한 도구를 활용할 수 있습니다.

 표준화를 시행하기가 용이하다.
데이터베이스에 대한 모든 접근이 DBMS를 통하기 때문에 표준화를 시행하기가 용이합니다. 데이터의 이름 부여, 데이터의 형식, 데이터의 구조 등에 대해 표준화를 시행할 수 있습니다.
예를 들어, 날짜는 yyyymmdd, yy-dd-mm 등 다양한 형식으로 저장될 수 있습니다.
만일 날짜를 저장하는 형식을 표준화하지 않으면 데이터베이스에 대한 질의의 결과가 부정확하게 됩니다.
 다양한 요구 사항에 대해 우선순위를 매기고, 순서를 조절할 수 있다.

다양한 요구 사항에 대해 순위를 매기고, 순서를 조절할 수 있습니다.
대부분의 조직체에는 여러 부서가 있는데, 다양한 질의와 요구 사항이 상충되는 경우 낮은 우선순위의 요구 사항을 무시하거나 지연시키는 것이 가능합니다.

《 파일 시스템과 데이터베이스 시스템 사용 여부 

데이터베이스 시스템의 여러 강점에도 불구하고 모든 상황에서 데이터베이스 시스템이 파일 시스템에 비해 항상 장점만을 갖는 것은 아닙니다.
데이터베이스 시스템을 무조건 사용해야 하는 것은 아니므로 업무의 요구 사항을 잘 파악하여 데이터베이스 시스템을 사용할지 파일 시스템을 사용할지 사용 여부를 결정해야 합니다.

데이터베이스 시스템의 소프트웨어의 규모가 크고 복잡해서 파일방식보다 많은 하드웨어 자원을 필요로 하므로 추가적인 하드웨어 구입 비용이 들 수 있고, DBMS 자체의 구입 비용과 유지, 보수 비용도 상당히 비싼 편입니다.
또, DBMS가 자동적으로 데이터베이스의 일관성을 유지하기 위해서 컴퓨터의 자원을 많이 필요로 하므로 응답 시간이 많이 걸릴 수 있습니다.

데이터베이스 시스템도 이러한 단점을 가지므로, 상황에 따라서 파일 시스템을 사용하는 것이 더 좋은 경우도 있습니다.
초기의 투자 비용이 너무 큰 경우, 응용이 단순하고, 데이터가 잘 정의되고, 변경되지 않을 것으로 예상되는 경우, 엄격한 실시간 처리 요구 사항이 있을 경우, 데이터에 대한 다수 사용자의 접근이 필요로 하지 않는 경우가 그 예입니다.
파일 시스템은 별도의 구입 비용이 들지 않으며, 소수의 사용자를 위주로 설계가 되기 때문에 다수의 사용자가 접근하는 데이터베이스에 비해 보안과 관리 상에서 유리한 경우도 존재합니다.


 
컴퓨터 프로그램 개발은 누구는 파이썬이 최고니, 오라클이 최고니.... 뭐... 요즘 node.js를 사용한다느니....
말이 많은데..... 따지고 보면 0과 1으로 add, min만 할 수 있으면 다 부수적으로 따라 오는 언어이고....
 
그렇다고 그런 기술을 안 익히자니.... Dark Theme, Git 처럼 쉬운 길 놔두고 돌아 다니는 느낌이 들기도 하고...
그래서 나는 웹 기술이라고 장을 새로 떼내어 만들 수 있었다.
728x90