본문 바로가기

정보처리기사_실기

정보처리기사 47 ~ 63 (시스템 카탈로그 ~ 정렬)

 

  • 시스템 카탈로그 (Catalog)
    • 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
    • 좁은의미로 데이터 사전 이라고도 함
    • 메타 데이터 (Meta-Data)
      • 시스템 카탈로그에 저장된 정보
      • 유형
        • 데이터베이스 객체 정보, 사용자 정보, 무결정 제약조건 정보
    • 데이터 디렉터리 (Data-Directory)
      • 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
  • 데이터베이스 저장 공간 설계
    • 테이블
      • 데이터베이스의 가장 기본적인 객체
      • 행(Row)와 열(Column)으로 구성
      • 종류
        • 일반 테이블
        • 클러스터드 인덱스 테이블 : 기본키나 인덱스의 순서에 따라 데이터가 저장되는 테이블
        • 파티셔닝 테이블 : 대용량 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블
        • 외부 테이블
        • 임시 테이블 : 트랜잭션이나 세션별로 데이터를 저장하고 처리
  • 트랜잭션 (Transaction)
    • 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
    • 병행제어 및 회복작업에 사용
    • 특성
      • 원자성 (Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않. 도록 복구(Rollback) 되어야 함
      • 일관성 (Consistency) : 트랜잭션이 성공적으로 완료되면 언제나 일관성있는 데이터베이스 상태로 변한함
      • 격리성 (Isolation) : 한 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
      • 영속성 (Durability) : 트랜잭션의 결과는 시스템이 고장나도 영구적으로 반영되어야 함
    • CRUD 분석
      • 프로세스와 테이블 간 CRUD 매트릭스를 만들어 트랜잭션을 분석하는 것
      • 트랜잭션이 몰리는 테이블 파악 가능
      • 행(Row)에는 프로세스, 열(Column)에는 테이블
      • Create, Read, Update, Delete
    • 트랜잭션 분석
      • CRUD 매트릭스를 기반으로 DB의 용량 산정 및 구조의 최적화 목적
  • 인덱스 (Index)
    • 데이터 레코드를 빠르게 접근하기 위해 <키, 값 포인터> 쌍으로 구성되는 데이터 구조
    • 물리적 구조에 접근하는 방법 제공
    • 종류
      • 트리 기반 인덱스 : 인덱스를 저장하는 불록이 트리구조를 이룸
      • 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit값으로 변환
      • 함수 기반 인덱스
      • 비트맵 조인 인덱스
      • 도메인 인덱스 : 필요한 인덱스를 직접 만들어 사용
    • 클러스터드 인덱스
      • 인덱스 키의 순서에 따라 데이터가 정렬되어 저장
    • 넌클러스터드 인덱스
      • 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
  • 뷰 (View)
    • 하나 이상의 기본 테이블로부터 유도된 가상테이블
    • 정의할때 Create, 제거할때 Drop
    • 장점
      • 논리적 독립성 제공
      • 데이터 관리를 편리하게 해줌
      • 자동 보안 제공
    • 단점
      • 독립적인 인덱스를 가질 수 없음
      • 뷰의 정의 변경 불가능
      • 삽입, 삭제, 갱신 연산에 제약
  • 클러스터 (Cluster)
    • 동일한 성격의 데이터를 동일한 데이터블록에 저장하는 물리적 저장 방법
    • 조회 속도 향상 BUT 삽입, 삭제, 수정 성능 저하
    • 종류
      • 단일 테이블 클러스터링 : 처리 범위가 넓은 경우
      • 다중 테이블 클러스터링 : 조인이 많이 발생하는 경우
  • 파티션 (Partition)
    • 대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
    • 장점
      • 쿼리 성능 향상
      • 디스크 성능 향상
      • 속도 향상
      • 가용성 향상
    • 단점
      • 비용 증가
      • 세심한 관리 요구
      • 저용량 테이블에 파티셔닝을 수행하면 오히려 성능 저하
    • 종류
      • 범위 분할 (Range) : 열의 값 기준으로 분할
      • 해시 분할 (Hash) : 해시 함수를 적용하여 분할, 데이터가 고른 컬럼에 효과적(주민번호, 전화번호 ..)
      • 조합 분할 (Composite) : 범위 분할 후 해시 분할, 범위 분할 파티션이 너무 큰 경우 사용
  • 분산 데이터베이스
    • 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
    • 목표
      • 위치 투명성 (Location Transparency) : 데이터베이스의 실제 위치를 알 필요 없이 논리적 명칭만으로 액세스 가능
      • 중복 투명성 (Replication Transparency) : 데이터의 중복이 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용
      • 병행 투명성 (Concurrency Transparency) : 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향을 받지 않음
      • 장애 투명성 (Failure Transparency) : 장애에도 불구하고 트랜잭션을 정확하게 처리해야함
    • 분산 설계 방법
      • 테이블 위치 분산
      • 분할
        • 규칙 : 완전성, 재구성, 상호 중첩 배제
        • 방법 : 수평 분할 (행 단위), 수직 분할 (속성 단위)
      • 할당
        • 동일한 분할을 여러 개의 서버에 생성
  • 데이터베이스 이중화 (Replication)
    • 동일한 데이터베이스를 복제하여 관리
    • 분류
      • Eager 기법 : 데이터의 변경이 발생하면 모든 데이터베이스에 즉시 전달하여 즉시 적용
      • Lazy 기법 : 트랜적션 수행 종료 후 데이터베이스에 전달
    • 구성 방법
      • 활동-대기 : 하나의 DB가 활성상태, 다른 하나의 DB는 대기상태
      • 활동-활동 : 두개의 DB가 서로 다른 서비스를 제공하다가 한쪽이 다운되면 다른 한쪽이 서비스 제공
    • 클러스터링
      • 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
      • 종류
        • 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 서버가 받아서 처리하여 서비스 중단을 방지
        • 병렬 처리 클러스터링 : 하나의 작업을 여러개의 서버에 분산하여 처리
    • RTO (목표 복구 시간)
      • 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미
    • RPO (목표 복구 시점)
      • 업부 중단 시점으로부터 데이터를 복구할 수 있는 기준점
  • 데이터베이스 보안
    • 암호화 (Encryption)
      • 데이터 송신시 암호문으로 변환하는 것
      • 기법 : 개인키 암호화 방식, 공개키 암호화 방식
    • 접근 통제
      • 객체와 주체 사이의 정보 흐름을 제한하는 것
      • 접근 통제 기술
        • DAC (임의 접근 통제) : 사용자의 신원에 따라 접근 권한을 부여
        • MAC (강제 접근 통제) : 사용자의 등급에 따라 접근 권한을 부여
        • RBAC (역할 기반 접근 통제) : 사용자의 역할에 따라 접근 권한을 부여
      • 접근 통제 3요소
        • 접근 통제 정책
          • 허용 여부를 정의하는 것
          • 종류
            • 신분 기반 정책
              • 신분에 근거하여 접근 제한
              • IBP : 단일 주체에 대한 접근 제한
              • GBP : 복수 주체에 대한 접근 제한
            • 규칙 기반 정책
              • 권한에 근거하여 접근 제한
              • MLP : 사용자나 객체별로 접근 제한
              • CBP : 집단별로 접근 제한
            • 역할 기반 정책
              • GBP의 변형, 역할에 근거하여 접근 제한 
        • 접근 통제 매커니즘
          • 정의된 접근통제 정책을 구현하는 기술적인 방법
          • 보안 등급, 패스워드, 암호화 등..
        • 접근 통제 보안모델
          • 기밀성 모델 : 군사적인 목적으로 개발
          • 무결성 모델 : 불법적인 정보 변경을 방지
          • 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨 것, 대표적으로 접근통제행렬이 있음
          • 조건
            • 값 종속 통제
            • 다중 사용자 통제
            • 컨텍스트 기반 통제
  • 데이터베이스 백업
    • 장애에 대비하여 저장된 데이터를 보호하고 복구하기 위한 작업
    • 로그파일
      • 데이터베이스의 처리 내용이나 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
      • 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 일관성 유지
    • 복구 알고리즘
      • No-UNDO / REDO : 데이터베이스 버퍼의 내용을 비동기적으로 갱신한 경우
      • UNDO / No-REDO : 데이터베이스 버퍼의 내용을 동기적으로 갱신한 경우
      • UNDO / REDO : 데이터베이스 버퍼의 내용을 동기/비동기적으로 갱신한 경우
      • No-UNDO / No-REDO : 동기적으로 기록하지만 다른 영역에 기록한 경우
    • 종류
      • 물리 백업 : 데이터베이스의 파일을 백업
      • 논리 백업 : 논리적 객체들을 백업
  • 스토리지 (Storage)
    • 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
    • DAS (Direct Attached Storage)
      • 서버와 저장장치를 전용 케이블로 직접 연결
      • 빠른 속도
      • 유지보수 비용 저렴
      • 확장성 및 유연성 저하
    • NAS (Network Attached Storage)
      • 서버와 저장장치를 네트워크를 통해 연결
      • 파일 공유 가능
      • 확장성 및 유연성 우수
    • SAN (Storage Area Network)
      • SAN + NAS
      • 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성
      • 파이버 채널(FC) 스위치를 이용하여 네트워크 구성
      • 확장성, 유연성, 가용성 뛰어남
  • 논리 데이터 모델 변환
    • 규칙
      • 논리(엔티티) → 물리(테이블)
      • 논리(속성) → 물리(컬럼)
      • 논리(주 식별자) → 물리(기본키)
      • 논리(외래 식별자) → 물리(외래키)
      • 논리(관계) → 물리(관계)
    • 슈퍼타입/서브타입을 테이블로 변환
      • 슈퍼타입 기준 테이블 변환 : 서브타입을 슈퍼타입에 통합
      • 서브타입 기준 테이블 변환 : 슈퍼타입의 속성들을 서브타입에 추가
      • 개별타입 기준 테이블 변환 : 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
    • 속성을 컬럼으로 변환
      • 일반 속성 변환, Primary UID를 기본키로 변환, Primary UID(관계의 UID)를 기본키로 변환, Secondary UID를 유니크키로 변환
  • 물리데이터 모델 품질 검토
    • 기준 : 정확성, 완전성, 준거성, 최신성, 일관성, 활용성
  • 자료 구조
    • 자료를 기억장치 내에 저장하는 방법과 처리 방법등을 연구 분석하는 것
    • 분류
      • 선형 구조
        • 배열 (Array)
          • 크기와 형(Type)이 동일한 자료들이 순서대로 나열된 자료의 집합
          • 데이터 삭제 시 메모리 낭비가 발생
        • 선형 리스트
          • 연속 리스트 (Continuous List)
            • 연속되는 기억장소에 저장되는 자료 구조
            • 삽입.삭제 시 자료의 이동 필요
          • 연결 리스트 (Linked List)
            • 자료들을 임의의 공간에 기억시키고 노드의 포인터를 이용하여 서로 연결
              • 포인터 : 현재의 위치에서 다음 노드의 위치를 알려주는 요소
        • 스택 (Stack)
          • 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조
          • 후입선출 (LIFO) 방식
          • 기억공간이 없을 때 삽입 = 오버플로, 자료가 없을 때 삭제 = 언더플로
        • 큐 (Queue)
          • 한쪽 끝에서는 삽입 작업이 다른 한쪽에서는 삭제 작업이 이루어지는 자료 구조
          • 선입선출 (FIFO) 방식
          • 시작을 표시하는 프런트 포인터와 끝을 표시하는 리어 포인터
      • 비선형 구조
        • 그래프
          • 정점과 간선의 두 집합으로 이루어지는 자료구조
          • 방향 그래프
            • 최대 간선 수 : n(n-1)
          • 무방향 그래프
            • 최대 간선 수 : n(n-1)/2
        • 트리 (Tree) 
          • 정점과 선분을 이용하여 사이클을 이루지 않는 그래프의 특수한 형태트리 관련 용어
            • 근 노드 (Root) : 트리의 맨 위에 있는 노드 (A)
            • 디그리 : 각 노드에서 뻗어나온 가지의 수 (B의 Degree는 2)
            • 단말 노드 : 자식이 없는 노드 (H, I, E, F, G)
            • Level : 근 노드의 Level을 1로 가정하면 자식 노드는 L+1 (F의 레벨은 3 _ 위 사진은 근 노드의 레벨을 1로 가정)
            • 깊이 : 트리가 가질 수 있는 최대 레벨 (4)
            • 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수 (2)
            • 이진 트리
              • 디그리가 2 이하인 노드들로 구성된 트리

트리

  • 트리의 운행법
    • PreOrder (전위 순회)
      • 중간 → 왼쪽 → 오른쪽
      • 결과 : A, B, D, H, I, E, C, F, G
    • InOrder (중위 순회)
      • 왼쪽 → 중간 → 오른쪽
      • 결과 : H, D, I, B, E, A, F, C, G
    • PostOrder (후위 순회)
      • 왼쪽 → 오른쪽 → 중간
      • 결과 : H, I, D, E, B, F, G, C, A
  • 수식의 표기법
    • 전위 표기법
      • 연산자 → 왼쪽 → 오른쪽
      • +AB
    • 중위 표기법
      • 왼쪽 → 연산자 → 오른쪽
      • A + B
    • 후위 표기법
      • 왼쪽 → 오른쪽 → 연산자
      • AB+
  • 정렬
  • 삽입 정렬 (Insertion Sort)
    • 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
    • 시간복잡도 = O(n²)

 

  • 선택 정렬 (Slection Sort)
    • 최소값을 찾아 첫번째 위치에 놓고 나머지 값 중 다시 최소값을 찾아 두번째에 놓는 방식을 반복
    • 시간 복잡도 = O(n²)

 

  • 버블 정렬 (Bubble Sort)
    • 인접한 두개의 값을 비교하여 크기에 따라 서로 위치 교환
    • 시간 복잡도 = O(n²)

 

  • 쉘 정렬 (Shell Sort)
    • 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 삽입정렬 방식으로 순서 배열
    • 최악 시간 복잡도 = O(n²)
  • 퀵 정렬 (Quick Sort)
    • 키를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브파일에 분해시켜 정렬
    • 평균 시간 복잡도 = O(nlog₂n), 최악 시간 복잡도 = O(n²)
  • 힙 정렬 (Heap Sort)
    • 전이진 트리를 이용한 정렬
    • 시간 복잡도 = O(nlog₂n)
  • 2-Way 합병 정렬
    • 이미 정렬되어 있는 두개의 파일을 한개로 합치는 정렬
    • 시간 복잡도 = O(nlog₂n)
  • 기수 정렬 (Radix Sort)
    • Queue를 이용하여 자릿수(Digit) 별로 정렬
    • 시간 복잡도 = O(dn)