본문 바로가기

자격증/정보처리기사

데이터 입출력 구현

데이터 모델 사용자의 요구사항을 컴퓨터나 인간이 이해하기 추상화하여 표현

<데이터 모델의 요소> D=<S,O,C>
구조(structure), 연산(operation), 제약조건(constraint)

<데이터 모델 절차>
요구사항 분석→개념적 설계→논리적 설계→물리적 설계
구조(structure) 데이터 구조 및 정적 성질을 표현하는 요소
논리적으로 표현될 대상으로서의 개체와 개체 간의 관계
연산(operation) DB에 저장된 실제 데이터를 처리하는 작업의 명세
릴레이션을 조작하기 위한 관계 연산(데이터베이스를 조작하는 요소)
제약조건(constraint) 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
데이터 무결성 유지를 위한 제약(참조무결성, 개체 무결성 등)
요구사항 분석 요구사항을 수집하여 분석하여 요구사항 명세서 작성
개념적 설계
(개념 데이터 모델)
• 사용자의 요구에 대한 트랜잭션을 모델링하는 단계
 추상적, 개념적으로 표현하여 개념적 구조를 도출하는 데이터 모델
DB종류와 관계가 없다
 주요 산출물은 개체관계 다이어그램

#객체 관계 다이어그램(ERD)
객체와 객체 간의 관계를 이해하기 쉽게 도식화하여 표현한 다이어그램
◻︎ 개체 ◇ 관계 ○ 속성 ◎ 다중 값 속성 ⎻ 관계와 속성 연결
논리적 설계
(논리 데이터 모델)
• 사람이 이해하기 쉽게 표현한 데이터 모델로 트랜잭션의 인터페이스를 설계
정규화를 수행하여 논리적 데이터베이스 구조로 매핑하여 테이블 설계
• 스키마의 평가 및 정제
DB의 종류를 모델에 맞게 설계

<논리 데이터 모델링 종류>
계층 데이터 모델
트리형태(사이클X), 상하관계 존재하는 계층관계, 1:N관계

네트워크 모델
그래프형태(사이클O), CODASYL DBTG, N:M관계(복잡한 다대다관계)

관계 데이터 모델
2차원 테이블 형태, 기본키와 이를 참조하는 외래키로 표현, 1:1, 1:N, N:M관계를 자유롭게 이용
💡 관계 데이터 모델의 관계 대수와 관계 해석
관계 대수는 절차적으로 정형화된 언어, 일반 집합 연산자&순수 집합 연산자
관계 해석은 비절차적 언어, '프레디킷 해석'

<논리 데이터 모델링 속성>
개체(Entity), 속성(Attributes), 관계(Relationship)
물리적 설계
(물리 데이터 모델)
• 특정DBMS의 특성 및 성능에 맞는 물리적인 스키마를 만드는 단계
테이블, 인덱스, 뷰, 파티션 등의 객체를 생성
• 성능향상을 위한 반정규화수행
• 레코드 집중의 분석 및 설계, 저장 레코드 양식 설계, 접근 경로 설계

<물리 데이터 모델링 절차>
개체를 테이블로
→ 속성을 컬럼으로
→ UID를 기본키로
→ 관계를 외래키로
→ 컬럼의 유형과 길이를 정의
→ 반정규화 수행

<물리데이터 저장소 구성>
◆ 테이블 제약 조건 설계
참조 무결성: 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장, 참조하는 외래키의 값은 항상 참조되는 릴레이션의 기본키로 존재하여야 한다(무결성은 결함이 없는 특성)제한(Restricted), 연쇄(Cascade), 널 값(Nullify) 

 인덱스 설계
검색연산의 최적화를 위한 데이터 구조
기본키 선택에 있어서 분포도가 낮을 수록 좋다(최적의 인덱스 분포도는 10~15%이하)

뷰 설계
뷰 사용에 따라 수행속도에 문제가 발생
최적의 액세스 경로를 사용
뷰는 수정이 불가

 파티션 설계
파티셔닝은 대용량의 테이블을 파티션이라는 보다 작은 논리적 단위로 나누어 성능 저하 방지 및 관리를 보다 용이하게 하고자 하는 기법(성능 향상, 가용성 향상, 백업 가능, 경합 감소 등의 장점)
- 레인지 파티셔닝: 일정한 숫자나 날짜를 기준으로 파티셔닝
- 해시 파티셔닝: 해당 키의 해시 함수 값에 의한 파티셔닝
- 리스트 파티셔닝: 저장 데이터에 대한 명시적 제어가 가능한 파티셔닝(문자 등의 목록)
- 컴포지트 파티셔닝: 2개 이상을 결합한 파티셔닝
- 라운드로빈 파티셔닝: 라운드로빈 분할로 회전하면서 새로운 행이 할당(행의 고른 분포)


 클러스터 설계
