기타/정처기

정보처리기사 실기 시나공 3장 데이터 입출력 구현

TheWing 2020. 12. 31. 17:26

데이터 모델의 정의

  • 데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다.

  • 데이터 모델 구성요소

    • 속성, 관계, 개체
  • 데이터 모델 종류

    • 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
  • 데이터 모델에 표시할 요소

    • 구조, 연산, 제약 조건

이상(Anomaly)

  • 이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미한다.

정규화의 개념

  • 정규화는 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다
    • 정규화의 목적은 가능한 한 중복을 제거하여 삽입,삭제 , 갱신 이상의 발생 가능성을 줄이는 것이다
    • 정규형에는 제 1정규형, 제 2정규형,제 3 정규형, BCNF, 제4정규형, 제5정규형이 있으며 순서대로 정규화의 정도가 높아진다.

비정규 릴레이션

제1정규형

  • 테이블 R에 속한 모든 속성의 도메인이 원자값만으로 되어있는 정규형이다. 즉 테이블의 모든 속성값이 원자값으로만 되어있는 정규형이다.

제 2정규형

  • 제 2정규형은 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다

제 3정규형

  • 제 3정규형은 테이블 R이 제 2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형이다.

BCNF

  • BCNF는 테이블 R에서 모든 결정자가 후보키인 정규형이다.
  • 일반적으로 제 3정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용 가능하다.

제 4정규형

  • 제 4정규형은 테이블 R에 다중 값 종속 A—>B가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.

제 5정규형

  • 제 5정규형은 테이블 R의 모든 조인 종속 이 R의 후보키를 통해서만 성립되는 정규형이다.

반정규화의 개념 !기출

  • 반정규화란 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다.
    • 반정규화를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.
    • 과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
    • 반정규화를 위해서는 사전에 데이터의 일관성과 무결성을 우선으로 할지, 데이터베이스의 성능과 단순화를 우선으로 할지를 결정해야 한다.
    • 반정규화 방법에는 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있다.

테이블 통합

  • 테이블 통합은 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행한다

테이블 분할

  • 테이블 분할은 수직 또는 수평으로 분할

인덱스(Index)의 개념

  • 인덱스는 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.
    • 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계가 있다.
    • 인덱스는 레코드가 저장된 물리적 구조에 접근하는 방법을 제공한다.
    • 인덱스를 통해서 파일의 레코드에 대한 액세스를 빠르게 수행할 수 있다.

클러스터드 인덱스(Clustered Index)

  • 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식입니다.
  • 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있습니다.
  • 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 합니다.
  • 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있습니다.

넌클러스터드 인덱스(Non-Clustered Index)

  • 인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식입니다.
  • 데이터를 검색하기 위해서는 먼저 인덱스를 검색하여 실제 데이터의 위치를 확인해야 하므로 클러스터드 인덱스에 비해 검색 속도가 떨어집니다.
  • 한 개의 릴레이션에 여러 개의 인덱스를 만들 수 있습니다.

트리 기반 인덱스

  • 트리 기반 인덱스는 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로, 상용 DBMS에서는 트리 구조 기반의 B+ 트리 인덱스를 주로 활용한다.

    B트리 인덱스
    • 일반적으로 사용되는 인덱스 방식으로, 루트 노드에서 하위 노드로 키 값의 크기를 비교해 나가면서 단말 노드에서 찾고자 하는 데이터를 검색한다.

      B+ 트리 인덱스
    • B+ 트리는 B 트리의 변형으로 단말 노드가 아닌 노드로 구성된 인덱스 세트와 단말 노드로만 구성된 순차 세트로 구분된다.

비트맵 인덱스

  • 비트맵 인덱스는 인덱스 컬럼의 데이터를 Bit값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법이다.
    • 비트맵 인덱스의 목적은 키 값을 포함하는 로우(Row)의 주소를 제공하는 것이다
    • 저장공간이 작다.

함수 기반 인덱스

  • 함수 기반 인덱스는 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것으로, B+ 트리 인덱스 또는 비트맵 인덱스를 생성하여 사용한다.
    • 함수 기반 인덱스는 데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하가 발생할 수 있다.
    • 적용 가능한 함수의 종류 : 산술식, 사용자 정의 함수, PL/SQL Function, SQL Function, Package, C callout등

비트맵 조인 인덱스

  • 비트맵 조인 인덱스는 다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다르다.
    • 비트맵 조인 인덱스는 비트맵 인덱스와 물리적 구조가 동일하다.

도메인 인덱스

  • 도메인 인덱스는 개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로 확장형 인덱스라고도 한다
    • 개발자가 필요에 의해 만들었지만 프로그램에서 제공하는 인덱스처럼 사용할 수도 있다.

인덱스 설계

  • 인덱스를 설계할 때는 분명하게 드러난 컬럼에 대해 기본적인 인덱스를 먼저 지정한 후 개발 단계에서 필요한 인덱스의 설계를 반복적으로 진행한다.
    • 인덱스 설계 순서
      1. 인덱스의 대상 테이블이나 컬럼등을 선정한다.
      2. 인덱스의 효율성을 검토하여 인덱스 최적화를 수행한다.
      3. 인덱스 정의서를 작성한다.

인덱스 설계시 고려사항

  • 새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있다.
  • 인덱스를 지나치게 많이 만들면 오버헤드가 발생하다.
  • 넓은 범위를 인덱스로 처리하면 많은 오버헤드가 발생한다
  • 인덱스를 만들면 추가적인 저장 공간이 필요하다
  • 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계한다.

클러스터의 개요

  • 클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.

클러스터의 특징

  • 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다
  • 단일 테이블 클러스터링
    • 처리 범위가 넓음
  • 다중 테이블 클러스터링
    • 자주 조인이 발생

클러스터 대상 테이블

  • 대량의 범위를 자주 조회 하는 테이블
  • 입력, 삭제, 수정이 빈번하지 않은 테이블
  • 자주 조인되어 사용되는 테이블

파티션(Patition)의 개요

  • 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.

파티션의 장단점

  • 장점
    • 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상된다.
    • 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다.
    • 데이터 가용성이 향상된다.
  • 단점
    • 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다
    • 테이블간 조인에 대한 비용이 증가한다.

파티션의 종류

  • 범위 분할, 해시 분할, 조합 분할
  • 범위 분할
    • 지정한 열의 값을 기준으로 분할한다.
      • 일별, 월별, 분기별 등
  • 해시 분할
    • 해시 함수를 적용한 결과 값에 따라 데이터를 분할한다
    • 특정 데이터가 어디에 있는지 판단할 수 없다
    • 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적이다
  • 조합 분할
    • 범위 분할로 분할한 다음 해시함수를 적용하여 다시 분할하는 방식이다.
    • 범위 분할한 파티션이 너무 커서 관리가 어려울때 유용하다.