1.1 화일의 종류
정보 != 데이터
데이타 : 정보의 기본이 되는 것
정보 : 수집된 데이터를 처리해서 얻은 결과
일반적으로 데이터는 디스크 저장 장치에 저장되어 있음.
메인 메모리(소멸성)와 디스크(비소멸성)의 차이
메인 메모리는 용량이 작고, 접근 속도가 빠르다.
디스크는 용량이 크고 접근 속도가 느리다.
접근 속도 차이는 100나노초 대 10밀리초가 되어 거의 10의 5제곱 배 정도 차이가 난다.
-> 디스크가 데이터를 저장하기에 적절하다.
But, 컴퓨터는 디스크에 저장된 데이터를 처리하지 못해 반드시 메인 메모리에 가져와서 처리해야 함.
레코드, 레코드 어커런스 -> 몇 개의 필드로 구성됨. 한 레코드 타입의 인스턴스. 레코드 타입의 각 필드에 따라 실제 값이 들어가 어떤 특정 객체를 나타내는 것.
데이터 필드, 애트리뷰트, 데이터 항목 -> 이름을 가진 논리적 데이터의 최소 단위. 특정 객체(object, entity)의 한 성질을 표현
레코드 타입 -> 논리적으로 서로 연관된 데이터 필드(항목)들의 집합. 엔터티 타입(entity type)
화일 구조 : 디스크에 저장할 데이터의 표현과 데이터를 접근하기 위한 연산의 조합
디스크에 저장하는 데이터는 크게 화일로 구분한다.
화일 : 어떤 공통적인 응용 목적 위해 함께 저장된 데이터 레코드 집합. 보통 보조 저장장치에 저장. ex) 학생들의 인적사항을 적은 엑셀 파일
데이터를 화일로 구성하는 이유
- 메인 메모리(버퍼)에 전부 적재하기에 데이터 양이 너무 많다
- 응용 프로그램은 특정 시간에 데이터 집합의 일부만 접근한다 -> 데이터를 전부 메모리에 적재시킬 필요 x
- 데이터를 특정 프로그램과 별도로 보관시켜 데이터 독립성을 유지하기 위함 -> 100%는 아님
- 여러 응용 프로그램 공용 가능
화일의 기능에 따라
- 마스터 화일
- 트랜잭션 화일
- 보고서 화일
- 작업 화일
- 프로그램 화일
- 텍스트 화일
프로그램이 화일을 접근하는 형태에 따라
- 입력화일
프로그램이 판독(READ)을 위해 접근하는 화일
ex) 원시코드 프로그램 화일 : 컴파일러의 입력 화일 - 출력화일
프로그램이 기록(WRITE)을 위해 접근하는 화일
ex) 목적코드 프로그램 화일 : 컴파일러의 출력 화일 - 입출력화일
프로그램 실행 중 판독과 기록을 위해 접근하는 화일
ex) 급여 마스터 화일
1.2 화일의 연산
화일 조직 방법의 중요 결정 요소
- 화일의 사용 형식
- 화일 연산의 성격
화일의 사용 형식
- 일괄 처리(batch) 형식
마스터 화일을 효율적으로 접근하도록 트랜잭션들을 그룹으로 구성함
트랜잭션 그룹을 처리하는 성능이 중요 - 대화(interactive) 형식
트랜잭션이 터미널에 도착하는 대로 구성하고 처리함
각 트랜잭션을 처리하는 성능이 중요
화일에 대한 기본 연산
화일 생성
데이터 골격의 설계(데이터 정의)
데이터 수집 및 확인
데이터 적재(저장 장치에 저장)
- 공간 할당(새로운 화일에 대한 디렉터리 엔트리가 만들어짐, 화일 이름 위치 등과 같은 정보 있음)
- 데이터를 일괄 적재
- 한 번에 한 레코드씩 구성
화일 기록
화일 이름과 기록할 데이터를 명세
디렉토리 조사해서 화일 위치 검색
마스터 화일의 내용을 기록 또는 출력
- 레코드 내용의 변경(update)
- 새로운 레코드의 삽입(insert)
- 기존 레코드 삭제(delete)
화일 판독
화일의 이름과 판독해야 될 블록을 명세
마스터 화일의 내용을 판독 또는 입력
- 디렉토리 조사(기록 연산과 비슷) -> 화일의 위치와 판독해야 할 레코드의 주소 찾음(파일 찾기)
화일 삭제
디렉토리 조사해서 화일 위치 검색
할당된 디스크 공간 반환, 디렉터리 엔트리 삭제(경로 삭제)
화일 개방
메모리에 올려놓는 행위
연산을 수행할 수 있도록 화일 준비
화일 개방 후 판독과 기록 가능
메인 메모리에 화일 전송을 위한 버퍼 할당
화일 폐쇄
화일 사용 종료
버퍼의 출력 데이터를 디스크에 기록
할당된 버퍼를 반환
1.3 화일 구조 선정 요소
메인 메모리의 데이터 구조
- 메인 메모리의 데이터 구조는 비교 연산 횟수로 평가
- 데이터 접근 시간은 모두 일정한 것으로 가정(사실 같음)
보조 저장 장치의 화일 구조
- 화일의 데이터 접근 시간이 메인 메모리에 비해 상당히 길다.
- 보조 저장 장치의 접근 횟수가 프로그램 성능 평가의 주요 요소 -> 백업해두면 빨라짐
--> 화일 구조 선정의 중요성
화일 구조 선정 요소
화일의 가변성
- 전체 레코드 수에 대해 추가되거나 삭제되는 레코드 수
- 가변성이 높은 동적 화일은 빠른 접근과 갱신 필요 -> 쓰는 속도 중요
화일의 성격
- 내용이 변하지 않는 정적 화일(과거의 기록) -> 읽는 속도 중요
- 내용이 자주 변하는 동적 화일(현재의 상황 데이터) -> 쓰는 속도 중요
화일의 활동성
주어진 기간 동안에 화일의 총 레코드 수에 대해 접근한 레코드 수의 비율
활동성이 높으면 순차 화일 구조가 유리
화일의 사용 빈도수
화일의 가변성과 활동성에 대해 밀접하게 관련
일정 기간 동안의 화일의 사용 빈도수 -> 갱신과 관련
화일 구조에 제한되어 있는 접근 방법이 사용 빈도수에 장애
빈도수가 낮으면 순차 화일 구조에 유리(일괄처리 ex.비디오테이프)
빈도수가 높으면 임의 접근 구조에 유리(별도의 저장공간 필요)
응답 시간
- 검색이나 갱신에 대해 요구하는 지연 시간
- 빠른 응답 시간 조건에는 임의 접근 방법 선택
- 정렬된 키를 이용한 순차 접근 방법 가능
화일 크기
레코드 수와 각 레코드 길이가 화일 크기 결정
시간이 지남에 따라 화일 크기는 성장(레코드 길이 확장, 삽입되는 레코드로 인한 레코드 수 증가)
재조직 방지를 위한 성장을 유연하게 수용할 수 있는 구조 필요(파일의 크기 고려)
화일 접근 유형
화일 연산의 유형과 접근 형식에 따라 화일 구조 결정
ex) 화일 접근이 판독 위주의 접근인지 갱신 위주의 접근인지,
화일 레코드들을 순차 접근이 주도되는지 임의 접근이 주도되는지
'file' 카테고리의 다른 글
[파일처리] 2. 화일 저장장치 (0) | 2023.04.20 |
---|