정보처리기사 실기 - 데이터 입출력 구현

둡둡·2023년 4월 9일

정보처리기사

목록 보기
2/12

데이터베이스(Database)

  • 데이터 저장소
    • 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
    • 논리 데이터저장소: 데이터 및 데이터 간의 연관성, 제약조건 식별 등
    • 물리 데이터저장소: 논리 데이터를 실제 저장장치에 저장함
  • DBMS(DataBase Management System, 데이터베이스 관리 시스템)
    • 필수 기능 3가지
      • 정의(Definition)
      • 조작(Manipulation)
      • 제어(Control)
    • 구성 요소: 도메인, 스키마, 테이블, 뷰, 인덱스
  • 스키마(Schema)
    • 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것
    • 개념 스키마: 데이터베이스의 전체적인 논리적 구조
    • 내부 스키마: 물리적 저장장치 관점의 데이터베이스 구조, 실제 저장되는 레코드의 형식 등
    • 외부 스키마: 사용자나 응용 프로그래머가 필요로 하는 데이터베이스의 논리적 구조 정의

데이터베이스 설계

  • 데이터베이스 설계 고려사항 / 특징
    • 무결성
    • 일관성
    • 회복
    • 보안
    • 효율성
  • 설계 순서
    • 요구사항 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현
  • 개념적 설계(정보 모델링, 개념화)
    • 현실 인식을 추상적 개념으로 표현하는 과정
    • 개념 스키마 모델링, 트랜잭션 모델링, E-R 다이어그램
    • 개체-관계(E-R)모델: 실제 데이터와 관계를 사람이 이해할 수 있는 형태로 표현하는 모델
      • 개체(Entity), 관계(Relationship), 속성(Attribute)
  • 논리적 설계(데이터 모델링)
    • 컴퓨터가 이해할 수 있고 물리적으로 저장할 수 있도록 논리적 자료 구조로 변환시키는 과정
    • 트랜잭션 인터페이스 설계, 정규화 수행
  • 물리적 설계(데이터 구조화)
    • 데이터베이스에 저장할 수 있도록 물리적 구조로 변환하는 과정
    • 반 정규화, 테이블 정의서, 저장 레코드 양식, 접근 경로 등 설계
  • 데이터베이스 구현
    • 위에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정
    • DDL(데이터 정의어) 기술, 트랜잭션 작성

데이터 모델

  • 데이터와 데이터 간 관계, 의미, 제약 조건 등을 기술하기 위한 개념적 도구들로 구성된 개념적 모형
  • 구성 요소
    • 개체: 개념이나 정보 단위 대상체
    • 속성: 데이터베이스를 구성하는 가장 작은 논리적 단위
    • 관계
  • 종류
    • 개념적 데이터 모델
    • 논리적 데이터 모델
    • 물리적 데이터 모델
  • 표현 요소
    • 구조(Structure): 개체 타입들 간의 관계로서 데이터 구조, 어떻게 나타낼 것인지 표현
    • 연산(Operation): 실제 데이터를 처리하는 작업에 대한 명세
    • 제약 조건(Constraint): 릴레이션의 특정 컬럼에 설정하는 제약, 개체 무결성과 참조 무결성 등 논리적인 제약 조건

