데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
데이터베이스 개요
- 데이터 저장소
- 논리적인 구조로 조직화하거나, 물리적인 공간에 구축
- 논리 데이터저장소
- 데이터 및 데이터 간의 연관성 제약조건을 식별
- 물리 데이터저장소
- 소프트웨어가 운용될 환경의 실제 저장장치에 저장한 것
- 데이터베이스
- 공동적으로 사용될 데이터를 중복을 배제하여 통합
- 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 다음과 같이 정의할 수 있음
- 통합된 데이터
- 중복을 배제한 데이터의 모임
- 저장된 데이터
- 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터
- 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터
- 공동으로 소유하고 유지하는 자료
- 통합된 데이터
- DBMS(DataBase Management System, 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- DBMS의 필수 기능 3가지정의 기능 데이터 타입과 구조에 대한 정의, 이용방식, 제약조건등을 명시
조작 기능 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공 제어 기능 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능
- 데이터의 독립성
- 종속성에 대비되는 말
- 논리적 독립성과 물리적 독립성이 있다.
- 데이터의 논리적 구조를 변경 시키더라도 응용 프로그램은 영향을 받지 않음 | | --- | --- | | 물리적 독립성 | - 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
- 디스크를 추가/변경 하더라도 응용프로그램은 영향을 받지 않음 |
- | 논리적 독립성 | - 응용 프로그램과 데이터베이스를 독립시킴
- 스키마
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마 각 개인의 입장에서 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것 개념 스키마 - 전체적인 논리적인 구조 - 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재 | | 내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 저장될 레코드이 형식, 저장 데이터의 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
데이터 베이스 설계
- 데이터 베이스 설계
- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터를 구현하여 일반 사용자들이 사용하게 하는 것
- 데이터베이스 설계 시 고려사항항목 내용
무결성 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 제약 조건을 항상 만족해야함 일관성 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일정해야 함 회복 장애가 발생했을 때 발생 직전의 상태로 복구할 수 있어야 함 보안 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 데이터베이스 확장 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함 - 데이터베이스 설계 순서
- 요구 조건 분석
- 개념적 설계
- 논리적 설계
- 물리적 설계
- 구현
- 요구 조건 분석
- 데이터베이스를 사용할 사람으로부터 필요한 용도를 파악
- 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태, 흐름, 제약조건
- 요구 조건 명세 작성
- 개념적 설계(정보 모델링, 개념화)
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행함
- 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성
- DBMS에 독립적인 개념 스키마를 설계
- 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 저장할 수 있도록 변환하기 위해 특정 DBMS에 지원하는 논리적 자료 구조로 변환
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과 데이터 타입들 간의 관계로 표현
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 논리적 스키마를 설계
- 트랜잭션의 인터페이스를 설계
- 물리적 설계(데이터 구조화)
- 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 파일의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법을 묘사
- 데이터베이스 구현
- 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일 하여 빈 데이터베이스 파일을 생성
- 트랜잭션을 작성함
- 응용 프로그램을 작성함
데이터 모델의 개념
- 데이터 모델
- 현실 세계의 정보들을 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 의미, 일관성, 제약 조건등을 기술하기 위한 개념적 도구들로 구성
- 데이터베이스 설계 과정에서 구조를 논리적으로 표현하기 위해 지능적 도구로 사용
- 데이터 모델 구성 요소
- 개체
- 속성
- 관계
- 데이터 모델 종류
- 개념적 데이터 모델
- 논리적 데이터 모델
- 물리적 데이터 모델
- 데이터 모델에 표시할 요소
- 구조
- 연산
- 제약 조건
- 개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개체 타입과 이 개체 타입들 간의 관계를 이용
- 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델이 대표적인 모델
- 논리적 데이터 모델
- 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 데이터 타입과 이 데이터 타입들간의 관계를 이용
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 데이터 모델에 표시할 요소요소 내용
구조(Structure) 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 연산(Operation) 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구 제약 조건(Constraint) 저장할 수 있는 실제 데이터의 논리적인 제약조건
데이터 모델의 구성 요소
- 개체(Entity)
- 데이터베이스에 표현하려는 것으로 개념이나 정보 단위 같은 현실 세계의 대상체
- 유형, 무형의 정보로서 서로 연관된 몇 개의 속성
- 독립적으로 존재하거나 그 자체로서도 구별이 가능하며, 유일한 식별자(Unque Identifier)에 의해 식별
- 다른 개체와 하나 이상의 관계(Relationship)가 있음
- 데이터모델의 예제
- ex) 다음은 교수 번호, 성명, 전공, 소속으로 구성된 교수 개체입니다.
- 속성(Attirbute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체를 구성하는 항목으로 개체의 특성을 기술함
- 속성의 수를 디그리 또는 차수라고 함
- 속성의 특성과 개체 구성 방식
- 속성의 특성에 따른 분류분류 내용
기본 속성(Basic) - 업무 분석을 통해 정의한 속성 - 가장 많고 일반적임
- 업무상 코드로 정의한 속성은 기본 속성에서 제외됨 | | 설계 속성(Design) | - 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 데이터 모델링을 위해 업무를 규칙화하고 속성을 새로 만들거나 변형하여 정의하는 속성 | | 파생 속성(Derived) | - 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적은 수를 정의하는 것이 좋음 |
- 속성 예제
- 속성의 개체 구성 방식에 따른 분류분류 내용
기본키 속성 유일하게 식별할 수 있는 속성 외래키 속성 다른 개체와의 관계에서 포함된 속성 일반 속성 기본키, 외래키에 포함되지 않는 속성 - 관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 관계의 형태형태 내용
일대일 A의 각 원소가 B의 원소 한 개와 대응 일대다 A의 각 원소가 B의 원소 여러 개와 대응하지만, B의 각 원소는 A의 원소 한 개와 대응 다대다 A의 각 원소가 B의 원소 여러 개와 대응하고, B의 각 원소도 A의 원소 여러 개와 대응 - 관계의 종류종류 내용
종속관계 - 주종 관계를 표현 - 식별 관계와 비식별 관계가 있음 | | 중복관계 | 두 개체 사이의 2번 이상의 종속 관계가 발생 | | 재귀관계 | 자기 자신과 관계를 갖는 것, 순환관계라고도 함 | | 배타관계 | - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계와 배타 OR 관계로 구분 |
E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체와 개체 간의 관계를 기본 요소로 이용, 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 피터 첸에 의해 제안됨
- 개념적 데이터 모델이 대표적임
- 개체 타입과 이들 간의 관계 타입을 이용해 현실세계를 개념적으로 표현
- E-R모델에서는 데이터를 개체, 관계, 속성으로 묘사
- E-R 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터 베이스
- 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현
- 장점
- 간결하고 보기 편리함
- 다른 데이터베이스로의 변환 용이
- 단점
- 성능이 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 릴레이션은 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- ⇒ 튜플 == 카디널리티
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티 또는 기수, 대응수 라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 항목 또는 필드에 해당됨
- 속성은 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- ‘성별’ 애트리뷰트의 도메인은 “남”과 “여”로, 그 외의 값은 입력될 수 없음
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음
- 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 명칭은 유일해야 함, 속성을 구성하는 값은 동일할 수 있음
- 튜플을 유일하게 식별하기 위해 부분집합을 키로 설정함
- 속성의 값은 원자값만 저장함
- 관계형 데이터 모델(Relational Data Model)
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델임
- 파일 구조처럼 하나의 DB로 묶어서 속성들 간의 관계를 설정하거나, 테이블 간의 관계 설정
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화
- 대표적인 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
관계형 데이터베이스의 제약 조건 - 키(Key)
- 키(Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- 후보키
- 기본키
- 대체키
- 슈퍼키
- 외래키
- 키 예시
- 후보키(Candidate key)
- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 후보키는 유일성과 최소성 모두 만족시켜야함
- 유일성
- 하나의 키 값으로 하나의 튜플만을 유일하게 식별
- 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성
- 유일성
- 기본키(Primary Key)
- 후보키 중에서 메인키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성임
- NULL값을 가질 수 없음
- 대체키(Alternate key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미 함
- 대체키를 보조키라고도 함
- 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되어있을 때 속성 A를 외래키라고 함
- 외래키를 지정되면 참조 릴레이션의 기본키에 없는 값을 입력할 수 없음
관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
- 무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미함
- 무결성 제약 조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류종류 내용
개체 무결성 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정 참조 무결성 외래키 값은 Null값이거나, 기본키 값과 동일해야 함, 즉, 참조할 수 없는 외래키 값을 가질 수 없다 도메인 무결성 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정 사용자 정의 무결성 사용자가 정의한 제약조건에 만족해야 한다 NULL 무결성 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 각 튜플이 갖는 속성값들이 서로 달라야 한다 키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재 관계 무결성 한 릴레이션과 다른 릴레이션의 튜플 사이의 관계에 대한 적절성 여부를 지정 - 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가 제약조건 제약 조건을 설정하여 무결성을 유지
관계대수 및 관계해석
- 관계대수
- 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어임
- 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션임
- 질의에 대한 해를 구하기 수행해야 할 연산의 순서를 명시함
- 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자임
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 관계해석(Relational Calculus)
- 관계 데이터의 연산을 표현하는 방법
- 원하는 정보가 무엇이라는 것만 비절차적 특성을 지님
이상 / 함수적 종속
- 이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
- 이상의 종류에는 삽입 이상, 삭제 이상, 갱신 이상이 있음
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 예) <수강>테이블에서 학번이 “600”인 학생이 학년이 “2”라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생함
- 테이블에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 예) <수강> 테이블에서 학번이 “200”인 학생이 과목번호 “C123”의 등록을 취소하고자 하는 경우 삭제 이상이 발생함
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 불일치성이 생기는 현상
- 예) <수강> 테이블에서 학번이 “400”인 학생의 학년을 “4”에서 “3”으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있음
- 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분집합이라고 하자.
- Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X→Y(결정자→종속자)로 표기함
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건임
- 예) 다음의 <학생> 테이블에서 함수적 종속을 살펴보자
- 예) 다음의 <수강> 테이블에서 함수적 종속을 기호로 표시해보자.
정규화
- 정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해
- 정규화의 목적은 중복 제거 및 삽입, 삭제, 갱신의 이상 발생 가능성을 줄이는 것
- 정규형에는 다음의 순서대로 정규화의 정도가 높아짐
- 제 1정규형
- 제 2정규형
- 제 3정규형
- BCNF
- 제 4정규형
- 제 5정규형
- 도부이결다조(두부이걸 다줘~)
- 무손실 분해
- 정규화 과정
- 아래의 <주문목록> 테이블을 가지고 정규화 과정을 살펴보자.
- 제 1정규형
- 테이블 R에 속한 모든 속성이 도메인이 원자 값만으로 되어 있는 정규형은 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형임
- 제 2정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 제 3정규형
- 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF
- 모든 결정자가 후보키인 정규형
- 제 3정규형에 후보키가 여러 개 존재하고, 후보키들이 서로 중첩되어 나타나는 경우
- 제 4정규형
- 다중 값 종속 A—>B가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형
- 모든 조인 종속이 R의 후보키를 통해서만 성립
반정규화
- 반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위해하는 행위
- 데이터의 일관성 및 정합성이 저하될 수 있음
- 반정규화의 방법
- 테이블 통합
- 테이블 분할
- 중복 테이블 추가
- 중복 속성 추가
- 테이블 통합
- 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용
- 테이블 통합을 고려하는 경우
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두개의 테이블을 이용하여 조회를 수행하는 경우
- 테이블 통합의 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입/서브타입 테이블 통합
- 테이블 분할
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것 - 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함 | | 수직 분할 | - 속성이 너무 많을 경우 속성을 기준으로
- 종류: 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 본안을 적용해야하는 속성 분할 |
- 테이블을 수직 또는 수평으로 분할하는 것방법 내용
- 중복 테이블 추가
- 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 중복 테이블을 추가하는 경우
- 여러 테이블에서 데이터를 추출해서 사용해야할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 중복 테이블 추가 방법집계 테이블을 추가 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
진행 테이블의 추가 이력 관리 등의 목적으로 추가하는 테이블 특정 부분만을 포함하는 테이블을 추가 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
- 중복 속성 추가
- 조인해서 데이터를 처리할 때 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
- 조인이 자주 발생하는 속성
- 접근 경로가 복잡한 속성
- 액세스의 조건으로 자주 사용되는 속성
- 여러 개의 속성으로 구성된 경우
시스템 카탈로그
- 시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블 임
- 카탈로그들이 생성되면 데이터 사전에 저장 됨
- 메타 데이터
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
- 사용자 정보
- 아이디, 패스워드, 접근 권한
- 무결성 제약 조건 정보
- 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
- 데이터베이스 객체 정보
- 데이터 디렉터리
- 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능
트랜잭션 분석 / CRUD 분석
- 트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
- 트랜잭션의 특성특성 의미
Atomicity(원자성) 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 함 Consistency(일관성) 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스 상태로 변환 Isolation (독립성, 격리성, 순차성) 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음 Durability(영속성, 지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고정나더라도 영구적으로 반영되어야 함 - CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석
- 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용 가능
- CRUD 매트릭스
- 2차원 형태의 표로서, 행에는 프로세스를 열에는 테이블을, 형과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표임
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 ‘C > D > U > R’의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.
- 예) 주문 변경 프로세스를 실행하는 경우 읽은 다음 수정해야 하므로 R, U가 필요하지만 우선순위가 높은 U만 표시함
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 예) 온라인 쇼핑몰의 CRUD 매트릭스 예시
- 트랜잭션 분석
- CRUD 매트릭스를 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인 할 수 있고, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입, 출력 향상을 통한 성능 향상을 가져올 수 있음
인덱스
- 인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조임
- 저장된 물리적 구조에 접근하는 방법을 제공함
- 파일의 레코드에 빠르게 액세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스 개수를 최소로 하는 것이 효율적임
- 인덱스의 종류종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용 함수 기반 인덱스 값 대신 특정 함수나 수식을 적용하여 산출된 값을 사용 비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스 도메인 인덱스 인덱스를 직접 만들어 사용 - 클러스터드/넌클러스터드 인덱스종류 내용
클러스터드 인덱스 - 인덱스 키의 순서에 따라 데이터 정렬되어 저장 - 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 | | 넌클러스터드 인덱스 | - 인덱스 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 |
뷰 / 클러스터
- 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된, 가상 테이블
- 물리적으로 존재하지 않지만, 있는 것 처럼 간주됨
- 뷰를 통해서만 데이터를 접근하게 되면 데이터를 안전하게 보호하는 효율적인 기법으로 사용
- 기본 테이블이나 뷰를 삭제하면 다른 뷰도 자동으로 삭제됨
- 뷰를 정의 할 때는 CREATE문, 제거할 때는 DROP 문을 사용함
- 뷰의 장,단점장점 단점
- 논리적 데이터 독립성을 제공함 - 동시에 여러 사용자의 상이한 응용이나 요구 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 자동 보안이 제공됨 | - 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 삽입, 삭제, 갱신 연산에 제약이 따름 |
- 클러스터
- 데이터 저장 시 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 데이터의 분포도가 넓을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우 다중 테이블 클러스터링을 사용함
파티션
- 파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
- 파티션의 장,단점
- 백업 및 복구를 수행하므로 속도가 빠름
- 데이터 손상 정도를 최소화
- 데이터 가용성이 향상됨
- 입,출력을 분산 | | --- | --- | | 단점 | - 세분화하여 관리하므로 세심한 관리가 요구됨
- 조인에 대한 비용 증가
- 용량이 작은 테이블에 경우 오히려 성능 저하 |
- | 장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상됨
- 파티션의 종류
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는 지 판단할 수 없음
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적임 | | 조합 분할 | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 파티션이 너무 커서 관리가 여러울 때 유용함 |
- | 범위 분할 | 열의 값을 기준으로 분할함 예) 일별, 월별, 분기별 등 | | --- | --- | | 해시 분할 | - 해시 함수를 적용한 결과값에 따라 데이터를 분할함
분산 데이터베이스 설계
- 데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 용량을 설계할 때는 테이블에 저장될 데이터양과 인텍스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야함
- 데이터 용량 설계의 목적
- 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화함
- 분산 데이터베이스 설계
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 해당 지역에서 해결될 수 있도록 함
- 분산 데이터베이스의 목표
- 위치 투명성
- 실제 위치를 알 필요 없이 논리적인 명칭만으로 액세스 됨
- 중복 투명성
- 여러 곳에 중복되어 있더라도 마치 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성
- 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향 받지 않음
- 장애 투명성
- 장애에도 불구하고 트랜잭션을 정확하게 처리함
- 위치 투명성
- 분산 설계 방법방법 설명
테이블 위치 분산 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 분할 데이터를 분할하여 분산시키는 것 - 분할 규칙: 완전성, 재구성, 상호 중첩 배제
- 주요 분할 방법
- 수평분할: 행 단위로 분할
- 수직분할: 데이터 컬럼 단위로 분할 | | 할당 | - 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
데이터베이스 이중화/서버 클러스터링
- 데이터베이스 이중화
- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 문제 발생 시, 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 다른 데이터베이스에도 동일하게 적용됨
- 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
- 데이터베이스 이중화의 분류Eager 기법 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스 이중화 구성 방법
- 구성 방법과 관리가 쉬움 | | --- | --- | | 활동 - 활동방법 | - 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 설정이 복잡함 |
- | 활동 - 대기방법 | - 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행하
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공함
- 클러스터링 종류
- 고가용성 클러스터링
- 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬 처리 클러스터링
- 하나의 작업을 여러 개의 서버에서 분산하여 처리
- 고가용성 클러스터링
- RTO/RPO
- | RTO(Recovery Time Objective, 목표 복구 시간) | 업무 중단 시점으로부터 가동될 때까지의 소요시간 예) 장애 발생 후 6시간 내 복구 가능 | | --- | --- | | RPO(Recovery Point Objective, 목표 복구 시점) | 데이터를 복구할 수 있는 기준점 예) 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
데이터베이스 보안
- 데이터베이스 보안
- 데이터베이스 일부 또는 전체에 대해서 권한이 없는 사용자의 액세스를 금지하기 위한 기술
- 암호화
- 평문을 암호문으로 변환하는 것
- 암호화
- 평문 → 암호문
- 복호화
- 암호문 → 평문
- 암호화 기법
- 개인키 암호 방식
- 공개키 암호 방식
- 접근통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근통제 3요소
- 정책
- 매커니즘
- 보안모델
- 접근통제 기술정책 특징
임의 접근통제(DAC, Discretionary Access Control) - 사용자의 신원에 따라 접근 권한을 부여하는 방식 - 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 생성된 객체에 대한 모든 권한을 부여받고, 다른 사용자에게 허가할 수도 있음 | | 강제 접근통제(MAC, Mandatory Access Control) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음 | | 역할기반 접근통제(RBAC, Role Based Access Control) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완
- 다중 프로그래밍 환경에 최적화 |
- 접근통제 정책
- 어떤 주체가(Who)가 언제(When), 어디서(Where), 어떤 객체(What)에게, 어떤 행위(How)에 대한 허용 여부를 정의
- 접근통제 정책의 종류종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거함 - IBP: 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP: 복수 주체에 하나의 객체 대한 허가를 부여함 | | 규칙 기반 정책 | - 주체가 갖는 권한에 근거
- MLP: 사용자나 객체별로 기밀 분류에 따른 정책
- CBP: 집단별로 지정된 기밀 허가에 따른 정책 | | 역할 기반 정책 | GBP의 변형된 정책으로 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법 |
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있음
- 접근통제 보안 모델종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델 - 기밀성 보장이 최우선
- 군대 시스템 등 특수 환경에서 주로 사용됨 | | 무결성 모델 | 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발 | | 접근통제 모델 | - 접근통제 매커니즘을 보안 모델로 발전시킨 것
- 대표적으로 접근통제 행렬이 있음
- 접근통제 행렬: 행과 열로 주체와 객체의 권한 유형을 나타냄 |
- 접근통제 조건
- 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속통제
- 객체에 저장된 값에 따라 다르게 접근통제를 허용
- 다중 사용자 통제
- 다수의 사용자가 동시에 접근을 요구
- 컨텍스트 기반 통제
- 특정시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어
- 다른 보안 정책과 결합하여 보안시스템의 취약점을 보완할 때 사용
- 감사 추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록
- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악
데이터베이스 보안
- 데이터베이스 백업
- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 정기적으로 백업해야 함
- 로그 파일
- 상태 변화를 시간의 흐름에 따라 모두 기록한 파일임
- 데이터베이스 복구를 위해 사용됨
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있음
- 로그 파일은 트랜잭션 시작 시점, Rollback 시점, 데이터 입력, 수정 삭제 시 점 등에서 기록됨
- 데이터베이스 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 기록이 되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않으므로 트랜잭션 내용을 다시 실행해야 함 | | --- | --- | | UNDO / NO-REDO | -동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 다시 실행할 필요가 없음 |
- | NO-UNDO / REDO | - 비동기적으로 갱신한 경우의 복구 알고리즘
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨
- 물리 백업
- 데이터베이스 파일을 백업하는 방법
- 문제 발생 시 원인 파악 및 문제 해결이 어려움
- 논리 백업
- 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 듦
스토리지
- 스토리지
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS, NAS, SAN
- DAS(Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움
- 초기 구축 비용 및 유지보수 비용이 저렴함
- 다른 서버에 접근할 수 없고 파일을 공유할 수 없음
- 확장성 및 유연성이 떨어짐
- NAS(Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- NAS Storage가 내장된 저장장치를 직접 관리함
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어서 파일 공유가 가능함
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- DAS에 비해 확장성 및 유연성이 우수함
- SAN(Storage Area Network)
- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합함
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용함
- 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 저장장치 및 파일을 공유할 수 있음
논리 데이터 모델의 변환
- 엔티티(Entity)를 테이블로 변환
- 논리 테이블 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것
- 변환 규칙논리적 설계(데이터 모델링) 물리적 설계
엔티티 테이블 속성 컬럼 주 식별자 기본키 외부 식별자 외래키 관계 관계
- 슈퍼타입(상위)/서브타입(하위)을 테이블로 변환
- 논리 데이터 모델에서 이용되는 형태로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 함
- 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블변환 방법들이 있음
- 슈퍼타입 기준 테이블 변환
- 슈퍼타입을 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우
- 하나로 통합된 테이블은 서브타입의 모든 속성이 포함되어야함
- 서브타입 기준 테이블 변환
- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 사용함
- 개별타입 기준 테이블 변환
- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨
- 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환함
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦 Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦 Secondary(Alternate)UID를 유니크기로 변환 Secondary UID 및 Alternate Key는 물리 모델에서 유니크 키로 만듦 - 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환함
'경험' 카테고리의 다른 글
정보처리기사 실기 정리 5 (0) | 2024.10.25 |
---|---|
정보처리기사 실기 정리 4 (3) | 2024.10.25 |
정보처리기사 실기 정리 2 (0) | 2024.10.25 |
정보처리기사 실기 정리 1 (1) | 2024.10.25 |
개발자 컨퍼런스 뉴비의 시선(Feat. DebConf24) (3) | 2024.10.02 |