기본 개념
같은 데이터로도 처리 방법에 따라 다양한 정보가 나온다.
레코드
- 관련 있는 속성들의 집합
데이터 필드 (field) / 애트리뷰트 (attribute) / 데이터 항목 (item)
- 이름을 가진 논리적 데이터의 최소 단위
- 특정 객체(object, entity)의 한 성질을 표현
레코드 타입 (record type)
- 논리적으로 서로 연관된 데이터 필드들의 집합 / Entity type
레코드 어커런스 (record occurrence)
- 한 레코드 타입의 인스턴스(instance)
- 레코드 타입의 각 필드에 따라 실제 값이 들어가 어떤 특정 객체를 나타내는 것
- 보통 레코드(record)라고 함
화일
- 어떤 응용 목적을 위해 함께 저장된 레코드 집합 (Ex. 급여, 인사, 재무 등)
- 보통 보조 저장장치에 저장
화일구조
- 데이터의 표현과 연산의 조합
데이터를 화일로 구성하는 이유
- 메인 메모리에 전부 적재하기에는 양이 많다.
- 프로그램은 특정 시간에 데이터 집합의 일부에만 접근한다. (데이터 전부를 메인 메모리에 한번에 저장시킬 필요X)
- 데이터를 특정 프로그램과 별도로 보관시켜 데이터의 독립성을 유지하기 위해서
화일의 분류 (화일의 기능에 따라)
마스터 화일 (Master file)
- 어느 한 시점에서 조직체의 업무의 정적인 면을 나타내는 데이터의 집합. (Ex. 급여 마스터 화일, 고객 마스터 화일 등)
- 삽입, 삭제, 갱신을 통해 비교적 영속적인 데이터 레코드를 포함
- 현재성(currency)을 정확히 유지함으로써 현실 세계에 대한 정확한 정보 제공 / 보통 ‘화일’이란 마스터 화일을 의미
트랜잭션 화일 (Transaction file)
- 마스터 화일에 적용할 트랜잭션(DB를 수정하기 위한 연산들의 집합)들을 모아 저장한 파일
- 트랜잭션 : 논리적인 작업 단위, 하나로 처리되어야 하는 분리될 수 없는 연산 그룹
- Ex. 삽입 insert, 삭제 delete, 수정 modify
보고서 화일 (Report file)
- 사용자에게 데이터의 검색 결과를 보여주기 위해 데이터를 일정한 형식으로 정리해서 저장해 놓은 화일
- Ex. 보고서 출력, 화면 출력 등
작업 화일 (Work file)
- 어느 프로그램에서 생성된 출력 데이터를 다른 프로그램의 입력 데이터로 사용하기 위해 만드는 임시 화일
- 최종 목표를 달성하는 과정에서 만들어지는 중간 결과를 저장하는 화일
- 영속적X, 임시적 화일(temporary file)
프로그램 화일 (Program file)
- 데이터를 처리하기 위한 명령어들을 저장하고 있는 화일
- 고급언어(C, Java), 저급어(어셈블리어)로 작성
- 원시 코드(source code), 목적코드(object code) 형태
텍스트 화일 (Text file)
- 문자 숫자(Alphanumeric)와 그래픽 데이터를 포함하고 있는 화일
- 텍스트 편집기의 입력과 출력으로 사용
- 여러 텍스트 편집기에 의해 처리될 수 있음
화일의 분류 (화일의 접근 목적에 따라)
입력 화일 (Input file)
- 프로그램이 판독(READ)을 위해 접근하는 화일
- 원시코드 프로그램 화일 : 컴파일러의 입력 화일
출력 화일 (Output file)
- 프로그램이 기록(WRITE)을 위해 접근하는 화일
- 목적코드 프로그램 화일 : 컴파일러의 출력 화일
입/출력 화일 (Input/Output file)
- 프로그램의 실행 중 판독도 하고 기록도 하기 위해 접근하는 화일
- Ex. 급여 마스터 화일 등
화일의 연산
화일 조직 방법의 중요 결정 요소
- 화일의 사용 형식
- 화일 연산의 성격
일괄처리(batch) 형식
- 마스터 화일을 효율적으로 접근하도록 트랜잭션을 구성
- 트랜잭션 그룹을 처리하는 성능이 중요
대화(interactive) 형식
- 트랜잭션이 터미널에 도착하는 대로 구성하고 처리
- 각 트랜잭션의 처리 성능이 중요
화일 생성 (File creation)
- 데이터 골격의 설계(데이터 정의)
- -> 데이터의 수집과 확인
- -> 데이터 적재 (공간 할당, 데이터 일괄 적재, 한 번에 한 레코드씩)
화일 기록 (File Write)
- 마스터 화일의 내용을 기록 (기존 레코드 변경 update, 새로운 레코드 삽입 insert, 기존 레코드 삭제 delete)
화일 판독 (File Read)
- 판독해야 할 화일 이름과 블록을 명세
- 디렉터리 조사(화일의 위치와 레코드의 주소) (화일 기록의 연산과 비슷)
화일 삭제 (File delete)
- 디렉터리로부터 화일 위치 검색
- 할당된 디스크 공간 반환
- 디렉터리 엔트리 삭제
화일의 개방과 폐쇄 (File open and close)
- 개방 : 연산을 할 수 있도록 화일 준비 / 화일 개방 후 판독과 기록 가능 / 메인 메모리에 화일 전송을 위한 버퍼 할당
- 폐쇄 : 화일 사용 종료 / 버퍼의 출력 데이터를 디스크에 기록 / 할당된 버퍼를 반환
화일 구조 선정 요소
메인 메모리의 데이터 구조는 ‘비교 연산 횟수’로 평가
데이터 접근 시간은 동일하다고 가정
보조 저장장치는 데이터 접근 시간이 메인 메모리에 비해 길다.
보조 저장장치의 접근 횟수가 프로그램 성능 평가의 주요 요소 -> 화일 구조 선정의 중요성
가변성 (volatility)
- 전체 레코드 수에 대해 추가되거나 삭제되는 레코드 수
- 내용이 변하지 않는 ‘정적 화일’ (과거의 기록 등)
- 내용이 자주 변하는 ‘동적 화일’ (현재 상황 데이터 등)
- 동적 화일은 빠른 접근과 갱신이 필요
활동성 (activity)
- 주어진 기간 동안에 화일의 총 레코드 수에 대해 접근한 레코드 수의 비율
- 높으면 순차 화일 구조가 유리
사용 빈도수 (frequency of use)
- 일정 기간 동안의 화일의 사용 빈도수
- 가변성과 활동성에 밀접히 연관
- 특정 화일 구조에 제한된 접근 방법은 사용 빈도수에 장애가 될 수 있다
- 빈도수가 낮으면 순차 화일 구조 유리
- 빈도수가 높으면 임의 접근 구조 유리
응답 시간 (response time)
- 검색이나 갱신에 대해 요구하는 지연 시간
- 빠른 응답 시간을 요구 -> 임의 접근 방법 선택
- 정렬된 키를 이용한 레코드 검색 -> 순차 접근 방법 가능
화일 크기 (file size)
- 레코드 수와 각 레코드의 길이가 화일 크기를 결정
- 시간이 지남에 따라 화일 크기는 성장
- 성장을 유연하게 수용할 수 있는 구조가 필요
화일 접근 유형
- 화일에 접근해서 수행하는 ‘연산의 유형’과 ‘접근 방식’에 따라 결정
- 판독 위주 접근? vs 갱신 위주 접근?
- 순차 접근이 주도? vs 임의 접근이 주도?
'File Processing [FP]' 카테고리의 다른 글
[FP] 06. 인덱스 구조 (2) | 2024.01.23 |
---|---|
[FP] 05. 화일의 정렬/합병 (0) | 2024.01.22 |
[FP] 04. 순차 화일 (1) | 2024.01.22 |
[FP] 03. 화일 입출력 제어 (2) | 2024.01.21 |
[FP] 02. 화일 저장장치 (0) | 2024.01.19 |