본문 바로가기

Others/정보처리기사

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

1. 논리 데이터 저장소 확인

데이터 모델

- 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표혆ㄴ 모델

- 논리적 데이터 구조, 연산, 제약 조건

- 개념적 데이터 모델 -> 논리적 데이터 모델 -> 물리적 데이터 모델

 

개념적 데이터 모델

- 현실 세계에 대한 인식을 추상적, 개념적으로 표현해 개념적 구조를 도출하는 데이터 모델

- DB 종류와 관련X

- ER 다이어그램

 

논리적 데이터 모델

- 업무의 모습을 모델링 표기법으로 형상화해 사람이 이해하기 쉽게 표현한 데이터 모델

- 정규화, 매핑

- 스키마 평가 및 정제

- 관계, 계층, 네트워크, 객체지향, 객체-관계 데이터 모델

 

물리적 데이터 모델

- 논리 데이터 모델을 특정 DBMS 특성 및 성능을 고려해 물리적인 스키마를 만드는 데이터 모델

- 테이블, 인덱스, 뷰, 파티션

- 응답시간, 저장 공간의 효율화, 트랙잭션 처리 고려하여 설계

- 반 정규화

 

논리 데이터 모델

- 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델

- 관계 데이터 모델(1:1, 1:N, N:M), 계층 데이터 모델(1:N), 네트워크 데이터 모델(N:M)

 

관계형 데이터 모델

- 데이터를 행과 열로 구성된 2차원 테이블 형태로 구성한 모델

- 릴레이션, 튜플, 속성, 카디널리티, 차수, 스키마, 인스턴스

- 데이터 간의 관계를 기본 키와 이를 참조하는 외래 키로 표현

 

관계 대수

- 일반 집합 연산자(합집합, 교집합, 차집합, 카티션 프로덕트)

- 순수 집합 연산자(섹렉트, 프로젝트, 조인, 디비전)

 

논리 데이터 모델링

- 개체, 속성, 관계

- 피터 챈 모델, 까마귀발 모델

 

개체-관계(E-R) 모델

- 현실 세계에 존재하는 데이터와 데이터 들의 관계를 사람이 쉽게 이해할 수 있는 형태로 표현하기 위해 쓰이는 모델

- 개체, 관계, 속성, 다중 값 속성, 관계-속성 연결

 

정규화

- 관계형 데이터 모델에서 데이터의 중복성을 제거하고, 이상 현상을 방지, 데이터 일관성과 정확성을 유지하기 위해 무손실 분해하는 것

- 이상 현상: 릴레이션을 조작할 때 발생하는 비합리적 현상

삽입 이상: 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우

삭제 이상: 정보 삭제 시 삭제를 원치않는 정보가 함께 삭제되는 경우

갱신 이상: 정보 갱신 시 중복된 데이터 중 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 

정규화의 단계

1NF: 원자값으로 구성

2NF: 부분 함수 종속 제거

3NF: 이행 함수 종속 제거

BCNF: 결정자가 후보키가 아닌 함수 종속 제거

4NF: 다치 종속 제거

5NF: 조인 종속 제거

 

반 정규화(비 정규화, 역 정규화)

- 정규화된 개체, 속성, 관계에 대해 성능 향상과 개발 운영 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링이다.

- 성능 향상과 관리의 효율성 증가

- 데이터 일관성 및 정합성 저하

 

반정규화 기법

- 테이블 병합: 1:1 관계, 1:M 관계를 통합해 조인 횟수를 줄여 성능 향상

- 테이블 분할: 수평 분할, 수직 분할

- 중복 테이블 추가: 집계 테이블, 진행 테이블, 특정 부분만을 포함하는 테이블 추가

- 컬럼 중복화: 조인 성능 향상을 위해 중복 허용

- 중복 관계 추가: 여러 경로를 거친 조인으로 인한 성능 저하를 예방

 

2. 물리 데이터 저장소 설계

물리 데이터 모델링

- 논리모델을 적용하고자 하는 기술에 맞도록 상세화하는 과정

- 개체를 테이블로 변환 -> 속성을 컬럼으로 변환 -> UID를 기본키로 변환 -> 관계를 외래키로 변환 -> 컬럼 유형과 길이 정의 -> 반 정규화 수행

 

참조무결성 제약조건

- 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건

- 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 때, 참조하는 외래키의 값은 항상 참조되는 릴레이션의 기본키여야 한다.

- 제한(Restricted): 참조무결성 원칙을 위배하는 연산을 거절한다.

- 연쇄(Cascade): 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제한다.

- 널 값(Nullify): 참조되는 릴레이션에서 튜플을 삭제, 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 NULL값을 넣는다. 만약, NULL값이 들어갈 애트리뷰트에 'NOT NULL'이 명시되어 있으면 삭제 연산을 거절한다.

 

ALTER TABLE 테이블 ADD
FOREIGN KEY 외래키
REFERENCES 참조테이블(기본키)
ON DELETE [ RESTRICT : CASCADE : SET NULL ];

 

인덱스

- 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터구조

- 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능하다

 

인덱스 적용 기준

- 인덱스 분포도가 10~15% 이내인 경우

분포도 = (1 / (컬럼 값의 종류)) * 100

분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) * 100

- 분포도가 범위 이상이어도 부분 처리를 목적으로 하는 경우

- 조회 및 출력 조건으로 사용되는 컬럼인 경우

- 인덱스 자동생성 기본키와 Unique 키의 제약조건을 사용할 경우

 

