[Engineer Information Processing] 3. 데이터베이스 구축
정보처리기사를 취득하기 위해 공부하는 과정에 작성한 ‘데이터베이스 구축’ 관련 정리이다.
데이터베이스의 개념
데이터베이스 : DBMS
- 지료 : 단순한 데이터, 정보 : 의미 있는 데이터, 지식 : 가공되어 의미 있는 데이터
- 정보 시스템 : 조직체의 데이터를 바탕으로 정보를 추출 및 생성하는 시스템
- 정보 시스템 종류 : 일괄 처리 시스템, 온라인 실시간 처리 시스템, 분산 처리 시스템
DB정의 : 통합 데이터, 저장 데이터, 운영 데이터, 공용 데이터DB특성 : 실시간 접근성, 내용에 의한 참조, 동시 공유, 계속적 변화DB시스템 구성 :DB,DBMS,DB관리자,DB언어
데이터 관리 / 빅데이터 관리
- 데이터 마이닝 : 데이터 웨어하우징에서 수집·분석된 자료를 사용자에 제공하기 위해 분류·가공하는 요소 기술
- 분류 : 데이터를 여러 그룹으로 분류
- 연관 규칙 분석 : 특정 규칙 탐색
- 연속 : 순서 정보를 갖는 데이터에서 순서 관련 패턴 탐색
- 군집화 : 데이터를 비슷한 특성의 그룹으로 나눔
- 예측 : 과거 데이터를 분석해 미래 예측
- 이상 탐지 : 데이터에섯 비정상적인 패턴 탐색
- 회귀 분석 : 데이터 간의 관계를 분석
- 차원 축소 : 데이터 차원을 줄여서 분석
- 하둡 : 빅데이터 세트를 병렬로 처리하기 위한 데이터 분산 처리를 돕는 자바 기반 소프트웨어 오픈소스 프레임워크
- 맴리듀스 : 대용량 데이터를 분산 처리하기 위한 프로그래밍 모델 (
Map,Reduce함수로 구성) Sqoop:RDBMS과 하둡 간의 데이터 전송을 지원하는 도구
- 맴리듀스 : 대용량 데이터를 분산 처리하기 위한 프로그래밍 모델 (
데이터베이스 스키마와 언어
- 스키마 : 데이터베이스 구조 (개체, 속성, 관계) 정의 (데이터베이스의 논리적 구조를 기술해 데이터 일관성·무결성 보장)
- 외부 스키마 : 데이터베이스 사용자, 응용 프로그램의 관점에서 데이터베이스 정의
- 개념 스키마 : 데이터베이스 전체를 정의한 것으로, 데이터 개체·관계·제약 조건·접근 권한·무결성 규칙을 명세
- 내부 스키마 : 내부 물리적 저장 구조를 정의해 데이터의 실제 저장 방법을 기술
- 스키마 간 독립성 : 논리적 독립성, 물리적 독립성
- 데이터베이스 언어 : 데이터베이스 내에서 활용되는 언어
SQL: 관계형 데이터베이스의 표준 질의어
데이터베이스 설계와 관계형 모델
데이터베이스 설계
- 데이터베이스 설계 단계 : 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
- 개념적 설계 : 목표
DBMS에 독립적인 개념 스키마 설계 (기념 스키마 모델링, 트랜잭션 모델링) - 논리적 설계 : 목표
DBMS에 종속적인 논리 스키마 설계 (스키마 평가 및 정제, 트랜잭션 인터페이스 설계) - 물리적 설계 : 목표
DBMS에 종속적인 물리적 구조 설계 (저장 레코드 양식 설계, 레코드 클러스터링)- 물리적 설계 고려사항 : 인덱스 구조, 레코드 크기·개수, 트랜잭션 갱신·참조 성향, 개념 스키마 변경 여부
- 개념적 설계 : 목표
데이터 모델 / 관계형 데이터베이스 모델
- 데이터 모델 : 데이터베이스 설계 과정에서 데이터 구조를 표현하기 위해 사용되는 도구
- 데이텉 모델 구성 요소 : 데이터 구조, 연산, 제약 조건
- 개념 데이터 모델 : 속성들로 기술된 개체 타입과 개체 타입 간의 관계를 이용해 현실 세계를 표현
- 개체-관계 모델 (
E-R모델): 개체 타입과 이들 간 관계 타입을 이용해 개념적 표현 - 논리 데이터 모델 : 엔티티와 속성들의 관계를 구조적으로 정의
- 논리 데이터 모델 종류 : 계층적 데이터 모델, 네트워크형 데이터 모델, 관계형 데이터 모델
- 논리 데이터 모델 구성 요소 : 개체, 속성, 관계
- 논리 데이터 모델 종류 : 계층적 데이터 모델, 네트워크형 데이터 모델, 관계형 데이터 모델
- 개체-관계 모델 (
- 관계형 데이터베이스 모델 : 관계형 데이터베이스를 구성하는 개체나 관계를 릴레이션으로 표현
- 릴레이션 스키마 : 개념 모델에 도출된 개체를 컴퓨터로 처리 가능한 단위로 매핑한 모델(릴레이션 이름과 속성의 집합)
- 릴레이션 인스턴스 : 릴레이션 스키마에 따라 저장된 튜플 (테이블의 각 행)
- 릴레이션 속성 : 순서가 없는 데이터베이스의 가장 작은 논리적 단위로서의 릴레이션의 열
- 디그리 : 릴레이션이 가지는 속성의 개수 (디그리 값이 클수록 복잡한 구조 → 정규화 필요)
- 도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합 (데이터 무결성·일관성 유지에 활용)
- 튜플 : 순서가 없는 릴레이션의 행 (카디널리티 : 튜픙의 수)
- 릴레이션의 특징 : 튜플의 유일성, 튜플의 무순서성, 속성의 원자성, 속성의 무순서성
CRUD매트릭스 : 데이터베이스에 영향 주는CRUD연산으로 프로세스·테이블 간 메트릭스를 만들어 트랜잭션 분석
키와 무결성
- 슈퍼 키 : 튜플을 고유하게 식별하는 하나 이상의 속성 집합 (유일성
O, 최소성X) - 후보 키 : 튜플을 고유하게 식별하는 하나 이상의 속성 집합 (유일성
O, 최소성O) - 기본 키 : 후보 키 중 대표인 키 (
NullX, 중복X, 유일성O, 최소성O) - 대체 키 : 후보 키 중 기본 키 외의 나머지 키
- 외래 키 : 릴레이션 간 연결을 위해 다른 테이블의 기본 키로 사용되는 키
- 무결성 : 데이터에 적용되는 연산에 제한을 두어 데이터의 정확성·일관성·유효성 유지
- 개체 무결성 : 기본 키는
NullX, 중복X - 참조 무결성 : 외래 키를 변경하려면, 외래 키가 참조하는 대상의 기본 키도 변경해야 함
- 도메인 무결성 : 각 속성은 해당 속성 도메인에 지정된 값이어야 함
- 개체 무결성 : 기본 키는
데이터베이스 정규화
이상 현상과 함수적 종속
- 이상 현상 : 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 현상
- 삽입 이상 : 데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상
- 삭제 이상 : 릴레이션의 한 튜플을 삭제할 때 연쇄적으로 삭제되는 현상
- 갱신 이상 : 튜플 중에 일부 속성을 갱신해 정보의 모순성이 발생하는 현상
- 함수적 종속 : 개체 내에 존재하는 속성 간의 관계를 종속적인 관계로 정리하는 방법
- 부분적 함수 종속 : 혼한 속상 기본키
{A, B}에 대해A → C가 성립 - 이행 함수적 종속 : 속성
X, Y, Z가 주어졌을 때,X → Y,Y → Z하면X → Z
- 부분적 함수 종속 : 혼한 속상 기본키
데이터베이스 정규화 / 반정규화
- 정규화 : 논리적 설계 단계에서 발생할 수 있는 종속으로 인한 이상 현상의 문제를 해결하기 위해 여러 테이블로 분해
- 정규화 목적 : 데이터 구조 안정성 확보, 중복 데이터·수정 및 삭제 시 이상·테이블 불일치 최소화
- 정규화 과정 : 비정규 릴레이션 →
1NF→2NF→3NF→BCNF→4NF→5NF
- 1정규형 : 어떤 테이블에 속한 모든 도메인이 원자값만으로 되어 있는 테이블
- 2정규형 : 1정규형을 만족하면서, 테이블의 부분 함수적 종속을 제거해 완전 함수적 종속이 되도록 분해된 테이블
- 3정규형 : 1,2정규형을 만족하면서, 속성 간 이행 함수 종속을 만족하는 테이블
BCNF정규형 : 1,2,3정규형을 만족하면서, 결정자가 후보키가 아닌 함수 종속이 제거된 테이블- 4정규형 : 1,2,3정규형을 만족하면서, 다치 종속이 제거된 테이블
- 5정규형 : 1,2,3,4정규형을 만족하면서, 조인 종속이 제거된 테이블
- 반정규화 : 정규화된 결과를 시스템 성능 향상 및 개발·운영 단순화를 위해 중복·통합·분리를 수행
- 반정규화 기법 : 테이블 반정규화 (테이블 병합, 테이블 분할, 테이블 추가), 컬럼 반정규화, 관계 반정규화
- 파티셔닝 : 데이터베이스의 테이블을 분할하는 것
- 파티셔닝 키 기준 유형 : 범위 분할, 목록 분할, 해시 분할, 합성 분할, 라운드로빈 분할
SQL
관계 대수와 연산자
- 관계 대수 : 원하는 정보 및 정보를 어떻게 유도하는지 기술하는 절차적 방법 (일반 집합 연산, 순수 관계 연산)
- 관계 해석 : 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 방법 (도메인 관계 해석, 튜플 관계 해석)
- 관계 해석 자유 변수 : 전칭 정량자
∀(For All), 존재 정량자∃(For Some)
- 관계 해석 자유 변수 : 전칭 정량자
- 순수 관계 연산자 :
Select(튜플 집합 검색),Project(속성 집합 추출),Join(두 릴레이션 공통 속성 결합),Division(두 릴레이션에서 특정 속성를 제외한 속성으로 나눔) - 집합 산자 : 합집합 (
Union), 교집합 (Intersection), 차집합 (Difference), 교차곱 (Cartesian Product)
뷰, 시스템 카탈로그
- 뷰 : 사용자에 접근 허용된 자료만을 제한적으로 보여주기 위해 기본 테이블에서 유도되는 가상 테이블
- 뷰 생성 시
CREATE, 검색 시SELECT사용 - 뷰 정의 변경 시
ALTER대신DROP사용 - 뷰를 이용한 또다른 뷰의 생성이 가능 (하나의 뷰 제거 시 기반한 뷰들도 함꼐 삭제)
- 뷰에 대한 조작에서 삽입·갱신·삭제는 제약
- 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동 제거
- 뷰 생성 시
- 시스템 카탈로그 (데이터 사전) : 시스템 자신이 필요하는 여러 객체들에 대한 정보를 가진 시스템 데이터베이스
- 메타 데이터 : 시스템 카탈로그에 저장되는 내용
- 시스템 카탈로그 기능 : 테이블·뷰·인덱스·사용자 계정 정보 조회
- 인덱스 : 원하는 자료를 검색하기 위해, 인덱스 파일 및 인덱스 파일 (키, 주소)로 구성된, 독립적인 저장 공간
DDL
- 데이터 정의어 (
DDL) : 스키마 정의·변경·삭제 (논리적 데이터 구조와 물리적 데이터 구조 간의 사상 정의)CREATE: 스키마·도메인·테이블·뷰 정의CREATE TABLE: 테이블 생성
ALTER: 테이블 정의 변경 (필드 추가·삭제·갱신)ALTER TABLE: 테이블 구조 변경
DROP: 스키마·도메인·테이블·뷰 삭제
DCL
- 데이터 제어어 (
DCL) : 데이터 무결성·제어COMMIT: 명령어로 수행된 실제 물리적 디스크에 저장한 뒤에 결과 반환ROLLBACK: 명령어로 수행에 실패했음을 알리고, 수행된 결과를 원상 복귀GRANT: 관리자가 사용자에 데이터베이스에 대한 권한을 부여REVOKE: 관리자가 사용자에 데이터베이스에 대한 권한을 취소
DML
- 데이터 조작어 (
DML) : 데이터 검색·삽입·삭제·변경SELECT: 튜플 검색BETWEEN ~ AND ~: 튜플 검색 시 구간 값 조건식- 그룹 함수 (
GROUP BY~) :COUNT(행의 수),SUM(하나 이상의 열 합게),AVG(하나 이상의 열 평균),MAX(열의 최댓값),MIN(열의 최솟값)</br>HAVING: 튜플 검색 시 그룹 함수와 결합해 탐색 조건을 지정하는 조건식
ORDER BY~: 특정 항목 기준으로 검색 테이블의 행들을 오름차순·내림차순으로 정렬- 하위 질의 = 서브 퀴리 : 하위 질의를 1차 수행한 다음, 반환값을 상위 릴레이션의
WHERE에서 사용
INSERT: 튜플 삽입UPDATE: 튜플 내용 변경DELETE: 튜플 삭제
NoSQL, 절차형 SQL
NoSQL: 스키마가 고정되지 않은 비관계형 데이터 모델로 데이터를 저장·검색하는 데이터베이스- 절차형
SQL:SQL의 연속 실행, 조건에 따른 반복, 분기 등의 제어 가능- 저장 프로시저 : 사용자가 자주 사용하는 명령문을 작성해 데이터베이스에 저장한
PL/SQL명령문- 트리거 : 데이터베이스에 특정 사건이 발생할 때마다 자동으로 수행되는 저장 프로시저
- 저장 프로시저 : 사용자가 자주 사용하는 명령문을 작성해 데이터베이스에 저장한
데이터베이스 병행 제어와 보안
트랜잭션
- 트랜잭션 : 하나의 논리적 기능을 수행하기 위한 작업 단위
- 트랜잭션의 특징 : 원자성 (완전 수행 안되면 수행
X), 일관성 (트랜잭션 실행 전후 상태가 일관성 유지)
고립성 (트랜잭션 실행 시 다른 트랜잭션에 독립적), 영속성 (트랜잭션 결과가 데이터베이스에 저장) - 트랜잭션 상태 : 활동, 부분 완료 (실행 마치고 저장 직전), 완료, 실패, 철회
- 리커버리 연산 : 트랜잭션 수행 중에 장애로 손상된 데이터베이스를 정상 상태로 복구 (
Redo,Undo) - 즉각 갱신 : 데이터를 갱신하면 트랜잭션 완료 전에 실제 데이터베이스에 반영
- 트랜잭션의 특징 : 원자성 (완전 수행 안되면 수행
병행 제어, 회복
- 병행 제어 : 동시에 수행되는 트랜잭션을 일관성 있게 처리하기 위해 제어
- 병행 제어 목적 : 데이터베이스 공유·일관성·시스템 활용도 최대화, 사용자 응답 시간 최소화
- 병행 제어 종류 : 로킹, 타임스탬프, 최적 병행 수행, 다중 버전 기법
- 로킹 : 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스 불가하게 함
- 2단계 로킹 : 트랜잭션의 로크·해제 요청을 2단계로 실시 (직렬성은 보장하지만, 교착상태 예방은 불가능)
- 2단계 로킹 단계 : 확장 단계 (트랜잭션 시작 시 모든 잠금 확보), 축소 단계 (트랜잭션 완료 시 잠금 해제)
- 2단계 로킹 잠금 상태 : 공유 잠금 (타 트랜잭션 읽기 가능), 배타적 잠금 (타 트랜잭션 읽기 불가능)
- 2단계 로킹 : 트랜잭션의 로크·해제 요청을 2단계로 실시 (직렬성은 보장하지만, 교착상태 예방은 불가능)
- 타임스탬프 : 시간 허가 인증 도장을 부여받아 트랜잭션 간 순서를 미리 정함
- 회복 : 데이터 손실 및 손상이 발생했을 때 이를 복구
- 회복 기법 종류 : 즉시 갱신, 지연 갱신,
Redo,Undo
- 회복 기법 종류 : 즉시 갱신, 지연 갱신,
데이터베이스 보안과 권한 설정
- 암호화 : 네트워를 통하거나 컴퓨터 내부에 자료를 저장할 때 권한을 가진 사람 외엔 데이터를 보지 못하도록 함
- 암호화 기법 : 비밀 키 (대칭 키), 공개 키 (비대칭 키)
- 데이터베이스 보안 적용 주의사항 : 접근 제어, 데이터 암호화, 취약점 관리, 백업과 복원, 감시와 모니터링
분산 데이터베이스
- 분산 데이터베이스 : 네트워크를 통해 연결된 여러 컴퓨터에 데이터가 분산된 데이터베이스 → 분산 데이터베이스 투명성
- 위치 투명성 : 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
- 중복 투명성 : 사용자에 통지할 필요 없이 시스템 안에 자원들의 부가적인 복사를 자유롭게 할 수 있다.
- 병행 투명성 : 다중 사용자들이 자원을 자동으로 공유할 수 있다.
- 장애 투명성 : 사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없다.
- 분산 데이터베이스 구성 요소 : 분산 처리기, 분산 데이터베이스, 틍신 네트워크
- 분산 데이터베이스 연결 모델 : 클라이언트·서버 모델,
Peer-to-Peer모델, 클러스터 모델