데이터 입/출력 구현
데이터 모델의 개념
- 데이터 모델이란?
현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화 하여 체계적으로 표현한 개념적 모형개념적 도구들의 모임으로 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위함이다.
- 데이터 모델의 구성 요소 [개속관]
- 개체 : 데이터베이스에 표현되는 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 속성 : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드
- 관계 : 개체 간의 관계 또는 속성 간의 논리적인 연결을 의미
- 데이터 모델 절차 [개논물]
- 개념적 데이터 모델
현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정으로, 개념 스키마 모델링과 트랜잭션 모델링을 수행하며, 요구 조건 명세를 E-R 다이어그램으로 작성한다. - 논리적 데이터 모델
현실의 자료를 특정 DBMS가 지원하는 자료구조로 변환하는 과정으로, 트랜잭션의 인터페이스를 설계하고, 정규화를 통해 스키마를 평가 및 정제한다. - 물리적 데이터 모델
논리적 구조로 표현된 데이터를 디스크 등의 저장장치에 저장할 수 있는 데이터로 변환하는 과정으로, 파일의 저장 구조 및 액세스 경로를 결정하며, 테이블 정의서 및 명세서가 산출된다.
- 개념적 데이터 모델
- 개념적 데이터 모델 → 논리적 데이터 모델 → 물리적 데이터 모델
- 논리적 데이터 모델의 종류
- 관계 데이터 모델 : 테이블
- 계층 데이터 모델 : 트리
- 네트워크 데이터 모델 : 그래프, 망
- 데이터 모델에 표시할 요소
- 구조(Structure) 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현
- 연산(Operation) 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 제약조건(Constraint) 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건
- 관계 대수
- 일반 집합 연산자 [합교차카]
: 합집합, 교집합, 차집합, 카티션 프로덕트 - 순수 관계 연산자 [셀프조디]
: 셀렉트, 프로젝트, 조인, 디비전
- 일반 집합 연산자 [합교차카]
- 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
- 관계 해석 : 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어
- 이상/함수적 종속/정규화
- 이상 현상 [삽삭갱]
데이터의 중복성으로 인해 릴레이션을 조작할 때 문제가 발생하는 비합리적인 현상- 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상.
- 삭제 이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상.
- 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상.
- 함수적 종속
- 완전 함수적 종속
- 부분 함수적 종속
- 정규화
데이터의 중복성을 제거해 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정 - 정규화 단계 [도부이결다조]
- 1NF : 도메인이 원자값
- 2NF : 부분함수 종속 제거
- 3NF : 이행함수 종속 제거
- BCNF : 결정자 함수이면서 후보키 아닌 것 제거
- 4NF : 다치 종속 제거
- 5NF : 조인 종속 제거
- 반정규화
정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 과정 - 반정규화 기법 [테병분중 컬중 관중]
: (테이블) 병합 / 분할 / 중복, (컬럼) 중복, (관계) 중복
- 이상 현상 [삽삭갱]
- 논리 데이터 모델의 물리 데이터 모델로 변환
- 참조 무결성 제약조건
- 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야한다.
- 제한, 연쇄, 널값
- 파티션의 종류 [레해리컴]
- 레인지 파티셔닝 : 연속적인 숫자나 날짜 기준
- 해시 파티셔닝 : 파티션 키의 해시 함수 값
- 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어 가능
- 컴포지트 파티셔닝 : 레인지, 해시, 리스트 중 2개 이상의 파티셔닝 결합
- 참조 무결성 제약조건
- 인덱스 설계
인덱스는 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.- 클러스티드 인덱스
- 넌클러스티드 인덱스
- 인덱스 종류
- 트리 기반 인덱스
- 비트맵 인덱스
- 함수 기반 인덱스
- 비트맵 조인 인덱스
- 도메인 인덱스
- 뷰 설계
- 뷰 개요
뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블이다.필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능하다.뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 뷰 설계 순서
- 대상 테이블을 선정한다
- 대상 컬럼을 선정한다
- 정의서를 작성한다
- 뷰 설계시 고려 사항
- 테이블 구조가 단순화 될 수 있도록 반복적으로 조인을 설정하여 사용하거나 동일한 조건절을 사용하는 테이블을 뷰로 생성한다.
- 동일한 테이블이라도 업무에 따라 테이블을 이용하는 부분이 달라질 수 있으므로 사용할 데이터를 다양한 관점에서 제시해야 한다.
- 데이터 보안 유지를 고려하여 설계한다.
- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
- 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
- 데이터의 논리적 독립성을 제공할 수 있다.
- 뷰 개요
- 클러스터 설계
- 클러스터 개요
클러스터는 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 클러스터 특징
- 클러스터링 된 테이블은 데이터 조회 속도는 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다.
- 클러스터는 데이터의 분포도가 넓을수록 유리하다.
- 클러스터링 된 테이블은 클러스터링 키 열을 공유하므로 저장 공간이 줄어든다.
- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다.
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용한다.
- 파티셔닝 된 테이블에는 클러스터링을 할 수 없다.
- 클러스터링을 하면 비슷한 데이터가 동일한 데이터 블록에 저장되기 때문에 디스크 I/O가 줄어든다.
- 클러스터링 된 테이블에 클러스터드 인덱스를 생성하면 접근 성능이 향상된다.
- 클러스터 대상 테이블
- 분포도가 넓은 테이블
- 대량의 범위를 자주 조회하는 테이블
- 입력, 수정, 삭제가 자주 발생하지 않는 테이블
- 자주 조인되어 사용되는 테이블
- ORDER BY, GROUP BY, UNION이 빈번한 테이블
- 클러스터링 키로 지정된 컬럼 값의 순서대로 저장되고, 여러 개의 테이블이 하나의 클러스터에 저장된다.
- 클러스터 개요
- 파티션 설계
- 파티션의 개요
데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것- 대용량 DB인 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다.
- 테이블이나 인덱스를 파티셔닝 하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다.데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다.
- 파티션의 장점 [성가백합]
- 성능 향상 : 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상된다. 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다.
- 가용성 향상 : 데이터 가용성이 향상된다.
- 백업 가능 : 파티션별로 백업 및 복구를 수행하므로 속도가 빨라진다. 시스템 장애 시 데이터 손상 정도를 최소화 할 수 있다.
- 경합 감소 : 파티션 단위로 입/출력을 분산시킬 수 있다.
- 파티션의 단점
- 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다.
- 테이블간 조인에 대한 비용이 증가한다.
- 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하된다.
- 파티션의 종류
- 범위 분할(Range Partitioning)
지정한 열의 값을 기준으로 분할한다 - 해시 분할(Hash Partitioning)
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할한다.
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용하다.
- 특정 데이터가 어디에 있는지 판단할 수 없다.
- 고객번호, 주민번호, 등과 같이 데이터가 고른 컬럼에 효과적이다.
- 조합 분할(Composite Partitioning)
- 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식이다.
- 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용하다.
- 범위 분할(Range Partitioning)
- 파티션의 개요
- 데이터베이스 유형 [키컬도그]
- Key-Value Store
- Column Family Data Store
- Document Store
- Graph
- 데이터 마이닝 주요 기법 [분연연데]
- 분류 규칙
- 연관 규칙
- 연속 규칙
- 데이터 군집화
반응형
'Programming > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 애플리케이션 테스트 관리 요약 (0) | 2022.05.01 |
---|---|
[정보처리기사 실기] 화면 설계 요약 (0) | 2022.05.01 |
[정보처리기사 실기] 통합 구현 요약 (0) | 2022.05.01 |
[정보처리기사 실기] 서버 프로그램 구현 요약 (0) | 2022.05.01 |
[정보처리기사 실기] 요구사항 정의 요약 (0) | 2022.05.01 |
댓글