[정보처리기사 필기] 기출문제 - 451 ~ 500. 오답노트

451. 단일 테이블 클러스터링, 다중 테이블 클러스터링

  • 단일 테이블 클러스터링
    • 하나의 테이블에서 특정 칼럼을 클러스터 키로 생성하여 액세스의 효율성을 높임 : 동일한 값을 같은 장소에 저장
    • 지정된 클러스터에 하나의 테이블만 생성
    • 클러스터 인덱스를 경유하여 여러 건의 테이블 로우를 한 번의 스캔을 통하여 액세스하므로 랜덤 액세스 건수가 크게 줄어듦
  • 다중 테이블 클러스터링
    • 하나의 단위 클러스터에 여러 개의 테이블을 생성
    • 기준되는 컬럼의 값이 동일한 각각 테이블의 로우들이 하나의 단위 클러스터에 저장되므로 기준 컬럼값으로 관련 테이블을 조인할 경우 추가적인 각 테이블들의 로우들이 흩어져 저장되는 경우에 발생하는 추가적인 액세스가 불필요하여 높은 성능의 조인이 가능

453. 테이블 크기 산정

  • 한 Row 저장에 필요한 공간, 한 블록의 데이터 공간, 한 블록에 들어갈 수 있는 Row 개수, 총 데이터 Row 개수를 차례로 구하면서 필요한 총 데이터 공간을 산정
  • 한 Row 저장에 필요한 공간
    • Row Directroy + Row Header + Row의 데이터 길이 + )1 * <250bytes 이하 컬럼개수>) + (3 * <250bytes 초과 컬럼개수>)
  • 한 블록의 데이터 공간
    • (Block Size • Block Header • ITL 공간) * (100 • PCTFREEE)/100
  • 한 블록에 들어갈 수 있는 Row 개수
    • Data Space per Block (한 블록의 데이터 공간) / Row Space (한 Row의 저장에 필요한 공간)
  • 총 데이터 Row 개수
    • <초기 예상 건수> + <월중 예상 추가 건수> * (<데이터 보관 월 수> + 1)
  • 필요한 총 데이터 공간
    • Block Size * Total Row Size (총 데이터 Row 개수) / Row Size per Block (한 블록에 들어갈 수 있는 Row 개수)

454. 데이터 지역화

  • 데이터베이스의 저장 데이터를 효율적으로 이용할 수 있도록 저장하는 방법
  • 물리적 데이터베이스 설계
    • 데이터 지역화를 고려한 보조 기억 장치의 설계는 중요함으로 물리적 데이터베이스 설계, 보조 기억 장치의 역할, 디스크상의 파일의 배치를 지역화 관점에서 검토를 수행
    • 물리적 데이터베이스 설계의 고려사항
      • 논리적인 설계의 데이터 구조를 보조 기억 장치상의 파일 (물리적인 데이터 모델)로 사상
      • 하나의 파일에 여러 릴레이션이 저장될 수 있음
      • 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션들을 분석
      • 데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근 방법들을 다룸
      • 질의를 효율적으로 지원하기 위해 인덱스 구조를 적절히 사용

458. 속성의 유형

  • 정보를 나타내는 최소의 단위
  • 엔티티의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부 항목
  • 속성의 유형
    • 기본 속성 : 해당 엔티티가 원래 가지고 있는 속성
    • 설계 속성
      • 원래 업무에는 존재하지 않지만 시스템의 효율성을 위해 임의로 추가되는 속성
      • 예시 : 코드, 일련번호
    • 파생 속성
      • 다른 속성으로부터 계산이나 변형되어 생성되는 속성
      • 데이터 중복성 및 무결성 확보를 위해 가급적 적게 정의 : 트리거 이용, 계산된 컬럼 Computed Column 선언

