티스토리 뷰

과목 5와 6은 데이터아키텍처 전문가 (DAP)에만 해당하는 파트입니다.


과목 Ⅴ. 데이터베이스 설계와 이용

 

저장공간 설계

 

★ 힙테이블

  • 행의 저장 위치는 행이 입력될 때 결정 (입력 순서와 다름)
  • 입력 시 정렬을 수행하지 않으므로 입력에 대한 부하가 적다
  • 인덱스와 데이터 저장 공간이 분리
  • 대량의 트랜잭션이 발생하는 로그성 테이블에 적합
  • Oracle, PostgreSQL

★ 클러스터형 인덱스 테이블

  • 주 키 값이나 인덱스 키 값의 순서로 정렬 되어 저장
  • 입력 시 정렬에 대한 부하 발생
  • 인덱스 저장 공간에 데이터 함께 저장
  • prefetch가 가능하며, PK를 조건으로 사용되는 경우 더 빠르게 데이터에 접근 가능하다
  • 크기가 작고 자주 엑세스되는 코드성 테이블,
    칼럼 수가 작고 행의 수가 많은 테이블 (주로 통계성 테이블),
    넓은 범위를 조회해야 하는 테이블에 적합
  • MySQL, MariaDB, SQL Server

파티션 테이블

범위(Range) 파티셔닝, 목록(List) 파티셔닝, 해시(Hash) 파티셔닝, 복합(Composite) 파티셔닝 등으로 구분

 

범위(Range) 파티션 테이블

  • 주로 날짜 칼럼을 기준으로 데이터를 월, 일, 년 등의 기준으로 파티셔닝할 때 많이 사용한다.
  • 범위를 너무 세분화하여 파티션의 개수가 지나치게 많아지는 것을 지양해야한다.

목록(List) 파티션 테이블

  • 미리 정해진 코드성 칼럼의 값을 키로 파티셔닝
  • 예를들어 지역을 기준으로 파티셔닝하는 경우가 있다.
  • 데이터 분포도를 파악하여 데이터가 각 파티션에 고루 분산될 수 있도록 하는 것이 좋다.

해시(Hash) 파티션 테이블

  • 관리상의 이점보다는 성능상의 이점이 있다.
  • 대용량 데이터 처리 시 데이터 블록(페이지)의 경합을 줄일 수 있다.

복합(Composite) 파티션 테이블

  • 파티션의 순서가 중요 (뒤에 분할된 파티션을 서브파티션이라고 함)

 

CHAR vs VARCHAR

VARCHAR 는 공백도 하나의 문자로 취급


무결성 설계

 

엔터티 무결성

  • PK 제약조건
  • UNIQUE 제약조건

도메인 무결성

  • 유효 값 (CHECK)
  • NOT NULL

★ 참조 무결성

참조 되는(부모) 테이블이 입력, 수정, 삭제 될 때

  • DEPENDENT : PK 값이 존재할때만 허용
  • AUTOMATIC : PK 값이 없는 경우 PK 값을 생성한 후 자식 테이블에 입력
  • RESTRICT : 참조하는(자식) 값이 없을 떄만 수정, 삭제 가능
  • CACADE : 수정, 삭제시 참조하는(자식) 테이블까지 수정, 삭제
  • DEFAULT : 기본 값으로 처리
  • CUSTOMIZED : 특정 조건을 만족할 때 허용
  • NULL : NULL로 처리
  • NO EFFECT : 조건 없이 허용

★ 무결성 강화 방법

 

애플리케이션

  • 복잡한 무결성 조건을 구현할 수 있음
  • 관리 및 적정성 검토가 어려움

트리거(Trigger)

  • 트리거 이벤트 시 저장 SQL을 실행하여 무결성 조건을 실행함
  • 통합 관리가 가능
  • 복잡한 요건 구현 가능
  • 운영 중 변경이 어려움

제약조건

  • 데이터베이스 제약조건 기능을 선언하여 무결성을 유지
  • 통합 관리가 가능
  • 간단한 선언으로 구현가능
  • 변경이 용이하며, 원천적으로 잘못된 데이터 발생을 차단 가능
  • 복잡한 제약조건, 예외적인 처리가 불가능

인덱스 설계

 

인덱스구조

1) 트리 기반 인덱스

  • 루트에서 리프까지 깊이가 같은 밸런스 트리
  • 대용량 처리의 입력, 삭제에 좋음
  • 각 노드는 최소한 반 이상 차 있어야 하는 제약 조건이 있다 -> B+ tree
  • 각 노드는 최소한 2/3 이상 차 있어야한다 -> B* Tree 
  • 처리 범위가 넓으면 수행속도 저하

