본문 바로가기
Programming/정보처리기사

[정보처리기사 실기] 데이터 입/출력 구현 요약

by AI_Wooah 2022. 5. 1.

데이터 입/출력 구현

데이터 모델의 개념

  1. 데이터 모델이란?
    현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화 하여 체계적으로 표현한 개념적 모형개념적 도구들의 모임으로 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위함이다.
  • 데이터 모델의 구성 요소 [개속관]
    • 개체 : 데이터베이스에 표현되는 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
    • 속성 : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드
    • 관계 : 개체 간의 관계 또는 속성 간의 논리적인 연결을 의미
  • 데이터 모델 절차 [개논물]
    • 개념적 데이터 모델
      현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정으로, 개념 스키마 모델링과 트랜잭션 모델링을 수행하며, 요구 조건 명세를 E-R 다이어그램으로 작성한다.
    • 논리적 데이터 모델
      현실의 자료를 특정 DBMS가 지원하는 자료구조로 변환하는 과정으로, 트랜잭션의 인터페이스를 설계하고, 정규화를 통해 스키마를 평가 및 정제한다.
    • 물리적 데이터 모델
      논리적 구조로 표현된 데이터를 디스크 등의 저장장치에 저장할 수 있는 데이터로 변환하는 과정으로, 파일의 저장 구조 및 액세스 경로를 결정하며, 테이블 정의서 및 명세서가 산출된다.
  • 개념적 데이터 모델 → 논리적 데이터 모델 → 물리적 데이터 모델
  • 논리적 데이터 모델의 종류
    • 관계 데이터 모델 : 테이블
    • 계층 데이터 모델 : 트리
    • 네트워크 데이터 모델 : 그래프, 망
  • 데이터 모델에 표시할 요소
    • 구조(Structure) 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현
    • 연산(Operation) 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
    • 제약조건(Constraint) 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건
  • 관계 대수
    • 일반 집합 연산자 [합교차카]
      : 합집합, 교집합, 차집합, 카티션 프로덕트
    • 순수 관계 연산자 [셀프조디]
      : 셀렉트, 프로젝트, 조인, 디비전
  • 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
  • 관계 해석 : 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어
  • 이상/함수적 종속/정규화
    1. 이상 현상 [삽삭갱]
      데이터의 중복성으로 인해 릴레이션을 조작할 때 문제가 발생하는 비합리적인 현상
      • 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상.
      • 삭제 이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상.
      • 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상.
    2. 함수적 종속
      • 완전 함수적 종속
      • 부분 함수적 종속
    3. 정규화
      데이터의 중복성을 제거해 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
    4. 정규화 단계 [도부이결다조]
      • 1NF : 도메인이 원자값
      • 2NF : 부분함수 종속 제거
      • 3NF : 이행함수 종속 제거
      • BCNF : 결정자 함수이면서 후보키 아닌 것 제거
      • 4NF : 다치 종속 제거
      • 5NF : 조인 종속 제거
    5. 반정규화
      정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 과정
    6. 반정규화 기법 [테병분중 컬중 관중]
      : (테이블) 병합 / 분할 / 중복, (컬럼) 중복, (관계) 중복
  • 논리 데이터 모델의 물리 데이터 모델로 변환
    • 참조 무결성 제약조건
      • 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야한다.
      • 제한, 연쇄, 널값
    • 파티션의 종류 [레해리컴]
      • 레인지 파티셔닝 : 연속적인 숫자나 날짜 기준
      • 해시 파티셔닝 : 파티션 키의 해시 함수 값
      • 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어 가능
      • 컴포지트 파티셔닝 : 레인지, 해시, 리스트 중 2개 이상의 파티셔닝 결합
  • 인덱스 설계
    인덱스는 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.
    • 클러스티드 인덱스
    • 넌클러스티드 인덱스
    • 인덱스 종류
      • 트리 기반 인덱스
      • 비트맵 인덱스
      • 함수 기반 인덱스
      • 비트맵 조인 인덱스
      • 도메인 인덱스
  • 뷰 설계
    • 뷰 개요
      뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블이다.필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능하다.뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
    • 뷰 설계 순서
      • 대상 테이블을 선정한다
      • 대상 컬럼을 선정한다
      • 정의서를 작성한다
    • 뷰 설계시 고려 사항
      • 테이블 구조가 단순화 될 수 있도록 반복적으로 조인을 설정하여 사용하거나 동일한 조건절을 사용하는 테이블을 뷰로 생성한다.
      • 동일한 테이블이라도 업무에 따라 테이블을 이용하는 부분이 달라질 수 있으므로 사용할 데이터를 다양한 관점에서 제시해야 한다.
      • 데이터 보안 유지를 고려하여 설계한다.
      • 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
      • 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
      • 데이터의 논리적 독립성을 제공할 수 있다.
  • 클러스터 설계
    • 클러스터 개요
      클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법

    • 클러스터 특징
      • 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
      • 클러스터는 데이터의 분포도가 넓을수록 유리하다.
      • 클러스터링 된 테이블은 클러스터링 키 열을 공유하므로 저장 공간이 줄어든다.
      • 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다.
      • 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용한다.
      • 파티셔닝 된 테이블에는 클러스터링을 할 수 없다.
      • 클러스터링을 하면 비슷한 데이터가 동일한 데이터 블록에 저장되기 때문에 디스크 I/O가 줄어든다.
      • 클러스터링 된 테이블에 클러스터드 인덱스를 생성하면 접근 성능이 향상된다.
    1. 클러스터 대상 테이블
      1. 분포도가 넓은 테이블
      2. 대량의 범위를 자주 조회하는 테이블
      3. 입력, 수정, 삭제가 자주 발생하지 않는 테이블
      4. 자주 조인되어 사용되는 테이블
      5. ORDER BY, GROUP BY, UNION이 빈번한 테이블
      6. 클러스터링 키로 지정된 컬럼 값의 순서대로 저장되고, 여러 개의 테이블이 하나의 클러스터에 저장된다.
  • 파티션 설계
    1. 파티션의 개요
      데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
      1. 대용량 DB인 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다.
      2. 테이블이나 인덱스를 파티셔닝 하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다.데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다.
    1. 파티션의 장점 [성가백합]
      1. 성능 향상 : 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상된다. 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다.
      2. 가용성 향상 : 데이터 가용성이 향상된다.
      3. 백업 가능 : 파티션별로 백업 및 복구를 수행하므로 속도가 빨라진다. 시스템 장애 시 데이터 손상 정도를 최소화 할 수 있다.
      4. 경합 감소 : 파티션 단위로 입/출력을 분산시킬 수 있다.
    •  
    1. 파티션의 단점
      1. 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다.
      2. 테이블간 조인에 대한 비용이 증가한다.
      3. 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하된다.
    1. 파티션의 종류
      1. 범위 분할(Range Partitioning)
        지정한 열의 값을 기준으로 분할한다
      2. 해시 분할(Hash Partitioning)
        1. 해시 함수를 적용한 결과 값에 따라 데이터를 분할한다.
        2. 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용하다.
        3. 특정 데이터가 어디에 있는지 판단할 수 없다.
        4. 고객번호, 주민번호, 등과 같이 데이터가 고른 컬럼에 효과적이다.
      3. 조합 분할(Composite Partitioning)
        • 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식이다.
        • 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용하다.
  • 데이터베이스 유형 [키컬도그]
    • Key-Value Store
    • Column Family Data Store
    • Document Store
    • Graph
  • 데이터 마이닝 주요 기법 [분연연데]
    • 분류 규칙
    • 연관 규칙
    • 연속 규칙
    • 데이터 군집화
반응형

댓글