461. 물리 모델링 변환 과정 중 슈퍼 타입 기준 엔티티 통합, 서브 타입 기준 엔티티 통합

  • 슈퍼 타입 기준 엔티티 통합
    • 슈퍼 타입 엔티티를 중심으로 통합
    • 서브 타입 엔티티와 단일 테이블로 통합
      • 단일 테이블 통합으로 유리한 경우
        • 데이터의 액세스가 상대적으로 용이, 수행 속도가 좋아지는 경우가 많음
        • 뷰를 이용하여 각각의 서브 타입만을 액세스하거나 수정
        • 서브 타입 구분이 없는 임의 집합에 대한 가공이 용이
      • 단일 테이블 통합으로 불리한 경우
        • 특정 서브 타입에 대한 Not Null 제한이 어려움
        • 테이블의 컬럼 및 블록 수가 증가
        • 처리마다 서브 타입에 대한 구분이 필요한 경우가 많이 발생
  • 서브 타입 기준 엔티티 통합
    • 슈퍼 타입 속성들을 각각의 서브 타입에 추가하여 서브 타입마다 하나의 테이블로 변환
      • 복수의 테이블로 분할이 유리한 경우
        • 각 서브 타입 속성들의 선택 사양이 명확한 경우에 유리
        • 서브 타입 유형에 대한 구분을 처리 마다할 필요가 없음
        • 전체 테이블을 스캔하는 경우 유리
      • 복수의 테이블로 분할이 불리한 경우
        • 서브 타입 구분 없이 데이터를 처리하는 경우에 UNION이 발생
        • 처리 속도 감소가 발생할 가능성이 높음
        • 트랜잭션을 처리하는 경우 다수 테이블을 처리하는 경우가 자주 발생

462. 반정규화

  • 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상, 개발과 운영을 단순화하기 위해 데이터 모델을 통합하는 프로세스
  • 데이터의 적합성과 데이터의 무결성을 우선으로 할 지 데이터베이스 구성의 단순화와 성능을 우선으로 할지를 결정
  • 반정규화 수행절차
    • 반정규화(역정규화) 대상 조사
      • 범위 처리 빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고, 항상 일정한 범위만 조회하는 경우
      • 대량의 범위 처리 조사 : 대량의 데이터 범위를 자주 처리하는 경우
      • 통계성 프로세스 조사 : 별도의 통계 테이블 고려
      • 테이블 조인 개수 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우
    • 다른 방법 유도 검토
      • 뷰 테이블 사용 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우
      • 클러스터링 또는 인덱스 적용 : 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리 (파티셔닝 기법)
      • 어플리케이션 수정 : 로직을 번경함으로써 성능을 향상
    • 반정규화(역정규화) 적용
      • 테이블 반정규화
      • 속성의 반정규화
      • 관계의 반정규화

464. 테이블 반정규화, 테이블 분할 기법

  • 테이블 분할 기법
    • 수직 분할 기법 : 특정 속성들만 접근이 잦을 경우 컬럼을 쪼개서 테이블을 만들어 사용하는 기법
    • 수평 분할 기법 : 스키마는 동일하지만, 그 데이터 값을 이용하는 방법이 row별로 구분 지어지는 경우 (연도별 이력 조회 등)에 사용하는 기법
  • 테이블 반정규화
    • 중복테이블 추가 : 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격 조인을 제거하여 성능 향상
    • 통계테이블 추가 : SUM, AVG 등을 미리 수행하여 자동 계산해둠으로써 조회 시 성능 향상
    • 이력테이블 추가 : 마스터 테이블에 존재하는 레코드를 중복하여 이력테이블에 존재하는 방법
    • 부분테이블 추가 : 하나의 테이블의 전체의 컬럼 중 자주 이용하는 집중화된 컬럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 컬럼들을 모아놓은 별도의 반정규화된 테이블

471. 초기 데이터 구축

  • 단시일에 대량의 데이터를 전환함에 있어 발생할 수 있는 위험을 최소화하고 신속하고 안정적인 이행 작업을 수행하기 위해 원천 시스템에서 특정 데이터들을 사전에 추출 및 변환해서 적재할 수 있도록 데이터베이스 혹은 데이터 파일로 구축해 두는 과정
  • 기존 운영 시스템에 대한 이해를 바탕으로 구축 범위를 명확하게 식별해야 하며, 초기 데이터 구축 시 발생할 수 있는 예상 문제점을 도출하여 사전에 대응 방안을 마련
  • 초기 데이터 구축 절차 : 구축 전략 수립 → 구축 대상 파악 → 구축 범위 확정 → 세부 고려사항 도출
  • 초기 데이터 구축을 통한 기대효과
    • 데이터 이관 시 업무 중단을 최소화, 안정성을 확보할 수 있는 방안 마련
    • 데이터 이관 정합성 검증 방안과 오류 데이터에 대한 정비 방안 마련
    • 데이터 이관 완료 후 데이터의 품질 검증 (전후 비교) 방안 마련
    • 암호화된 개인정보에 대한 처리 방안 마련