관계형 데이터베이스(RDBMS)

  • 무결성(Integrity)
    • 데이터베이스에 저장된 데이터와 실제 값이 일치하는 정확성
    • 무결성 제약 조건: 정확성을 보장하기 위해 부정확한 자료를 방지하는 제약 조건
    • 무결성 종류
      • 개체 무결성: 기본키는 null이나 중복값 가질 수 없음
      • 참조 무결성: 외래키는 null이거나 참조의 기본키와 동일해야 함
      • 도메인 무결성
      • 사용자 정의 무결성
      • NULL 무결성
      • 고유 무결성
      • 키 무결성
      • 관계 무결성
  • 관계대수
    • 원하는 정보를 얻기 위해 기술하는 절차적인 언어
    • 일반 집합 연산자: 합집합(∪, 중복제거) 교집합(∩) 차집합(-) 카디션프로덕트(X)
    • 순수 관계 연산자: 셀렉트(σ, 조건만족) 프로젝트(π, 속성만족) 조인(▷◁, 공통속성) 디비전(÷, A의 모든 튜플과 관련있는 B 튜플)
  • 관계해석
    • 관계 데이터의 연산을 표현하는 방법, 비절차적 특성, 계산 수식 사용
    • 수학의 Predicate Calculus(술어 해석) 기반
  • 이상 현상
    • 데이터 종속, 중복성으로 인해 릴레이션을 조작할 때 발생하는 문제 현상
    • 종류: 삽입, 삭제, 갱신 이상
  • DDL 명령어(CADT)
    • DROP TABEL ~ CASCADE(연쇄삭제), RESTRICT(참조중이면 유지), TRUNCATE(모든 데이터 삭제)
  • 집합 연산자
    • UNION(중복제외), UNION ALL(중복포함), INTERSECT(공통값만), MINUS(첫 쿼리에만 있는 값)

정규화

  • 무손실 분해를 바탕으로 데이터 중복성을 제거하여 이상 현상 방지, 일관성과 정확성 유지
  • 정규화 단계(원부이결다조)
    • 1정규형(1NF): 원자값으로 구성
    • 2정규형(2NF): 부분함수 종속 관계 제거(완전 함수적 종속 관계)
    • 3정규형(3NF): 이행함수 종속 제거(A->B, B->C, A->C)
    • 보이스-코드 정규형(BCNF): 모든 결정자가 후보 키가 되도록 하여 결정자 함수 종속 제거
    • 4정규형(4NF): 다치(다중 값) 종속 제거
    • 5정규형(5NF): 조인 종속 제거
  • 반정규화(비정규화, 역정규화)
    • 정규화 데이터 모델을 다시 중복, 통합, 분리하는 모델링 기법

트랜잭션(Transaction)

  • 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 트랜잭션의 특성(ACID)
    • 원자성(Atomicity): 작업의 최소 단위, 전체 반영되거나 안되거나, 부분적으로 반영되거나 실패하지 않음 보장
    • 일관성(Consistency): 항상 일관된 데이터베이스 상태를 보존, 무결성 제약조건, 동시성제어
    • 독립성/격리성(Isolation): 트랜잭션 실행 중에 다른 트랜잭션이 접근 불가
    • 영속성(Durability): 트랜잭션 결과는 영구적으로 반영
  • 병행 제어 기법: 데이터 연산을 모두 마칠 때까지 상호배제
    • 로킹(잠금, Locking)
    • 낙관적 검증/병행 제어(Validation)
      • 일단 수행 후 종료 시 검증
    • 타임 스탬프 기법(Time Stamp)
      • 타임 스탬프에 부여된 시간에 따라 트랜잭션 수행
    • 다중 병행 제어/다중버전 동시성 제어(MVCC)
      • 타임 스탬프를 비교하여 적절한 버전 선택

클러스터링(Clustering)

  • 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
  • 공유 스토리지(NAS, Network Attached Storage)
    • 데이터 저장장치와 서버를 네트워크로 연결하여 파일 및 데이터를 연결함
    • 다수의 사용자와 서버가 데이터 공유 가능
  • 고가용성(HA, High Availability)
    • 시스템을 오랜 시간동안 정상적으로 운영할 수 있도록 함
  • 비즈니스 연속성 계획(BCP, Business Continuity Plan)
    • RTO(Recovery Time Objective, 목표 복구 시간)
      • 업무가 복구되어 재가동될 때까지의 시간
    • RPO(Recovery Point Objective, 목표 복구 시점)
      • 중단시점으로부터 데이터를 복구할 때까지 손실 허용 시점, 마지막 백업 지점
    • Mirror > Hot > Warm > Cold site

