음악, 이미지, 문서, 설정파일 등의 파일은 레코드와 필드의 집합이라는 개념에서 해석하기에는 다소 맞지 않는 부분이 존재한다. 음악, 이미지, 문서, 설정파일 등과 같은 파일을 레코드와 필드의 집합이 아니라 하나의 객체로 정의하기 위한 개념이 추상 데이터 모델(abstract data model)이다.
추상 데이터 모델은 데이터에 대한 개념적인 정의로써, 데이터 모델 자체에 데이터뿐만 아니라 데이터를 해석하기 위한 구조까지 포함하고 있는 데이터 모델을 뜻한다. 추상 데이터 모델의 가장 큰 특징은 데이터 모델 자체에 데이터를 해석하기 위한 구조를 포함하고 있기 때문에 저장 장치나 프로그래밍 환경에 독립적이라는 것이다.
추상 데이터 모델은 데이터의 구성과 접근 연산을 데이터 모델에 포함하여 소프트웨어가 데이터 모델의 물리적 저장 방식을 알지 못해도 데이터를 해석할 수 있도록 하는데 목적이 있다. 파일구조에서 추상 데이터 모델은 헤더 레코드에 파일을 해석하기 위한 구조를 표현하여 소프트웨어가 파일을 이해할 수 있도록 한다.
문서를 작성하다보면 아래의 그림처럼 텍스트뿐만 아니라 그림이나 표 등이 문서에 포함되기도 한다. 이러한 경우에는 하나의 파일에 이질적인 데이터인 텍스트, 그림이 같이 저장되어야 한다.
이질적인 데이터를 하나의 파일에 표현하기 위한 방법으로는 크게 아래와 같은 세 가지 방법이 있다.
- 헤더 레코드(header record): 각각의 데이터와 데이터에 대한 헤더 레코드를 같이 저장하는 방법이다. 위의 문서와 같은 경우, 텍스트 데이터의 해석 방법은 파일 전체 헤더 레코드에 명시되어 있다고 가정하면, 실제 파일에는 그림 2개와 표 1개에 대한 총 3개의 헤더 레코드가 추가된다.
- 키워드=값 구조: 각각에 데이터에 대해 키워드를 명시하여 데이터를 해석할 수 있도록 하는 방법이다. 대표적인 예시로는 FITS(Flexible Image Transport System) Header가 있다.
- 인덱스 테이블(index table): 하나의 요소가 태그-위치로 구성되는 인덱스 테이블을 따로 유지하는 방법이다. 예를 들어, 위의 그림에서 표현된 문서의 인덱스 테이블은 [헤더 그림 헤더 그림 표]와 같은 구조를 가지며 각각의 요소는 해당 태그가 가리키는 데이터의 시작 위치를 저장하고 있다.
이미지 파일의 저장 형식으로 많이 이용되는 jpge나 png는 디스크 상에서 저장 형식은 다르지만, 소프트웨어가 파일을 해석하여 메모리에 적재할 때는 모두 같은 이미지로 표현되어야 한다. 이러한 것이 가능하기 위해서는 소프트웨어가 각각의 파일에 따라 파일을 해석하기 위한 함수를 호출할 수 있어야 한다.
따라서, 소프트웨어에는 각각의 저장 형식을 해석하기 위한 함수가 구현되어 있어야 하며, 데이터 파일에는 소프트웨어에게 어떤 함수를 호출해야하는지 지시하기 위한 헤더 또는 메타데이터(metadata)가 포함되어 있어야 한다.
'객체지향설계' 카테고리의 다른 글
[파일구조] - 레코드 관리 (0) | 2016.04.24 |
---|---|
[파일구조] - 레코드 접근과 성능 (0) | 2016.04.24 |
[파일구조] - 파일구조 설계 III (0) | 2016.04.24 |
[파일구조] - 파일구조 설계 II (1) | 2016.04.24 |
[파일구조] - 파일구조 설계 I (0) | 2016.04.23 |