472. ETL

  • 다양한 소스 시스템으로부터 필요한 데이터를 추출하여 변환 작업을 거쳐 타겟 시스템으로 전송 및 로딩하는 모든 과정
  • ETL의 변환 작업
    • 특수한 엔진에서 진행
    • 종종 변환 중인 데이터가 준비 테이블에서 임시로 보유되었다가 대상에 로드
    • 일반적으로 발생하는 데이터 변환에는 필터링, 정렬, 집계, 데이터 조인, 데이터 정리, 중복 제거 및 데이터 유효성 검사 등의 작업이 포함
  • ETL 프로세스별 방법
    • 추출 E : JDBC, ODBC 기술의 이용, Flat File 생성, CDC 등
    • 변형 T : 재구성, 정제(중복 제거, 일관성 확보), 변환(target repository에 적합한 형태), 데이터필드 검사, Rule 적용(전체 작업의 80% 소요)
    • 적재 L : DBMS 고유 기능 / Utility (append, delete / insert, update) 이용

473. 색인 순차 파일

  • ISAM : Index Sequential Access Method
  • 순차 처리와 랜덤 처리가 모두 가능하도록 레코들을 키 값 순으로 정렬 (Sort) 시켜 기록
  • 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식
  • 색인을 이용한 순차적인 접근 방법을 제공
  • 레코드를 참조할 때 색인을 탐색한 후 색인이 가리키는 포인터(주소)를 사용하여 직접 참조
  • 일반적으로 자기 디스크에 많이 사용되며, 자기 테이프에서는 사용할 수 없음
  • 색인 순차 파일의 장단점
    • 장점
      • 순차 처리와 랜덤 처리가 모두 가능, 목적에 따라 융통성 있게 처리 가능
      • 효율적인 검색이 가능하고 레코드의 삽입, 삭제, 갱신이 용이
    • 단점
      • 색인 구역과 오버플로우 구역을 구성하기 위한 추가 기억공간이 필요
      • 파일이 정렬되어 있어야 하므로 추가, 삭제가 많으면 효율이 떨어짐
      • 색인을 이용한 액세스를 하기 때문에 액세스 시간이 랜덤 편성 파일보다 느림

474. VSAM 파일

  • 동적 인덱스 방법을 이용한 색인 순차 파일
    • 정적 인덱스 : 데이터 파일 또는 레코드가 삽입되어도 인덱스의 구조가 변하지 않는 인덱스 방법
    • 동적 인덱스 : 인덱스 파일 또는 데이터 파일을 블록으로 구성하고 블록은 추가적인 삽입 레코드를 감안하여 빈 공간을 준비해 둔 인덱스 방법
  • 데이터 레코드가 저장되는 부분인 제어 구간, 몇 개의 제어 구간을 모아 놓은 제어 구역, 제어 구역에 대한 인덱스를 저장한 순차 세트, 순차 세트의 상위 인덱스로 구성
  • 레코드를 삭제 시 그 공간을 재사용함

478. 데이터 검증 방법

  • 추출 검증
    • 현행 시스템에서 최초 원시 데이터에 대한 검증을 수행
    • 제공되는 원천 시스템 데이터에 대한 정합성 확인
  • 전송 검증
    • 전송된 추출 파일의 코드 전환 후 검증
    • 데이터 전송 시 데이터 유실을 확인
  • 전환 검증
    • Tool을 이용해서 데이터를 추출하여 Staging DB를 구성한 후 검증
    • 원천 시스템에서 작성된 검증 보고서와 Staging DB 적재 건수, 금액을 검증
  • 적재 검증
    • 목적 테이블 To-Be 에 대해 데이터를 검증
    • 목적 테이블의 데이터 검증을 통해 오류 및 데이터 누락, 손실 등 확인
  • 통합 검증
    • 매핑 후 검증 (타켓 SAM 파일 또는 타켓 테이블)을 의미
    • 오류 데이터를 분석하여 사전 정비 또는 전환 규칙 오류를 수정 반영

