1. 데이터 모델
현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
데이터 모델 구성 요소
(연구제)
•
연산 (Operation) : 실제 데이터를 처리하는 작업 명세로 데이터베이스 조작 도구
•
구조 (Structure) : 논리적 개체 간 관계, 데이터 구조, 정적 성질 표현
•
제약 조건 (Constraint) : DB에 저장될 수 있는 실제 데이터의 논리적 제약 조건
데이터 모델링 절차
요구사항 분석 → 개념적 모델링 → 논리적 모델링 → 물리적 모델링 → 구현
(개논물)
•
개념적 데이터 모델링 : 현실 세계의 인식을 추상적인 개념으로 표현 - E-R 다이어그램
•
논리적 데이터 모델링 : 개념적 모델을 컴퓨터가 처리할 수 있는 구조로 표현 (관계 모델) - 정규화
•
물리적 데이터 모델링 : 데이터의 실제 저장 방법 및 접근 경로 표현 (레코드 형식 / 순서) - 반정규화
2. 논리 데이터 모델 검증
논리적 데이터 모델링은 업무의 모습을 모델링 표기법으로 형상화하여 컴퓨터가 처리할 수 있는 구조로, 사람이 이해하기 쉽게 표현하는 프로세스
논리 데이터 모델 종류
관계형 데이터 모델, 계층형 데이터 모델, 네트워크 데이터 모델
관계형 데이터 모델
데이터를 행과 열로 구성된 2차원 테이블 형태로 구성한 모델
릴레이션, 튜플, 속성, 카디날리티, 차수, 스키마, 인스턴스로 구성
→ 이러한 관계 데이터 모델을 활용한 데이터 시스템을 RDBMS(Relational Database Management System)라고 하는 것
논리 데이터 모델 속성
•
개체(Entity) : 관리할 대상이 되는 실체 - 
•
속성(Attribute) : 개체가 가진 고유의 특성, 가장 작은 논리적 단위 - 
•
관계(Relationship) : 개체 간의 대응 관계 (1:1, 1:N, N:M) - 
→ 도형은 E-R(Entity-Relation) 다이어그램의 기호
3. 정규화
관계 데이터 모델에서 이상 현상이 발생하지 않도록 중복성 / 종속성을 최소화하기 위한 작업
이상 현상 (Anomaly)
데이터의 중복성으로 인해 릴레이션(테이블)을 조작할 때 발생하는 비합리적인 현상
•
삽입 이상 : 데이터 삽입 시 불필요한 데이터가 함께 삽입
•
삭제 이상 : 튜플 삭제 시 원치 않는 데이터도 함께 삭제
•
갱신 이상 : 일부만 수정되어 데이터 불일치 → 정보 모순 발생
정규화 단계
•
1NF(제 1 정규형) : 테이블 내의 속성값이 원자 값
•
2NF(제 2 정규형) : 부분 함수 종속성을 제거
•
3NF(제 3 정규형) : 이행 함수 종속성(X→Y, Y→Z이면 X→Z)을 제거
•
BCNF(보이스/코드) : 결정자 함수의 종속성을 제거하고 모든 결정자가 후보키인 정규형
•
4NF(제 4 정규형) : 다중 값 종속을 제거
•
5NF(제 5 정규형) : 조인 종속을 제거
반정규화
정규화 과정 진행 후, 시스템 성능 향상 및 운영 편의성을 위해 의도적으로 데이터 중복/통합/분리를 허용하여 정규화 원칙을 위반하는 행위
4. 물리 데이터 모델
논리 데이터 모델을 DBMS 특성 및 성능을 고려하여 구체화시킨 모델
물리 데이터 모델링 변환 절차
(순서외우기!!)
1.
개체 → 테이블
2.
속성 → 컬럼
3.
UID → PK(Primary Key)
4.
관계 → 외래키
5.
컬럼 길이 및 유형 정의
6.
반정규화
무결성
•
개체 무결성 : 기본키(PK)를 구성하는 어떤 속성도 NULL/중복 값을 가질 수 없음
•
도메인/속성 무결성 : 릴레이션 내 튜플들이 각 속성의 도메인에 지정된 값만을 가짐
•
참조 무결성 : 외래키(FK)는 NULL 또는 참조 릴레이션의 PK 값과 동일
•
사용자 정의 무결성
•
데이터 무결성 강화
접근 통제 기술 (AC, Access Control)
•
임의 접근 통제(DAC) : 사용자 신원/신분에 따라 접근 권한 부여 - GRANT / REVOKE
•
강제 접근 통제(MAC) : 주체와 객체의 등급을 비교 후 시스템이 접근 권한 부여
•
역할 기반 접근 통제(RBAC) : 사용자의 역할에 따라 접근 권한 부여 (중앙관리자가 지정)
물리 데이터 저장소 구성
1.
참조무결성 제약 조건 : 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건
a.
옵션 : 제한(Restricted), 연쇄(Cascade), 널 값(Nullify)
2.
인덱스(Index) 설계 : 검색 연산의 최적화를 위해 키 값과 포인터의 쌍으로 구성되는 데이터 구조
a.
적용 기준 : 분포도 10~15% 이내
b.
특징
•
분포도가 좋은 컬럼은 단독으로 생성
•
자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
•
지나치게 많은 인덱스는 오버헤드 발생 가능
3.
뷰(View) 설계 : 사용자에게 허용된 정보만을 보여주기 위해 기본 테이블에 기반을 둔 가상 테이블
a.
속성 : REPLACE, FORCE, NOFORCE, WITH CHECK OPTION, WITH READ ONLY
b.
장점 : 논리적 데이터 독립성 제공, 접근 제어를 통한 자동 보안 기능 제공
c.
단점 : 독립적 인덱스 보유 불가, 삽입/삭제/갱신 연산 제약
4.
클러스터(Cluster) 설계 : 데이터 접근 효율을 높이기 위해 동일한 성격의 데이터를 같은 블록에 저장하는 물리적 저장 방법
a.
종류 : 단일 테이블 클러스터링, 다중 테이블 클러스터링
b.
특징 : 조회 속도는 향상시키지만 삽입, 삭제, 수정의 기능은 저하
5.
파티션(Partition) 설계 : 대용량의 테이블을 작은 논리적 단위인 파티션으로 나누는 것
a.
장점 : 성능 향상, 가용성 향상, 백업 가능
b.
종류
•
레인지 파티셔닝 : 연속되는 숫자나 날짜 기준으로 파티셔닝
•
해시 파티셔닝 : 파티션 키의 해시 함수 값으로 파티셔닝
•
리스트 파티셔닝 : 데이터에 대한 명시적 제어가 가능한 파티셔닝
•
컴포지트 파티셔닝 : 범위 분할 이후 해시 함수를 적용하는 파티셔닝
5. 데이터베이스
특정 조직 내 필요한 데이터들의 모임, 공용으로 소유/유지/이용하는 공용 데이터의 집합
데이터 언어
•
DDL(Data Definition Language) : 데이터베이스 구조/제약 조건 정의
•
DML(Data Manipulation Language) : 데이터 처리/조작
•
DCL(Data Control Language) : 데이터의 보안, 권한, 무결성, 권한 검사, 병행 제어
DBMS
데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어
•
Key-Value DBMS
◦
Key 기반 Get / Put / Delete 제공. 메모리 기반에서 성능 우선 시스템 및 빅데이터 처리 가능
◦
Unique한 Key에 하나의 값을 가지는 형태
◦
Redis, DynamoDB
•
컬럼 기반 데이터 저장 DBMS
◦
Key 안에 (Column, Value) 조합으로 된 여러 개의 필드
◦
테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현
◦
HBase, Cassandra
•
Document DBMS
◦
값(Value)의 데이터 타입이 문서(Document)라는 타입을 사용
◦
XML, JSON 같이 구조화된 타입으로, 복잡한 계층 구조 표현 가능
•
Graph DBMS
◦
시멘틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DBMS
◦
노드와 엣지로 특징되는 요소 특화
◦
Neo4j, AllegroGraph
NoSQL
Not only SQL. 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 Join 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS
데이터 마이닝
대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
대규모 데이터에서 의미 있는 패턴을 파악하거나 예측하여 의사결정에 활용하는 기법
•
분류 규칙(Classification)
•
연관 규칙(Association)
•
연속 규칙(Sequence)
•
데이터 군집화(Clustering)
