데이터 모델의 정의
-
데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다.
-
데이터 모델 구성요소
- 속성, 관계, 개체
-
데이터 모델 종류
- 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
-
데이터 모델에 표시할 요소
- 구조, 연산, 제약 조건
이상(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등
비트맵 조인 인덱스
- 비트맵 조인 인덱스는 다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다르다.
- 비트맵 조인 인덱스는 비트맵 인덱스와 물리적 구조가 동일하다.
도메인 인덱스
- 도메인 인덱스는 개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로 확장형 인덱스라고도 한다
- 개발자가 필요에 의해 만들었지만 프로그램에서 제공하는 인덱스처럼 사용할 수도 있다.
인덱스 설계
- 인덱스를 설계할 때는 분명하게 드러난 컬럼에 대해 기본적인 인덱스를 먼저 지정한 후 개발 단계에서 필요한 인덱스의 설계를 반복적으로 진행한다.
- 인덱스 설계 순서
- 인덱스의 대상 테이블이나 컬럼등을 선정한다.
- 인덱스의 효율성을 검토하여 인덱스 최적화를 수행한다.
- 인덱스 정의서를 작성한다.
- 인덱스 설계 순서
인덱스 설계시 고려사항
- 새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있다.
- 인덱스를 지나치게 많이 만들면 오버헤드가 발생하다.
- 넓은 범위를 인덱스로 처리하면 많은 오버헤드가 발생한다
- 인덱스를 만들면 추가적인 저장 공간이 필요하다
- 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계한다.
클러스터의 개요
- 클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.
클러스터의 특징
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다
- 단일 테이블 클러스터링
- 처리 범위가 넓음
- 다중 테이블 클러스터링
- 자주 조인이 발생
클러스터 대상 테이블
- 대량의 범위를 자주 조회 하는 테이블
- 입력, 삭제, 수정이 빈번하지 않은 테이블
- 자주 조인되어 사용되는 테이블
파티션(Patition)의 개요
- 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.
파티션의 장단점
- 장점
- 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상된다.
- 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다.
- 데이터 가용성이 향상된다.
- 단점
- 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다
- 테이블간 조인에 대한 비용이 증가한다.
파티션의 종류
- 범위 분할, 해시 분할, 조합 분할
- 범위 분할
- 지정한 열의 값을 기준으로 분할한다.
- 일별, 월별, 분기별 등
- 지정한 열의 값을 기준으로 분할한다.
- 해시 분할
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할한다
- 특정 데이터가 어디에 있는지 판단할 수 없다
- 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적이다
- 조합 분할
- 범위 분할로 분할한 다음 해시함수를 적용하여 다시 분할하는 방식이다.
- 범위 분할한 파티션이 너무 커서 관리가 어려울때 유용하다.
'기타 > 정처기' 카테고리의 다른 글
정보처리기사 실기 시나공 5장 서버 프로그램 구현 (0) | 2020.12.31 |
---|---|
정보처리기사 실기 시나공 4장 통합구현 (0) | 2020.12.31 |
정보처리기사 실기 수제비 12과목 제품 소프트웨어 패키징 (0) | 2020.12.31 |
정보처리기사 실기 수제비 11과목 응용 SW기초 기술 활용 (0) | 2020.12.31 |
정보처리기사 실기 수제비 10과목 프로그래밍 언어활용 (0) | 2020.12.31 |