2) 해시 기반 인덱스

  • 키 값에 대응하는 버킷을 식별하고 탐색

3) 비트맵 인덱스

  • 넓은 분포도를 갖고 있는 데이터에 대해 다중 조건을 만족하는 행의 개수를 계산하는 것에 적합
  • 데이터 분포도가 나쁜 칼럼에 적합

4) 함수 기반 인덱스

 

5) 파티션 인덱스

  • 비 파티션 인덱스
  • 로컬 파티션 인덱스
  • 글로벌 파티션 인덱스

 

분포도 조사 -> 분포도가 10~15% 정도면 인덱스 칼럼 후보

 

인덱스 칼럼 순서 결정

  • 항상 사용되는 칼럼을 선두 칼럼으로 한다.
  • 동치(=) 조건을 사용하는 컬럼을 선행 칼럼으로 한다.
  • 분포도가 좋은 칼럼을 선행 칼럼으로 한다

★ 분산 데이터베이스 관리 시스템

  • 분할 투명성
  • 위치 투명성
  • 중복 투명성
  • 장애 투명성
  • 병행 투명성

보안 설계

 

접근 통제 기능

1) 임의적 접근 통제 (DAC)

  • 사용자의 신원에 근거를 두고 권한을 부여

2) 강제적 접근 통제 (MAC)

  • 주체가 자신 보다 보안 등급이 높은 객체를 읽거나 쓰는 것을 방지
  • 읽기는 사용자의 등급이 객체의 등급과 같거나 높은 경우 가능
  • 입력, 수정은 사용자의 등급과 객체의 등급이 같을 경우 가능

 

접근 통제 정책

  • 신분 기반 정책
  • 규칙 기반 정책
  • 역할 기반 정책

★ 접근 통제 메커니즘

  • 접근 통제 목록 
    : 접근 통제 정보를 저장하는 방식, 어떤 사용자들이 객체에 대해 어떤 행위를 할 수 있는지를 나타냄
  • 능력 리스트
    : 주체가 접근할 수 있는 객체와 접근 권한을 주체에 저장하는 방식
  • 보안등급
    : 각 주체와 객체를 보안등급 중 하나로 분류하고 보안등급을 기준으로 접근 승인 여부 결정
  • 통합 정보 메커니즘

데이터베이스 관리 시스템 구성요소

  • 데이터베이스 파일
  • 데이터 저장 관리자
  • 질의 처리기
  • 트랜잭션 관리자

뷰 (View)

기본 테이블 또는 뷰에서 원하는 데이터를 선택하여 미리 SQL로 정의하여 놓은 가상의 테이블

민감한 데이터의 접근 통제, SQL 코드의 재사용, 데이터 가독성 확보를 위해 사용함

물리적인 저장 공간을 가지지 않는다. (인덱스를 생성할 수 없다)

 

절차적 SQL 활용

1) 저장 프로시저

장점

  • 보안
  • 성능
  • 메모리 할당
  • 생산성
  • 무결성

2) 트리거

  • 자동적으로 파생된 칼럼 값 생성 ( 예 : 합계, 잔액, 재고량 등)
  • 잘못된 트랜잭션 방지
  • 복잡한 보안 권한 강제 수행
  • 분산 데이터베이스의 노드상에서 참조무결성 강제 수행
  • 복잡한 업무 규칙 강제 수행
  • 이벤트 로깅 작업이나 감사 작업
  • 동기 테이블 복제 작업
  • 테이블 엑세스에 대한 통계 수집

트랜잭션 특성

  • 원자성
  • 일관성
  • 고립성
  • 영속성

낮은 트랜잭션 고립화 수준에서 발생할 수 있는 현상

  • Dirty Read
  • Non-Repeatable Read
  • Phantom Read

교착상태의 필수조건

  • 상호 배제
  • 점유와 대기
  • 비선점
  • 환형 대기

성능 개선 목표

처리 능력 (Throughput) 

해당 작업을 위해 소요되는 시간, 트랜잭션 수 / 시간

 

처리 시간 (Throughput Time) 

작업이 완료되는 데 소요되는 시간

 

응답 시간 (Response Time)

사용자가 키를 누른 후부터 시스템 응답까지의 시간

 

로드 시간 (Load Time)

 

★ SQL 실행 단계

1) 파싱 (Parser)

2) 옵티마이저 (Query Optimizer)

3) 행 소스 생성 (Row Source Generator)

4) SQL 실행 (SQL Execution Engine)


★ 조인

