본문 바로가기
컴퓨터공학/컴퓨터구조

[보조 기억장치] File Structure

by 책 읽는 개발자_테드 2020. 4. 28.
반응형

1. File Structure 란?

 

파일 구조는 보조 기억장치에서 파일 액세스 시간과 저장 공간을 최소화하는 작업과 데이터 표현의 조합입니다.

 

2. 파일 구조가 필요한 이유는?

 데이터 아래 그림과 같이 아무런 작업 없이 하나의 바이트 스트림으로 저장한다면, 데이터 다시 가져올때 데이터를 의미 단위로 분해할 방법이없기 때문에 파일 구조가 필요하다.

 

 

3.구조 및 작동 방식은?

3.1 File Organization

 

3.1.1 Field

 필드: 파일구조에서 필드는 파일을 구성하는 요소 중에서 의미를 갖는 가장 작은 단위다.

 

 

◆고정 길이 필드 (Fixed-length fields)

 필드의 길이고정시키는 방법이다. 구현이 간단하다는 장점이 있지만, 고정된 길이 외에 사용하지 않는, 낭비되는 공간이 생길 수 있다.

 

  

가변 길이 필드 (Variable-length fields)

 

•길이 지시자(Length Indicator) 방식

 필드 바로 앞에 길이 지시자(Length Indicator)로 시작하여 저장하는 방법이다. 가변 길이로 저장하여 낭비되는 공간이 없다는 장점이 있지만, 거데이터를 읽어들이기 전 지시자를 먼저 읽어야하기 때문에 Fixed-length field 보다 복잡하고 느리다.

 

구분자(Delimiter) 방식

 

 

•키워드 = 값 방식

 구분자 방식과 동일하지만 필드에 값 뿐만아니라 필드를 설명하는 키워드를 함께 적는 방식이다. 구분자 방식보다 안전하다는 장점이 있지만, 모든 필드에 키워드를 함께 저장하기 때문에 공간 낭비가 심하다. 구분자 방식은 어떠한 이유로 중간에 필드가 하나라도 손실되면 데이터 순서가 뒤엉키게되지만, 키워드 = 값 방식은 모든 필드에 설명이 함께 쓰여있어서 해당 상황을 방지할 수 있다. 레코드 수가 적은 경우 사용할 수 있다. 

 

3.1.2 Record

 파일구조에서 레코드는 함께 속해있는 필드의 집합을 의미한다. 

 

 Fixed-length records

  각 레코드에 동일한 바이트를 할당한다. 

 

 

 Variable-length records

 

필드 개수 지정 방식

 헤더에 레코드 당 필드의 개수를 지정한다. 데이터 쓰기, 읽기를 하려면 헤더를 먼저 가져와서 읽어야한다. 원하는 위치의 데이터를 가져오기 위해서 해당 레코드 이전에 모든 필드를 6개씩 묶는 작업을 해야하기 때문에 시간적인 비용이 매우 크다.

 

 

길이 지시자(Length Indicator) 방식

 각 레코드의 첫 필드 시작 부분에 레코드의 길이를 저장하는 방식이다. 이 방식 또한 시간적인 비용이 매우 크다. 해당 방식을 사용하기 위해서는 2가지를 고려해야한다. 

 1.쓰기 작업 전에 하나의 레코드의 전체 내용을 버퍼에 모은다.

 2.레코드 길이 필드를 작성할때 어떤 형식을 사용할지를 고려한다. Integer 또는 일련의 ASCII Characters.

 

구분자(Delimiter) 방식

  각 레코드 사이에 특수한 문자를 삽입하여 구분하는 방식이다. 이 방식 또한 시간적인 비용이 매우 크다. 

 

인덱스 방식

  별도의 인덱스 파일을 만들어서 레코드 파일에 대한 주소(address == offset)를 저장한다. 저장 방식은 Hash, B-Tree등을 사용할 수 있다. 위의 2가지 보다 시간적인 비용이 적게 든다는 장점이있다.

 

 

 

출처

박동주 교수님 수업

https://untitledtblog.tistory.com/59

반응형

댓글