479. 데이터 정제 항목의 단계

  • 전환 테스트 전
    • 정의된 기준에 의하여 전환 제외 대상 데이터의 삭제
    • 데이터 상호 간의 정합성이 유지될 수 있도록 데이터 보완
    • 사용하는 데이터의 경우 매핑 수행
    • 사용하지 않을 경우에는 해당 테이블 삭제
    • 손실된 데이터를 정당한 값으로 복원
    • 정당한 타입의 데이터로 수정
    • 오류 데이터를 정당한 데이터로 변경 불필요한 데이터를 삭제 또는 초기화
  • 전환 테스트 중
    • 사전에 업무 규칙을 적용하여 정의한 정당한 데이터 값으로 정비
    • 동일한 타입으로 전환
    • 1단계 정제 대상 항목의 정제 내용과 동일하게 정제
  • 전환 테스트 후
    • 매핑 정의서에 작성된 전환 규칙을 이용하여 전환 프로그램에 해당 내용을 추가하여 프로그램 수행 시 정제

481. SELECT

  • 테이블에 저장된 데이터 중 특정 컬럼을 조회하고자 할 때는 해당 컬럼 이름을 SELECT 절 뒤에 기술
  • 테이블에 저장된 모든 컬럼의 데이터를 검색하고자 할 때는 컬럼명 없이 아스테리스크(*) 기호를 이용
  • 출력 결과
    • SELECT 명령을 통해 검색한 결과는 중복이 포함된 상태로 출력
    • DISTINCT 키워드를 SELECT 뒤, 컬럼명 앞에 기술하여 검색한 결과는 중복을 제거한 결과를 출력

482. 집합연산자

  • 집합연산 : 테이블을 집합 개념으로 보고, 두 테이블 연산에 집합 연산자를 사용하는 방식
  • 집합 연산자의 유형
    • UNION : 여러 SQL문의 결과에 대한 합집합, 중복 행 제거
    • UNION ALL : 여러 SQL문의 결과에 대한 합집합, 중복행 제거하지 않음
    • INTERSECT : 여러 SQL문의 결과에 대한 교집합, 중복행 제거
    • EXCEPT (MINUS) : 앞의 SQL문의 결과와 뒤의 SQL문의 결과 사이의 차집합, 중복행 제거, 일부 제품의 경우 MINUS 사용

483. SELECT

  • SELECT * FROM 학생 WHERE 이름 = '김철수' ; : 김철수에 대한 전체 컬럼을 조회한 결과
  • SELECT * FROM 학생 WHERE 점수 = 'A' ; : 점수 A를 받은 학생들의 전체 컬럼을 조회한 결과
  • SELECT 이름, 과목, 점수 FROM 학생 WHERE 이름 = '김철수' ; : 학생 Table을 조회한 결과는 문제의 결과와 같이 김철수 학생에 대한 이름, 과목, 점수에 대한 결과값 
  • SELECT 이름, 과목, 점수 FROM 학생 WHERE 점수 = 'A' ; : 점수 A를 받은 학생들의 전체 컬럼을 조회한 결과

487. 외부 조인

  • 왼쪽 외부 조인 LEFT OUTER JOIN
    • 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출
    • 예시
      • SQL 결과
        Select A.이름, A.나이, B.취미
        From A Left Outer Join B
        On A.이름 = B.이름
        김철수, 10, 축구
        김영희, 20, Null
  • 오른쪽 외부 조인 RIGHT OUTER JOIN
    • 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출
    • 예시
      • SQL 결과
        Select A.이름, A.나이, B.취미
        From A Right Outer Join B
        On A.이름 = B.이름
        김철수, 10, 축구
        차길동, Null, 야구
  • 완전 외부 조인 FULL OUTER JOIN
    • 양쪽의 모든 데이터를 추출
    • 예시
      • SQL 결과
        Select A.이름, A.나이, B.취미
        From A Full Outer Join B
        On A.이름 = B.이름
        김철수, 10, 축구
        김영희, 20, Null
        차길동, Null, 야구