대상이 되는 범위의 요소를 모은 집합체로 인덱스 사용의 단점을 해결
분포도가 넓을 수록 유리
검색 효율은 높여주나 입력, 수정, 삭제 시는 부하가 증가
연산이 빈번한 컬럼이면 검토 대상

정규화
(Normalization)
불필요한 데이터의 중복성을 제거하고, 데이터를 무손실분해하는 과정
(이상현상 방지와 데이터의 일관성과 정확성 유지)

<데이터베이스의 정규화 단계>
• 1NF(1정규형): 하나의 속성인 원자값으로 구성(반복속성과 중복은 제거)
• 2NF(2정규형): 부분 함수 종속 제거(완전 함수 종속), 주식별자가 아닌 속성을 분리
• 3NF(3정규형): 이행 함수 종속 제거, 속성에 종속적인 속성을 분리
• BCNF(보이스-코드 정규형): 결정자 종속, 모든 결정자가 후보키
• 4NF(4정규형): 다치(다중값) 종속 제거, 속성에 따른 속성을 제거
• 5NF(5정규형): 조인 종속 제거
이상현상
(Anomaly)
릴레이션 조작시 데이터의 중복성으로 인해 예기치 않게 발생하는 곤란한 현상
- 삽입이상: 해당 정보의 불필요한 세부정보를 입력하는 경우
- 삭제이상: 정보 삭제 시 원치 않게 다른 정보가 같이 삭제되는 경우
- 갱신이상: 중복 데이터 중 특정 부분만 수정되어 중복된 값의 모순이 발생하는 경우
반정규화
(De-Normalization)
성능향상과 개발운영의 단순화를 위해 통합, 중복, 분리등을 수행하는 기법(=역정규화, 비정규화)

<반정규화 기법>
• 테이블 병합(통합)
• 테이블 분할(파티셔닝): 수평분할&수직분할
• 중복 테이블 추가: 집계 테이블 추가/진행 테이블 추가/특정 부분만을 포함하는 테이블 추가
• 컬럼 중복화
• 중복관계 추가

#정규화는 중복을 제거하고, 반정규화는 중복을 허용
외래키 참조하는 테이블의 기본키, Foreign Key
디스크 스트라이핑 성능 향상(빠르게)을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 병렬로 사용가능하게 하는 기법
데이터베이스 사람이나 시스템, 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합
(통합/저장/운영/공용데이터)

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

<데이터베이스의 종류>
 파일 시스템

RDBMS 관계형 데이터베이스 관리 시스템
-관계형 모델을 기반으로 하는 가장 보편화된 관리 시스템
-상하관계로 표시하여 상관관계를 정리
-변화하는 업무나 데이터 구조에 대한 유연성이 좋아 유지 관리가 용이

HDBMS 계층형 데이터베이스 관리 시스템
-상하 종속적인 관계로 계층화하여 관리하는 관리 시스템
-속도는 빠르나 유연성이 떨어짐


NDBMS 네트워크형 데이터베이스 관리 시스템
-데이터 구조를 네트워크로 표현한 데이터 모델
-트리나 계층형보다는 유연하지만 설계가 복잡
DBMS유형
(No SQL유형과 동일)
DBMS는 데이터 관리의 복잡성을 해결하는 동시에 데이터의 추가 변경, 검색, 삭제 및 백업, 복구, 보안등의 기능을 지원하는 시스템으로, 관리하는 데이터의 형태 및 관리 방식에 따라 분류

키-값 Key-Value Store
컬럼 기반 데이터 저장 Column Family Date Store
문서저장 Document Store 
그래프 Graph Store
DBMS특징 • 무결성: 동일한 내용에 대해 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질
 일관성: 삽입/삭제/갱신/생성 후에도 저장된 데이터가 변함없이 일정한 성질
 회복성: 장애가 발생되더라도 특정 상태로 복구되어야 하는 성질
 보안성: 불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질
 효율성: 최적화되어 요구사항을 만족시켜야하는 성질
빅데이터 대규모 크기(수십PB이상의)의 비정형, 정형, 반정형 데이터
3V - 데이터의 양(Volume) / 데이터의 다양성(Variety) / 데이터의 속도(Velocity)
No SQL 고정된 테이블 스키마가 필요하지 않고, 조인연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS
(RDBMS와 다른 개념)

<No SQL의 특징 BASE>
Basically Available: 언제 어디서든 접근 가능한 분산 시스템
Soft-state: 전송된 정보에 의해 노드의 상태가 결정, 특정 시점에는 일관성 보장X
Eventually consistenty: 결과적으로는 데이터의 일관성 유지