Nested-Loop 조인

  • 인덱스가 필요 없음
  • 두 집합의 모든 행을 카티션 프로덕트 형태로 검사하므로 비용이 많이 든다.
  • Inner 집합에 조인 조건으로 기술된 속성에 인덱스가 존재한다면 옵티마이저는 테이블 스캔을 하지 않고 인덱스를 통해 조인 조건을 만족시키는 행들을 얻어낼 수 있다. (Indexed Nested-Loop 조인)

Sort-Merge 조인

  • 조인하려는 두 집합을 조인 속성으로 정렬하여 Sorted List를 만든 후 이들을 병합(Merge)하는 조인 기법
  • Hash 조인과 달리 비동등 조인에서도 동작

Hash 조인

  • 대용량의 데이터 조인 시에 좋은 성능을 낸다.
  • 두 테이블 중 작은 테이블의 데이터를 읽어 메인 메모리에 해시테이블을 만들고 큰 테이블의 데이터를 읽으면서 해시 함수를 적용한 결과 값을 이용하여 해시테이블의 해시버킷을 탐색하며 조인을 수행한다.

온라인 프로그램 성능 개선 작업 고려사항

  • 사용 빈도가 높은 SQL문을 개선하는 것이 효과적이다.
  • 인덱스를 이용하여 데이터 엑세스 범위를 줄이는 것이 효과적이다.
  • 부분 범위 처리로 응답 시간을 단축한다.
  • 부분 범위 처리를 하기 위해서 Nested-Loop 조인과 인덱스를 이용한 정렬을 유도한다.
  • 장기 트랙잭션 처리를 억제한다.

과목 Ⅵ. 데이터 품질 관리이해

원천(source) 데이터
원천 데이터는 운영 업무 데이터의 원천이 되는 현실 세계의 데이터로 여기에는 일반문서, PC에 저장된 데이터 원천 파일, 이메일 및 팩스 등이 있다.

 

관리기준
 보안성 : 원천 데이터는 시스템이나 프로그램, 데이터베이스 객체에 의해 시스템적으로 관리되지 않아 허용되지 않은  사용자에게 노출될 위험성이 많으므로 중요 원천 데이터의 경우 보안에 각별히 유의해야 한다.
 안전성 : 원천 데이터는 재해 발생시 데이터 손실률이 높고 손실된 원천 데이터의 복구가 매우 어려우므로 중요 원천  데이터의 경우 안전 관리의 수준이 높아야 한다.
 신뢰성 : 원천 데이터의 정확성과 신뢰성을 판단할 수 있도록 이와 관련된 근거를 정의하여 관리해야 한다. 


실기 연습

1) 논리데이터 베이스 ERD 그리기
2) 엔터티 4개 선정, 정의, 특징 설명
3) 표준화 정의서 항목 2개 고르고 설명

데이터 표준화 기본원칙
공통 원칙 관용화된 용어를 우선하여 사용한다.
영문명(물리명) 전환 시 발음식은 지양한다.
일반적인 명명규칙 시 띄어쓰기는 하지 않는다.
한글명에 대해서는 복수의 영문명을 허용하지 않는다.(동음이의어 불가)
영문명에 대해서는 복수의 한글명을 허용한다.(이음동의어 허용)
표준 용어 1. '~일자', '~일' 등 날짜를 의미하는 용어는 '~일자'로 통일하여 사용한다.
2. 적용일자, 유효일자 등의 내용은 유효일자로 통합하여 사용한다.
3. 용어는 띄어쓰기를 허용하지 않는다.
4. 용어의 길이는 한글의 경우 12자 이내, 영문의 경우 24자 이내로 제한한다.
5. 단독 인조식별자로서의 일련번호, ID, SEQ는 ID로 통합한다.
6. 영문 약어의 경우 5자 이내로 제한한다.
7. 필요시 단어와 단어의 구분은 _(언더바)로 한다.
표준 코드 1. 코드성 속성은 맨 뒤에 '코드'를 붙인다. 예) 상태코드, 결과코드
2. 코드는 알파벳과 문자열을 조합하여 일정한 길이로 구성한다.
3. 코드 속성에는 기본적으로 3자리 문열인 코드 도메인을 지정한다.
4. 코드는 전체 모델 내에서 유일하게 정의한다.
표준 도메인 1. 표준 도메인은 기본적으로 Number, String, Datetime으로 정의한다.
2. 원화금액 도메인은 (18,0)로 정의한다.
3. 외화금액 도메인은 (18,2)로 정의한다.
상세 도메인의 구별이 필요한 경우는 별도의 원칙으로 정의한다.

참고문헌

  • 한국데이터산업진흥원, 데이터아키텍처 전문가 가이드 (한국데이터산업진흥원, 2020)
댓글
반응형
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함