인덱스 컬럼 선정

- 분포도가 좋은 컬럼은 단독적으로 생성

- 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성 (컬럼 순서 - 사용빈도, 유일성, 정렬 등 에 유의)

- 가능한 한 수정이 빈번하지 않은 컬럼

- 지나치게 많은 인덱스는 오버헤드

- 추가적인 저장 공간 필요

 

뷰(View)

- REPLACE: 뷰가 이미 존재하는 경우 재생성

- FORCE: 본 테이블의 존재 여부에 관계없이 뷰 생성

- NOFORCE: 기본 테이블이 존재할 때 뷰 생성

- WITH CHECK OPTION: 서브 쿼리 내의 조건을 만족하는 행만 변경

- WITH READ ONLY: DML(데이터 조작어) 작업 불가

- 사용에 따라 수행속도에 문제가 생길 수도 있으며, 최적의 엑세스 경로를 사용할 수 있도록 해야한다.

 

클러스터(Cluster)

- 인덱스의 단점을 해결, 분포도가 넓을수록 유리

- 엑세스 효율 향상을 위한 물리적 저장 방법

- 대량의 범위를 자주 엑세스하는 경우 적용

- 여러 개의 테이블이 자주 조인을 일으킬 때 활용

- 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약으로 이어진다.

- 검색 효율은 높여주나 입력, 수정, 삭제 시에는 부하가 증가

- UNION, DISTINCT, ORDER BY, GROUP BY 자주 나오는 컬럼이면 고려해봐야한다.

- 수정이 빈번하지 않은 컬럼

- 처리 범위가 넓어 문제가 발생하면, 단일 테이블 클러스터링

- 조인이 많아 문제가 발생하면, 다중 테이블 클러스터링

 

파티션(Partition)

- 레인지 파티셔닝: 연속적인 숫자나 날짜를 기준, 손쉬운 관리 기법으로 관리 시간의 단축

- 해시 파티셔닝: 파티션 키의 해시 함수 값에 의해 파티셔닝, 균등한 데이터 분할과 질의 성능 향상

- 리스트 파티셔닝: 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능

분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용

- 컴포지트 파티셔닝: 위 세개의 파티셔닝 중 2개 이상을 결합

큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산 가능

 

파티션의 장점

- 성능 향상: 데이터 액세스 범위 감소

- 가용성 향상: 전체 데이터 훼손 가능성 저하, 데이터 가용성 향상

- 백업 가능: 분할 영역을 독립적으로 백업, 복구 가능

- 경합 감소: 디스크 스트라이핑으로 입출력 성능 향상

디스크 컨트롤러에 대한 경합 감소

 

디스크 설계

- 정확한 용량 산정하여 효율 향상

- 업무량이 집중된 디스크 분리하여 설계

- 입출력 경합 최소화하여, 데이터 접근 성능 향상

- 디스크 구성에 따라 테이블 스페이스 개수와 사이즈 결정

- 파티션 수행 테이블 별도 분류

 

3. 데이터베이스 기초 활용하기

데이터베이스

- 다수의 인원, 시스템, 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합

- 자료의 중복성 제거, 무결성 확보, 일관성 유지, 유용성 보장

- 통합된 데이터: 자료의 중복을 배제한 데이터의 모임

- 저장된 데이터: 저장 매체에 저장된 데이터

- 운영 데이터: 조직의 업무를 수행하는 데 필요한 데이터

- 공용 데이터: 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터

 

데이터베이스 특성

- 실시간 접근성, 계속적인 변화, 동시 공용, 내용 참조

 

데이터베이스 종류

- 파일 시스템(ISAM, VSAM)

- 관계형 데이터베이스 관리시스템(RDBMS)

- 계층형 데이터베이스 관리시스템(HDBMS)

- 네트워크 데이터베이스 관리시스템(NDBMS)

 

DBMS(Database Managements System)

- 데이터 관리의 복잡성을 해결해주고, 데이터 추가, 변경, 검색, 삭제, 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어

- 키-값 DBMS (Redis, DynamoDB)

- 컬럼 기반 데이터 저장 DBMS (HBase, Cassandra)

- 문서 저장 DBMS (MongoDB, Couchbase)

- 그래프 DBMS (Neo4j, AllegroGraph)

 

데이터 베이스 특징

- 데이터 무결성, 데이터 일관성, 데이터 회복성, 데이터 보안성, 데이터 효율성

 

빅데이터

- 시스템, 서비스, 회사 등에서 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어서는 수십 페타바이트 크기의 비정형 데이터

- 양(Volume), 다양성(Variety), 속도(Velocity)

- 비정형/반정형 데이터 수집 (척와, 플럼, 스크라이브)

- 정형 데이터 수집 (ETL, FTP, 스쿱, 하이호)

- 분산데이터 저장/처리 (HDFS, 맵 리듀스)

- 분산데이터 베이스 (HBase)

 

NoSQL

- 데이터 저장에 고정된 테이블 스키마가 필요하지 않고, 조인 연산을 사용할 수 없으며 수평적으로 확장이 가능한 DBMS

- Basically Available, Soft-State, Eventually Consistency

- Key-Value Store, Column Family Data Store, Document Store, Graph Store

 

데이터 마이닝

- 대규모 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술

- 목적 설정 -> 데이터 준비 -> 가공 -> 마이닝 기법 적용 -> 정보 검증

- 분류 규칙, 연관 규칙, 연속 규칙, 데이터 군집화