489. 권한 허가

  • GRANT 명령문을 사용 : WITH GRANT OPTION를 이용하여 부여받은 권한을 다른 사용자에게 허가가 가능
  • 예시
    • GRANT 권한 [컬럼 리스트] ON 객체 TO {사용자 | 역할 | PUBLIC}
      [ WITH GRANT OPTION ];
    • CUST 테이블에 갱신(UPDATE) 권한을 부여받은 사용자 USER01을 WITH GRANT OPTION 기능에 의해 CUST 테이블을 사용자 USER02에게 권한 부여가 가능
    • WITH GRANT OPTION를 이용하여 부여받은 객체에 권한은 REVOKE 명령문을 사용하여 권한 회수 시 다른 사용자에게 허가했던 권한들도 연쇄적으로 취소되며 기본적으로 권한을 허가했던 사람만 그 권한을 취소 할 수 있음

492. 역할

  • Role : 사용자에게 허가할 수 있는 연관된 권한들의 그룹
  • 각 사용자는 여러 역할에 속할 수도 있으며 여러 사용자가 같은 역할을 가질 수 있음
  • 예시
    • 역할 사용 전
      • GRANT CREATE TABLE, ALTER TABLE, DROP TABLE TO USER01;
        GRANT CREATE TABLE, ALTER TABLE, DROP TABLE TO USER02;
        GRANT CREATE TABLE, ALTER TABLE, DROP TABLE TO USER03;
        REVOKE DROP TABLE FROM USER01;
        REVOKE DROP TABLE FROM USER02;
        REVOKE DROP TABLE FROM USER03;
    • 역할 사용 후
      • 사용자들에게 부여하고자 하는 CREATE TABLE, DROP TABLE를 PROGRAMMER에 부여하여 동일한 권한을 사용자들에게 부여

        CREATE ROLE PROGRAMMER; //역할 PROGRAMMER 생성

        GRANT CREATE TABLE, ALTER TABLE, DROP TABLE TO PROGRAMMER;
        GRANT PROGRAMMER TO USER01; //사용자 USER01에게 PROGRAMMER RNJSGKS QNDU
        GRANT PROGRAMMER TO USER02;
        GRANT PROGRAMMER TO USER03;

        REVOKE DROP TABLE FROM PROGRAMMER;
        //역할의 PROGRAMMER에서 DROP TABLE 권한을 회수하면 PROGRAMMER 권한을 부여받았던 모든 사용자에게서 DROP TABLE 권한이 회수

498. 릴레이션의 카디널리티와 차수

  • 차수 Degree : 속성의 수
  • 카디널리티 Cardinality : 튜플(향)의 수

499. 병행제어 기법

  • 로킹 Locking
    • 데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것을 의미
    • 트랜잭션들은 갱신할 때는 반드시 로킹 → 실행 → 해제의 규칙을 따라 실행
  • 검증 기법 Validation
    • 트랜잭션 처리 시 먼저 메모리상에서 복사본에 대한 연산을 수행하고 검증 완료 시 DBMS에 반영하는 기법
    • 읽기 Read 단계는 메모리상에서 데이터 연산 수행
    • 검증 Validation 단계는 트랜잭션의 직렬성 확인 단계
    • 쓰기 Write 단계는 검증 성공 시 DBMS에 반영하고, 검증 실패 시 철회 Rollback하는 단계
  • 타임 스탬프 기법 Timestamp Ordering
    • 트랜잭션 순서 규칙은 시스템 계수기, 논리적 계수기를 이용하여 해당 트랜잭션의 도착 시간 별로 타임스탬프를 할당하는 기법 : 트랜잭션이 시스템 들어오는 순서대로 고유값 부여
    • 직렬화 기법으로 트랜잭션 간의 순서를 미리 정하는 방법

500. 카티션 프로덕트

  • 조인 조건 : 두 테이블 사이에 속하는 컬럼 값들을 비교 연산자로 연결한 형태
  • 조인 조건을 생략한 경우 또는 조인 조건을 잘못 작성하게 되면 카티션 프로덕트(Cartesian Product, Cross Join) 연산이 수행되어 원하지 않은 결과를 얻게 됨
  • 예시
R1 학번 R2 이름 카티션 프로덕트 수행 결과 학번 이름
1000 홍길동 1000 홍길동
2000 이순신 1000 이순신
    2000 홍길동
    2000 이순신