데이터베이스 보안

  • 암호화(Encryption)
    • 데이터를 보낼 때 보안을 위해 암호문으로 변환하는 것 (<=> 복호화, Decryption)
  • 암호화 기법
    • 개인키 암호화 방식
    • 공개키 암호화 방식
  • 접근통제
    • 데이터가 저장된 객체와 사용하는 주체 사이의 정보 흐름을 제한하는 것
    • 접근통제 기술
      • 임의 접근통제(DAC, Discretionary Access Control)
        • 신원(Identity)에 따라 접근 권한 부여, 데이터 소유자가 접근통제 권한을 (임의)지정하고 제어함
      • 강제 접근통제(MAC, Mandatory Access Control)
        • 허용 보안 등급을 비교하여 접근 권한 부여, 시스템(관리자)이 통제함
      • 역할 기반 접근통제(RBAC, Role Based Access Control)
        • 사용자의 역할에 따라 접근 권한 부여, 중앙관리자가 통제함

데이터베이스 백업

  • 로그 파일
    • 데이터의 처리 내용 등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
  • 데이터베이스 복구 알고리즘
    • NO-UNDO / REDO : 비동기적 갱신
    • UNDO / NO-REDO : 동기적 갱신
    • UNDO / REDO : 동기/비동기적 갱신
    • NO-UNDO / NO-REDO : 동기적 갱신

스토리지(Storage)

  • DAS(Direct Attached Storage)
    • 서버와 저장장치를 전용 케이블로 직접 연결하는 방식(ex. 외장하드)
  • NAS(Network Attached Storage)
    • 서버와 저장장치를 네트워크를 통해 연결하는 방식
  • SAN(Storage Area Network)
    • 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
    • 파이버 채널(Fibre Channel) 스위치 이용

자료 구조

  • 선형 구조(Linear)
    • 배열(Array)
      • 크기와 타입(Type)이 동일한 자료들을 순서대로 나열한 자료의 집합, 정적 구조
    • 선형 리스트(Linear List)
      • 배열과 같이 연속되는 기억장소에 저장되는 리스트
      • 가장 간편한 자료 구조, 접근 구조 빠름
      • 자료 삽입/삭제 시 자료 이동해야 함
    • 연결 리스트(Linked List)
      • 노드 포인터 부분을 서로 연결시킨 리스트
      • 노드 삽입/삭제가 편리함
      • 포인터가 추가되어 저장 공간 필요, 접근 속도 느림
    • 스택(Stack)
      • 한 쪽 끝으로만 삽입, 삭제하는 자료 구조, 후입선출(LIFO)
    • 큐(Queue)
      • 한 쪽에서는 삽입, 반대쪽에서는 삭제하는 자료 구조, 선입선출(FIFO)
    • 데크(Deque)
  • 비선형 구조(Non-Linear)
    • 트리(Tree)
      • 노드와 간선으로 이루어진 나무 형태의 그래프
      • 차수(Degree) : 각 노드에서 나오는 자식 노드(가지) 수
      • 단말 노드(Terminal Node, Leaf Node) : 차수가 0인, 자식이 없는 노드
      • 깊이(Depth) : 트리에서 노드가 가질 수 있는 최대 레벨
      • 이진 트리 : 차수가 2 이하인 노드들로 구성된 트리
      • 트리 운행법 : 각 노드를 찾아가는 방법
        • Preorder: 루트가 앞, ROOT>LEFT>RIGHT
        • Inorder: 루트가 가운데, LEFT>ROOT>RIGHT
        • Postorder: 루트가 뒤, LEFT>RIGHT>ROOT
        • A -> B, C 일 때 Preorder(A>B>C), Inorder(B>A>C), Postorder(B>C>A)
    • 방향 그래프(Graph)
      • 정점(Vertex)과 간선(Edge)의 두 집합으로 이루어진 자료 구조
      • 방향 그래프 최대 간선 수: n(n-1)
      • 무방향 그래프: n(n-1)/2
  • 파일 검색 접근 기법
    • 순차, 인덱스(색인)-키 값, 포인터 구조, 해싱

정렬(Sort)

  • 삽입 정렬
    • 하나의 레코드를 순서에 맞게 삽입시켜 정렬 방식
  • 선택 정렬
    • 최소값을 찾아 첫 번째에 놓고, 나머지 중에서 다시 최소값을 찾는 정렬 방식
  • 버블 정렬
    • 인접한 2개의 값을 비교하여 서로 교환하는 정렬 방식
profile
괴발개발라이프

0개의 댓글