본문 바로가기
객체지향설계

[파일구조] - 파일구조 설계

by CHML 2016. 4. 14.
1. 파일구조 설계 시 중요한 점

객체지향 관점에서 파일구조를 설계하기 이전에 파일구조의 가장 중요한 특징은 메모리보다 느리다는 것이다. 만약 동일한 시스템에서 램 접근 시 50ns가 소모된다고 하면 디스크 접근 시에는 약 4.6ms가 소모된다. 산술적으로 디스크에 한 번 접근하는 것은 램에 92,000번 접근하는 것과 같다는 것이다. 따라서, 유지 및 보수, 확장성 등의 특성 이전에 파일구조에서 가장 중요한 점은 디스크 접근을 최소화 하는 것이다.





2. 파일구조의 구성요소

파일구조는 파일(데이터) 자체를 말하는 것이 아니다. 파일구조는 데이터를 표현(representation)하는 방식과 데이터를 접근하는 연산(operation)의 조합을 의미한다. 예를 들어, Windows 파일시스템에서 파일을 표현하는 방식으로는 .doc, .jpeg, .mp3 등과 같은 파일 확장자의 개념이 있다. 또한, 파일구조에서 연산이라는 것은 파일을 어떻게 읽고 쓸 것인지, 파일 내의 데이터를 어떻게 검색할 것인지 등 파일을 조작하기 위한 기능을 의미한다.

파일구조에서 데이터를 표현하는 방식과 데이터에 접근하는 연산은 파일에 접근하는 시간에 큰 영향을 준다. 즉, 파일구조를 설계할 때 데이터를 표현하는 방식과 데이터에 접근하는 연산에 대한 설계에 따라 해당 파일구조의 성능이 결정된다.


3. 파일구조와 자료구조

디스크에 존재하는 파일의 데이터를 이용하기 위해서 파일은 결국 메모리에 로드되어야 한다. 따라서, 파일의 표현 방식과 파일에 대한 연산의 정의는 대부분 파일에 포함된 데이터를 메모리상에서 표현하기 위한 자료구조에 의해 결정된다. 많은 시스템에서 파일을 표현하기 위한 효과적인 자료구조로는 AVL tree, B-tree, B+ tree, Hashing 등의 트리(tree) 구조나 hashing 기법 등이 있다.