728x90

SQL 개념

SQL의 개요

- 국제 표준 데이터베이스 언어이며 많은 관계형 데이터베이스(RDB)를 지원하는 언어로 채택

 

SQL의 분류

- DDL(Data Define Language, 데이터 정의어)

    -> 스키마, 도메인, 테이블, 뷰, 인덱스를 정의, 변경, 삭제할 때 사용하는 언어

    -> CREATE : 스키마, 도메인, 테이블, 뷰, 인덱스를 정의

    -> ALTER : 테이블에 대한 정의를 변경

    -> DROP : 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제

- DML(Data Manipulation Language, 데이터 조작어)

    -> 사용자가 저장된 데이터를 실질적으로 처리하는 데 사용

    -> SELECT : 테이블에서 조건에 맞는 튜플 검색

    -> INSERT : 테이블에 새로운 튜플 삽입

    -> DELETE : 테이블에서 조건에 맞는 튜플 삭제

    -> UPDATE : 테이블에서 조건에 맞는 튜플의 내용 변경

- DCL(Data Control Language, 데이터 제어어)

    -> 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용하는 언어

    -> COMMIT : 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료되었음을 알려줌

    -> ROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구

    -> GRANT : 데이터베이스 사용자에게 사용 권한을 부여

 

DDL

DDL의 개념

- DDL(데이터 정의어)는 DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어

- DDL의 종류에는 CREATE, ALTER, DROP이 있음

 

CREATE

- CREATE SCHEM

    -> 스키마(데이터베이스 구조와 제약 조건에 관한 전반적인 명세를 기술한 것)를 정의

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;

     -> 소유권자의 사용자 ID가 '김이박'이고 스키마 '성적'을 정의하는 SQL문

CREATE SCHEMA 성적 AUTHORIZATION 김이박;

- CREATE DOMAIN

     -> 도메인을 정의

     -> 대괄호는 생략 가능하다는 의미

CREATE DOMAIN 도메인명 [AS] 데이터_타입	
	[DEFAULT 기본값]			
	[CONSTRAINT 제약조견명 CHECK (범위값)];			

     -> 성별을 '남' 또는 '여'와 같이 정해진 1개 문자로 표현되는 도메인 GENDER를 정의하는 SQL문

CREATE DOMAIN [AS] CHAR(1)
	DEFAULT '남'
    CONSTRAINT VALID-GENDER CHECK(VALUE IN('남','여');

- CREATE TABLE

     -> 테이블을 정의

CREATE TABLE 테이블명
    (속성명 데이터_타입 [DEFAULT 기본값][NOT NULL], ...
    [, PRIMARAY KEY(기본키_속성명), ...)]
    [, UNIQUE(대체키_속성명), ...)]
    [, FOREIGN KEY(외래키_속성명, ...)]
    	REFERENCES 참조테이블(기본키_속성명, ...)]
        [ON DELETE 옵션]
        [ON UPDATE 옵션]
    [, CONSTRAINT 제약조건명][CHECK (조건식)]);

     -> '이름', '학번', '전공', '성별', '생년월일'로 구성된 학생 테이블을 정의하는 SQL문

     -> 제약조건

         * '이름'은 NULL 일 수 없음

         * '학번'은 기본키

         * '전공'은 학과 테이블의 '학과 코드'를 참조하는 외래키로 사용

         * 학과 테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만듦

         * 학과 테이블에서 '학과 코드'가 변경되면 전공 값도 같은 값으로 변경

         * '생년월일'은 1980-01-01 이후의 데이터

         * 제약 조건의 이름은 '생년월일 제약'

         * 각 속성의 데이터 타입은 적당하게 지정

         * '성별'은 도메인 GENDER 사용

CREATE TABLE 학생
    (이름 VARCHAR(15) NOT NULL,
    학번 CHAR(8)
    전공 CHAR(5)
    성별 GENDER
    생년월일 DATE
    PRIMARY KEY(학번)
    FOREIGN KEY(전공) REFERENCES 학과(학과코드)
    	ON DELETE SET NULL
        ON UPDATE CASCADE
    CONSTRAINT 생년월일제약 CHECK(생년월일>='1980-01-01'));

- CREATE VIEW

     -> 뷰(하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블)를 정의

     -> SELECT문의 결과로써 뷰를 생성

CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;

     -> 고객 테이블에서 '주소'가 '포천시'인 고객들의 '이름'과 '전화번호'를 '포천 고객'이라는 뷰로 정의하는 SQL문

CREATE VIEW 포천고객(이름, 전화번호)
AS SELECT 이름,전화번호
FROM 고객
WHERE 주소 = '포천시';

- CREATE INDEX

     -> 인덱스(검색 시간을 단축시키기 위해 만든 보조적인 데이터 구조)를 정의

     -> ASC : 오름차순 정렬, 생략 시 기본 값 / DESC : 내림차순 정렬

     -> CLUSTER : 사용 시 인덱스를 클러스터드 인덱스로 지정

     -> 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식

CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC|DESC][,속성명 [ASC|DESC]])
[CLUSTER];

     -> 고객 테이블에서 UNIQUE 한 특성을 갖는 '고객번호'속성에 대해 내림차순으로 정렬하여 '고객번호_idx'라는 이름으로 인덱스를 정의하는 SQL문

CREATE UNIQUE INDEX 고객번호_idx
ON 고객(고객번호 DESC);

ALTER

- ALTER TABLE

     -> 테이블에 대한 정의를 변경

ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];

     -> 학생 테이블에 최대 3 문자로 구성되는 '학년' 속성을 추가하는 SQL문

ALTER TABLE 학생 ADD 학년 VARCHAR(3);

     -> 학생 테이블의 학년 필드의 데이터 타입과 크기를 최대 10글자로 하고 NULL값이 입력되지 않게 하는 SQL문

ALTER TABLE 학생 ALTER 학년 VARCHAR(10) NOT NULL;

DROP

- 스키마, 도메인, 기본 테이블, 튜 테이블, 인덱스, 제약 조건 등을 제거하는 명령문

DROP SCHEMA 스키마명 [CASCADE | RESTRICTED];
DROP DOMAIN 도메인명 [CASCADE | RESTRICTED];
DROP TABLE 테이블명 [CASCADE | RESTRICTED];
DROP VIEW 뷰명 [CASCADE | RESTRICTED];
DROP INDEX 인덱스명 [CASCADE | RESTRICTED];
DROP CONSTRAINT 제약조건명

- CASCADE : 제거할 때 참조 관계에 있는 테이블의 데이터도 연쇄 삭제

- RESTRICTED : 제거할 때 참조하고 있는 테이블이 있다면 삭제를 취소 

 

DCL

DCL의 개념

- DCL(데이터 제어어)는 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용하는 언어

 

GRANT

- 데이터베이스 관리자가 사용자에게 권한 부여

 

REVOKE

- 데이터베이스 관리자가 사용자에게 권한 취소

 

COMMIT

- 트랜잭션이 성공적으로 끝난 후 변경된 내용을 데이터베이스에 반영

 

ROLLBACK

- COMMIT 되지 않은 변경된 내용을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령

 

SAVEPOINT

- 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 저장

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 2020년 정보처리기사 필기 정리 글입니다. 계속해서 글을 업데이트할 예정입니다. 작성이 안된 과목은 검..

1d1cblog.tistory.com

 

728x90
728x90

데이터베이스 보안 - 접근통제

접근통제

- 데이터가 저장된 객체와 사용하려는 주체 사이의 정보 흐름을 제한

- 데이터에 대해 통제를 함으로써 자원의 불법적인 접근 및 파괴를 예방

- 임의 접근통제(Discretionary Access Control)

    -> 데이터에 접근하는 사용자의 신원에 따라 접근 권한 부여

    -> 통제 권한이 주체에 있어 접근통제 권한을 주체가 지정하고 제어

    -> 객체를 생성한 사용자가 객체에 대한 모든 권한을 부여받고 다른 사용자에게 허가 가능

    -> SQL 명령어로는 GRANT, REVOKE가 있음

- 강제 접근통제(Mandatory Access Control)

    -> 주체와 객체의 등급을 비교하여 접근 권한을 부여

    -> 제 3자가 접근통제 권한 지정

    -> 객체별로 보안 등급을 부여할 수 있으며 사용자별로 인가 등급을 부여할 수 있음

    -> 주체의 보안 등급이 자신의 보안등급보다 높으면 읽기, 수정, 등록이 모두 불가하고 동등하면 읽기, 수정, 등록이 모두 가능하며 낮으면 읽기만 가능

 

접근통제 정책

- 어떤 주체(Who)가 언제(When) 어디서(Where) 어떤 객체(What)에게 어떤 행위(How)에 대한 허용 여부를 정의하는 것

- 신분 기반 정책

    -> 주체나 그룹의 신분에 근거하여 객체의 접근을 제한

    -> IBP(Individual-Based Policy) : 최소 권한 정책, 단일 주체에게 하나의 객체에 대한 허가를 부여

    -> GBP(Group-Based Policy) : 복수 주체에 대한 허가를 부여

- 규칙 기반 정책

    -> 주체가 갖는 권한에 근거하여 객체의 접근을 제한

    -> MLP(Multi-Level Policy) : 사용자 및 객체별로 지정된 기밀 분류에 따른 정책

    -> CBP(Compartment-Based Policy) : 집단별로 지정된 기밀 허가에 따른 정책

- 역할 기반 정책

    -> 주체의 신분이 아니라 주체가 맡은 역할에 근거하여 객체의 접근을 제한

 

접근통제 매커니즘

- 정의된 접근통제 정책을 구현하는 기술적인 방법

- 접근통제 목록 : 객체를 기준으로 특정 객체에 대해 어떤 주체가 어떤 행위를 할 수 있는지 기록한 목록

- 능력 리스트 : 주체를 기준으로 주체에게 허가된 자원 및 권한을 기록한 목록

- 보안 등급 : 주체나 객체에 부여된 보안 속성의 집합

- 패스워드 : 주체가 자신임을 증명할 때 사용하는 인증 방법

- 암호화

암호화 / 복호화
- 암호화는 데이터를 보낼 때 송신자가 지정한 수신자 외는 그 내용을 알 수 없도록 평문을 암호문으로 변환
- 암호화 과정 : 암호화되지 않은 평문을 정보 보호를 위해 암호문으로 바꿈
- 복호화 과정 : 암호문을 원래의 평문으로 바꿈

 

접근통제 보안 모델

- 보안 정책을 구현하기 위한 정형화된 모델

- 기밀성 모델

    -> 군사적인 목적으로 개발된 최초의 수학적 모델로 기밀성 보장이 최우선

- 무결성 모델

    -> 기밀성 모델에서 발생하는 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발된 모델

    -> 데이터 일관성 유지에 중점을 두어 개발

- 접근통제 모델

    -> 접근통제 매커니즘을 보안 모델로 발전시킨 것

    -> 접근통제 모델 : 임의적인 접근 통제를 관리하기 위한 모델로 행은 주체 열은 객체를 의미

    -> R : 읽기 권한

    -> W : 쓰기 권한

    -> ALL : 모든 권한

 

접근통제 행렬

 

 

접근통제 조건

- 접근통제 매커니즘의 취약점을 보안하기 위해 접근 통제 정책에 부가하여 적용할 수 있는 조건

- 값 종속 통제 : 객체에 저장된 값에 따라 다르게 접근통제를 허용해야 하는 경우

- 다중 사용자 통제 : 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우

- 콘텍스트 기반 통제 : 특정 시간, 네트워크 주소, 접근 경로, 인증 경로 등에 근거하여 접근을 제어하는 방식

 

감사 추적

- 사용자나 애플리케이션의 데이터베이스에 접근하여 수행한 모든 활동을 기록하는 기능

- 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악하기 위해 사용

 

데이터베이스 백업

데이터베이스 백업

- 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업

 

데이터베이스 장애 유형

- 사용자 실수 : 사용자의 실수로 인한 오류

- 미디어 장애 : 하드웨어 장애나 데이터가 파손된 경우

- 구문 장애 : 프로그램 오류나 사용 공간의 부족으로 발생하는 장애

- 사용자 프로세스 장애 : 프로그램이 비정상적으로 종료되거나 네트워크 이상으로 세션이 종료되어 발생하는 장애

- 인스턴스 장애 : 하드웨어 장애, 정전, 시스템 파일 파손 등 비정상적 요인으로 메모리나 데이터베이스 서버의 프로세스가 중단된 경우

 

로그 파일

- 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 기록한 파일

- 로그 파일을 기반으로 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 데이터베이스 상태를 일관성 있게 유지

 

데이터베이스 복구 알고리즘

- 동기적/비동기적 갱신에 따라 분류

- NO-UNDO/REDO : 비동기적으로 갱신한 경우

- UNDO/NO-REDO : 동기적으로 갱신한 경우

- UNDO/REDO : 동기/비동기적으로 갱신한 경우

- NO-UNDO/NO-REDO : 동기적으로 저장 매체에 기록하지만 데이터베이스와는 다른 영역에 기록한 경우

 

백업 종류

- 물리 백업 : 데이터베이스 파일을 백업하는 방법

- 논리 백업 : 데이터베이스 내의 논리적 객체들을 백업하는 방법

 

스토리지

스토리지의 개요

- 단일 디스크로 처리할 수 없는 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술

 

DAS(Direct Attached Storage)

- 서버와 저장장치를 전용 케이블로 직접 연결하는 방식

- 서버에서 저장장치를 관리

- 저장장치를 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움

- 다른 서버에서 스토리지에 접근하여 사용 불가

 

NAS(Network Attached Storage)

- 서버와 저장장치를 네트워크를 통해 연결하는 방식

- 별도의 파일 관리 기능이 있는 NAS Storage가 내장된 저장장치를 직접 관리

- DAS에 비해 확장성 및 유연성이 좋음

- 서버들이 자유롭게 스토리지에 접근하여 파일 공유

 

SAN(Storage Area Network)

- DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식

- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성

- 파이버 채널(FC) 스위치를 이용하여 네트워크를 구성

    -> 파이버 채널 : 장치 간 데이터 전송 속도를 기가바이트로 높이기 위한 네트워크 기술

- 서버나 저장장치를 광케이블로 연결하므로 처리 속도가 빠름

- 서버들이 저장장치 및 파일을 자유롭게 공유

 

DAS, NAS, SAN 비교

 

 

 

논리 데이터 모델의 물리 데이터 모델 변환

테이블 

- 데이터를 저장하는 데이터베이스의 가장 기본적인 오브젝트

 

엔티티를 테이블로 변환

- 논리 데이터 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환

 

 

- 테이블과 엔티티 명칭은 동일하게 하는 것을 권고

- 테이블은 소스코드 가독성을 위해 영문명을 사용

- 표준화된 용어 사용 지향

- 변환 규칙

 

 

슈퍼타입/서브타입을 테이블로 변환

- 슈퍼타입과 서브타입은 논리 데이터 모델에서 이용되는 형태이므로 물리 데이터 모델을 설계할 때는 테이블로 변환

- 슈퍼타입 기준 테이블 변환

    -> 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 만듦

    -> 데이터의 액세스가 상대적 용이

    -> 뷰를 이용하여 각각의 서브타입만을 액세스 하거나 수정할 수 있음

    -> SQL 문장 구성이 단순

    -> 디스크 저장 공간이 증가

    -> 인덱스의 효율이 떨어짐

 

 

- 서브타입 기준 테이블 변환

    -> 슈퍼타입의 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만듦

    -> 각 서브타입 속성들의 선택 사양이 명확한 경우 유리

    -> 여러 개의 테이블로 통합하므로 테이블당 크기가 감소하여 전체 테이블 스캔 시 유리

    -> 수행 속도 감사

    -> 복잡한 처리를 하는 SQL의 통합이 어려움

 

 

- 개별타입 기준 테이블 변환

    -> 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환

    -> 슈퍼타입과 서브타입 테이블 사이에는 각각 1:1 관계가 형성

    -> 저장공간이 상대적으로 작음

 

 

속성을 칼럼으로 변환

- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환

- 일반 속성 변환

     -> 엔티티의 속성을 테이블의 각각의 컬럼으로 변환

     -> 칼럼명은 SQL 예약어 사용을 피하고 가능한 한 짧게 지정

 

 

관계를 외래키로 변환

- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 기본키로 변환

 

 

관리 목적의 테이블/칼럼 추가

- 논리 데이터 모델에는 존재하지 않는 테이블이나 칼럼을 데이터베이스 관리 혹은 이용하는 프로그래밍의 수행 속도를 향상시키기 위해 물리 데이터 모델에 추가할 수 있음

 

데이터 타입 선택

- 정의된 논리적인 데이터 타입을 물리적인 DBMS의 물리적 특성과 성능을 고려하여 최적의 데이터 타입과 데이터의 최대 길이를 선택

- Oracle에서 자주 사용되는 데이터 유형

    -> CHAR : 고정길이 문자열

    -> VARCHAR : 가변 길이 문자열

    -> NUMBER : 38 자릿수의 숫자 저장 가능

    -> DATE : 날짜 저장

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은

1d1cblog.tistory.com

 

728x90
728x90

코딩 테스트 문제나 과제를 하다보면 소수점을 몇자리까지 출력해야 하는 경우가 있습니다.

 

printf를 사용하면 출력타입을 이용해 간단하게 자리수를 지정할 수 있지만 cout은 출력 타입이 없어 사용하기 어렵습니다.

 

cout 으로 자리수를 지정하고 싶을때 사용하는 방법은 아래와 같습니다.

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
  double a = 1.2345;
  double b = 98.76543;

  printf("%.4lf\n",a);  // 소수점 4자리까지 출력
  cout.precision(4);    // 4자리 출력
  cout << a << endl;

  printf("%4.1lf\n",b); // 실수 4자리, 소수점 1자리까지 출력
  cout.precision(6);    // 6자리 출력
  cout << b << endl;
}
/*
실행결과
1.2345
1.234
98.7
98.7654
*/

printf와 cout의 다른점은 printf는 실수와 소수자리수를 각각 지정할 수 있고 cout은 실수와 소수를 포함한 자리수를 지정하는 것입니다.

728x90

'Programming > C++' 카테고리의 다른 글

C++ 추상 팩토리 패턴  (0) 2021.05.02
C++ 상속(Inheritance)  (0) 2020.05.08
C++ 큰따옴표(") 출력하기  (0) 2020.02.27
C++ 역슬래쉬(\) 출력하기  (0) 2020.02.27
C++ 오버로딩과 오버라이딩  (0) 2020.02.06
728x90

cout 출력문의 " "안에 다시 큰따옴표(")를 출력하고 싶을 때는 간단하게 " 앞에 역슬래쉬(\)를 붙여주면 됩니다.

#include <iostream>

int main() 
{
  std::cout << "그는 \"재미있어\" 라고 말했습니다";
}

/*
실행결과
그는 "재미있어" 라고 말했습니다
*/
728x90

'Programming > C++' 카테고리의 다른 글

C++ 상속(Inheritance)  (0) 2020.05.08
C++ cout 자리수 지정하기  (0) 2020.02.28
C++ 역슬래쉬(\) 출력하기  (0) 2020.02.27
C++ 오버로딩과 오버라이딩  (0) 2020.02.06
C++ 디폴트 매개변수  (0) 2020.02.06
728x90

역슬래쉬를 " " 안에서 사용하는 방법입니다.

 

역슬래쉬를 바로 출력하려고하면 아래와 같은 에러가 발생합니다.

#include <iostream>

int main() 
{
  std::cout << "역슬래쉬 출력하기 ! \ ";
  return 0;
}

/*
main.cpp:5:45: warning: unknown escape sequence '\ ' [-Wunknown-escape-sequence]
  std::cout << "역슬래쉬 출력하기 ! \ ";
                                    ^~
*/                                    

이럴 땐 간단하게 역슬래쉬를 한번 더 넣어주면 제대로 출력이 됩니다.

#include <iostream>

int main() 
{
  std::cout << "역슬래쉬 출력하기 ! \\ ";
  return 0;
}

/*
실행결과
역슬래쉬 출력하기 ! \
*/

 

728x90

'Programming > C++' 카테고리의 다른 글

C++ cout 자리수 지정하기  (0) 2020.02.28
C++ 큰따옴표(") 출력하기  (0) 2020.02.27
C++ 오버로딩과 오버라이딩  (0) 2020.02.06
C++ 디폴트 매개변수  (0) 2020.02.06
C++ reference value(참조형 변수)  (0) 2020.02.04
728x90

데이터베이스 용량 설계

데이터베이스 용량 설계

- 데이터가 테이블에 저장될 공간을 정의

- 테이블에 저장할 데이터양, 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영

 

데이터베이스 용량 설계의 목적

- 디스크의 저장공간을 효과적으로 사용하고 확장성 및 가용성을 높임

- 디스크의 입출력 부하를 분산시키고 채널의 병목현상 최소화

- 디스크에 대한 입출력 경합이 최소화되도록 설계함으로써 데이터 접근성이 향상

- 데이터베이스에 생성되는 오브젝트의 익스텐트 발생을 최소화하여 성능을 향상

- 테이블과 인덱스에 적합한 저장 옵션을 지정

- 데이터 접근성을 향상시키는 설계 방법

    -> 테이블의 테이블스페이스와 인덱스의 테이블스페이스를 분리하여 구성

    -> 테이블스페이스와 임시 테이블스페이스를 분리하여 구성

    -> 테이블을 마스터 테이블과 트랜잭션 테이블로 분류

 

데이터베이스 용량 분석 절차

- 데이터 예상 건수, 로우 길이, 보존 기간, 증가율 등 기초 자료를 수집하여 용량 분석

- 분석된 자료를 바탕으로 DBMS에 이용될 테이블, 인덱스 등 오브젝트별 용량을 산정

- 테이블과 인덱스의 테이블스페이스 용량을 산정

- 데이터베이스에 저장될 모든 데이터 용량과 데이터베이스 설치 및 관리를 위한 시스템 용량을 합해 디스크 용량 산정

 

분산 데이터베이스 설계

분산 데이터베이스 정의

- 논리적인 하나의 시스템이지만 물리적으로는 네트워크로 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스

- 데이터베이스를 네트워크를 이용해 나눠놓음

 

분산 데이터베이스의 구성 요소

- 분산 처리기 : 지리적으로 분산되어 있는 컴퓨터 시스템

- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터베이스

- 통신 네트워크 : 분산 처리기들을 네트워크로 연결하여 하나의 시스템처럼 동작할 수 있도록 하는 통신 네트워크

 

분산 데이터베이스 설계 시 고려사항

- 작업 부하의 노드별 분산 정책

- 지역의 자치성 보장 정책

- 데이터의 일관성 정책

- 사이트나 회선의 고장으로부터의 회복 기능

- 통신 네트워크를 통한 원격 접속 기능

 

분산 데이터베이스의 목표

- 위치 투명성 : 접근하려는 데이터베이스의 실제 위치를 알 필요 없이 논리적인 명칭만으로 접근 가능

- 중복 투명성 : 동일 데이터가 여러 곳에 중복되어 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용 가능

- 병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음

- 장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 등 장애에도 트랜잭션을 정확하게 처리

- 투명성 : 사실 존재 여부를 염두에 두지 않아도 되는 성질

 

분산 데이터베이스의 장점

- 장점

    -> 지역 자치성이 높음

    -> 자료의 공유성 향상

    -> 분산 제어 가능

    -> 시스템 성능 향상

    -> 중앙 컴퓨터의 장애가 전체 시스템에 영향을 끼치지 않음

    -> 효용성과 융통성이 높음

    -> 신뢰성 및 가용성이 좋음

    -> 점진적 시스템 용량 확장 용이

- 단점

    -> DBMS가 수행할 기능이 복잡

    -> DB 설계가 어려움

    -> 소프트웨어 개발 비용 증가

    -> 처리 비용 증가

    -> 잠재적 오류 증가

 

분산 데이터베이스 설계

- 애플리케이션이나 사용자가 분산되어 저장된 데이터에 접근하는 것이 목적

- 전역 관계망을 논리적 측면에서 소규모 단위로 분할, 분할된 결과를 복수의 노드에 할당

- 분산 설계 방법에는 테이블 위치 분산, 분할, 할당이 있음

 

테이블 위치 분산

- 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치

- 테이블의 구조를 변경시키지 않고 다른 데이터베이스의 테이블과 중복되지 않게 배치

 

분할

- 테이블의 데이터를 분할하여 분산

- 분할 규칙

    -> 완전성 : 전체 데이터를 대상으로 분할해야 함

    -> 재구성 : 분할된 데이터는 관계 연산을 활용하여 본래의 데이터로 재구성이 가능해야 함

    -> 상호 중첩 배제 : 분할된 데이터는 서로 다른 분할의 항목에 속하지 않아야 함

- 분할 방법

    -> 수평 분할 : 행 단위로 분할

    -> 수직 분할 : 속성 단위로 분할

할당

- 동일한 분할을 여러 개의 서버에 생성하는 분산 방법

- 비중복 할당 방식

    -> 최적의 노드를 선택해서 분산 데이터베이스의 단일 노드에서만 분할이 존재

- 중복 할당 방식

    -> 동일한 테이블을 다른 서버에 복제하는 방식

 

데이터베이스 이중화 / 서버 클러스터링

데이터베이스 이중화

- 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것

- 하나 이상의 데이터베이스가 항상 같은 상태를 유지

- 데이터베이스가 문제가 생기면 즉시 해결 가능

- 사용자가 작업을 수행하면 이중화 시스템에 연결된 다른 데이터베이스도 동일하게 적용

- 애플리케이션을 여러 개의 데이터베이스로 분산시켜 처리해 데이터베이스의 부하를 감소

 

데이터베이스 이중화의 분류

- 내용 전달 방식에 따른 분류

- Eager 기법 : 트랜잭션 수행 중 데이터 변경 발생 시 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용

- Lazy 기법 : 트랜잭션 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달하여 데이터베이스마다 새로운 트랜잭션이 수행되는 것으로 간주

 

데이터베이스 이중화 구성 방법

- 활동-대기 방법

    -> 한 DB가 서비스 시 다른 DB는 대기

    -> 활성 DB에 장애 발생 시 대기 중이었던 DB가 모든 서비스를 대신 수행

    -> 구성 방법 및 관리가 쉬워 많은 기업에서 사용

- 활동-활동 방법

    -> 두 개의 DB가 서로 다른 서비스를 제공

    -> 한쪽 DB에 장애 발생 시 다른 DB가 서비스를 제공

    -> 두 DB가 모두 처리를 해 처리율이 높지만 구성 방법 및 설정이 복잡

 

클러스터링

- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술

- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공

    -> 고가용성 : 시스템을 오랜 시간 동안 계속해서 정상적으로 운영이 가능한 성질

- 병렬 처리 클러스터링 : 처리율을 높이기 위해 하나의 작업을 여러 개의 서버에서 분산하여 처리

- 고가용성 클러스터링 : 하나의 서버에 장애가 발생 시 다른 서버가 받아서 처리하여 서비스 중단을 방지하는 방식

 

데이터베이스 보안 / 암호화

데이터베이스 보안의 개요

- 데이터베이스의 일부분 또는 전체에 권한이 없는 사용자가 액세스 하는 것을 금지하기 위해 사용되는 기술

 

암호화 / 복호화

- 암호화는 데이터를 보낼 때 송신자가 지정한 수신자 외는 그 내용을 알 수 없도록 평문을 암호문으로 변환

- 암호화 과정 : 암호화되지 않은 평문을 정보 보호를 위해 암호문으로 바꿈

- 복호화 과정 : 암호문을 원래의 평문으로 바꿈

 

개인키 / 공개키 암호 방식

- 암호화 방식의 키와 복호화 방식의 키가 같을 때

    -> 개인키 / 비밀키 / 대칭키 암호 방식

    -> 종류 : 전위 기법, 대수 기법, 합성 기법(DES)

- 암호화 방식의 키와 복호화 방식의 키가 다를 때

    -> 공개키 / 비대칭키

    -> RSA 기법

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중..

1d1cblog.tistory.com

 

728x90
728x90

인덱스 설계

인덱스의 개념

- 데이터 레코드를 빠르게 접근하기 위해 키값, 포인터 쌍으로 구성되는 데이터 구조

- 책의 목차와 유사

- 데이터가 저장된 물리적 구조와 밀접한 관계가 있음

- 파일의 레코드에 대한 액세스를 빠르게 수행할 수 있음

- 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN이 발생

    -> TABLE SCAN : 데이터가 나올 때까지 모든 레코드를 순차적으로 읽는 것

- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적

- 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식

- 넌클러스터드 인덱스 : 인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식

트리 기반 인덱스

- 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로 상용 DBMS에서는 트리 구조 기반의 B+ 트리 인덱스를 주로 활용

- B 트리 인덱스

    -> 일반적으로 사용하는 인덱스 방식

    -> 루트 노드에서 하위 노드로 키값의 크기를 비교하면서 데이터를 검색

    -> 모든 리프 노드의 레벨은 같음

- B+ 트리 인덱스

    -> 단말 노드가 아닌 노드로 구성된 인덱스 세트와 단말 노드로만 구성된 순차 세트로 구분

    -> 인덱스 세트에 있는 노드들은 단말 노드에 있는 키 값을 찾아갈 수 있는 경로로만 제공

    -> 순차 세트에 있는 단말 노드가 해당 데이터 레코드의 주소를 가리킴

    -> 인덱스 세트에 있는 모든 키 값이 단말 노드에 다시 나타나므로 단말 노드 만을 이용한 순차 처리 가능

 

비트맵 인덱스

- 인덱스 칼럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법

- 키 값을 포함하는 로우(Row)의 주소를 제공

- 데이터가 Bit로 구성되어 있어 효율적인 논리 연산이 가능하고 저장공간이 작음

 

함수 기반 인덱스

- 칼럼의 값 대신 칼럼의 특정 함수나 수식을 적용하여 산출된 값을 사용

- B+ 트리 인덱스 또는 비트맵 인덱스를 생성하여 사용

- 데이터를 입력하거나 수정할 때 함수를 적용하기 때문에 부하가 발생할 수 있음

- 사용자 정의 함수를 사용했을 경우 시스템 함수보다 부하가 더 크다

- 대소문자, 띄어쓰기 등에 상관없이 조회할 때 유용하게 사용

 

비트맵 조인 인덱스

- 다수의 조인된 객체로 구성된 인덱스

 

도메인 인덱스

- 개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로 확장형 인덱스라고도 함

 

인덱스 설계 순서

- 인덱스의 대상 테이블이나 칼럼 등을 선정 → 인덱스의 효율성을 검토하여 인덱스 최적화 수행   인덱스 정의서 작성

 

인덱스 테이블 선정 기준

- MULTI BLOCK READ 수에 따라 판단

    -> MULTI BLOCK READ : 테이블 액세스 시 메모리에 한 번에 읽어 들일 수 있는 블록의 수

- 랜덤 액세스가 빈번한 테이블

- 특정 범위나 특정 순서로 데이터 조회가 필요한 테이블

- 다른 테이블과 순차적 조인이 발생되는 테이블

 

인덱스 서계 시 고려사항

- 새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있음

- 인덱스를 지나치게 만들면 오버헤드 발생

- 넓은 범위를 인덱스로 처리하면 많은 오버헤드 발생

- 인덱스를 만들면 추가적인 저장공간 필요

- 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계

 

뷰 설계

뷰의 개요

- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블

- 물리적으로 존재하지는 않지만 사용자에게는 있는 것처럼 간주됨

- 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용

- 조인문의 최소화로 사용자 편의성을 최대화함

뷰의 특징

- 기본 테이블과 같은 형태의 구조를 사용하고 조작도 기본 테이블과 거의 같음

- 가상테이블이기 때문에 물리적으로 구현되어 있지 않음

- 데이터의 논리적 독립성을 제공할 수 있음

- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해짐

- 뷰를 통해서만 데이터에 접근하게 되면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있음

- 뷰가 정의된 기본 테이블이나 뷰를 삭제 시 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제

 

뷰의 장단점

- 장점

    -> 논리적 데이터 독립성 제공

    -> 동일 데이터에 대해 동시에 여러 사용자의 상이한 요구를 지원

    -> 사용자의 데이터 관리가 용이

    -> 접근 제어를 통한 자동 보안 제공

- 단점

    -> 독립적인 인덱스를 가질 수 없음

    -> 뷰의 정의 변경 불가

    -> 뷰로 구성된 내용에 대해 INSERT, DELETE, UPDATE 연산에 제약이 따름

 

뷰 설계 순서

- 대상 테이블 선정  대상 칼럼 선정 → 정의서 작성

 

뷰 설계 시 고려사항

- 테이블 구조가 단순화될 수 있도록 반복적으로 조인을 설정하여 사용하거나 동일한 조건절을 사용하는 테이블을 뷰로 생성

- 동일한 테이블이라도 업무에 따라 테이블을 이용하는 부분이 달라질 수 있으므로 사용할 데이터를 다양한 관점에서 제시

- 데이터의 보안을 유지하며 설계

 

클러스터 설계

클러스터의 개요

- 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 데이터 블록에 저장하는 물리적 저장 방법

- 클러스터링키로 지정된 칼럼 값의 순서대로 저장되고 여러 개의 테이블이 하나의 클러스터에 저장

 

클러스터의 특징

- 데이터 조회 속도는 향상시키지만 데이터 입력 수정 삭제에 대한 성능은 저하시킴

- 데이터의 분포도가 넓을수록 유리

- 대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 지양

- 파티셔닝 된 테이블에는 적용할 수 없음

 

클러스터 대상 테이블

- 분포도가 넓은 테이블

- 대량의 범위를 자주 조회하는 테이블

- 입력, 수정, 삭제가 자주 발생하지 않는 테이블

- 자주 조인되어 사용되는 테이블

- ORDER BY, GROUP BY, UNION이 빈번한 테이블

DML - SELECT
ORDER BY : 특정 속성을 기준으로 정렬하여 검색
GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 그룹 함수와 같이 사용
UNION : 두 SELECT 문의 결과를 통합하고 중복된 행은 한 번만 출력

 

파티션 설계

파티션의 개요

- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것

- 대용량 DB의 경우 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지하고 데이터 관리가 용이함

- 데이터 처리는 테이블 단위, 데이터 저장은 파티션 별로 수행

 

파티션의 장단점

- 장점

    -> 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상

    -> 데이터가 분산되어 저장되므로 디스크 성능 향상

    -> 파티션별로 백업 및 복구를 수행하므로 속도 향상

    -> 시스템 장애 시 데이터 손상 정도 최소화

    -> 데이터 가용성 향상

    -> 파티션 단위로 입출력 분산

- 단점

    -> 하나의 테이블을 세분화하여 관리하기 때문에 세심한 관리가 요구됨

    -> 테이블 간 조인에 대한 비용이 증가

    -> 용량이 작은 테이블에 파티셔닝을 수행하면 성능이 저하됨

 

파티션의 종류

- 범위 분할 : 지정한 열의 값을 기준으로 분할

- 해시 분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할

- 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할

 

파티션 키 선정 시 고려사항

- 파티션 키는 테이블 접근 유형에 따라 파티셔닝이 이루어지도록 선정

- 데이터 관리의 용이성을 위해 이력성 데이터는 파티션 생성 주기와 소멸 주기를 일치시켜야 함

- 매일 생성되는 날짜 칼럼, 백업의 기준이 되는 날짜 칼럼, 파티션 간 이동이 없는 칼럼, I/O 병목을 줄일 수 있는 데이터 분포가 양호한 칼럼 등을 파티션 키로 선정

 

인덱스 파티션

- 파티션 된 테이블의 데이터를 관리하기 위해 인덱스를 나눈 것

- 파티션된 테이블의 종속 여부에 따른 구분

    -> Local Partitioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응되도록 파티셔닝 함

    -> Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성되도록 파티셔닝 함

    -> Local Partitioned Index가 Global 보다 관리하기 용이함

- 인덱스 파티션 키 칼럼의 위치에 따른 구분

    -> Prefixed Partitioned Index : 인덱스 파티션 키와 인덱스 첫 번째 칼럼이 같음

    -> Non-Prefixed Partitioned Index : 인덱스 파티션키와 인덱스 첫 번째 칼럼이 다름

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중..

1d1cblog.tistory.com

 

728x90
728x90

사전 조사 분석

물리 데이터베이스 설계

- 논리적 구조로 표현된 논리적 데이터베이스를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변화하는 과정

데이터베이스 설계 순서
- 요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

- 물리적 설계 단계에서 수행해야 할 것

    -> 저장 레코드의 양식 설계

    -> 레코드 집중의 분석 및 설계

    -> 접근 경로 설계

- 물리적 데이터베이스 구조는 여러 가지 타입의 저장 레코드 집합이라는 면에서 단순한 파일과 다름

- 물리적 설계 옵션

    -> 반응시간 : 트랜잭션 수행을 요구한 시점부터 처리 결과를 얻을 때까지의 경과 시간

    -> 공간 활용도 : 데이터베이스 파일과 액세스 경로 구조에 의해 사용되는 저장공간의 양

    -> 트랜잭션 처리량 : 단위시간 동안 데이터베이스 시스템에 의해 처리될 수 있는 트랜잭션의 평균 개수

 

데이터 명명 규칙 파악

- 물리 데이터 모델에 적용해야하는 규칙

- 데이터 표준화 및 논리 데이터베이스 설계의 결과물들을 통해 파악

- 물리-논리 데이터베이스 설계 적용되는 명명규칙은 일관성 유지

- 명명 규칙을 파악하기 위해선 도메인과 데이터 사전에 대한 지식 필요

 

시스템 자원 파악

- 데이터베이스 설치에 영향을 미칠 수 있는 물리적인 요소

- 하드웨어 자원, 운영체제 및 DBMS의 버전, DMBS 파라미터 정보 등으로 구분

 

데이터베이스 관리 요소 파악

- 데이터베이스 운영과 관련된 관리요소

- 데이터베이스 관리 요소를 파악한 후 이를 기반으로 시스템 조사 분석서를 작성

- 시스템 조사 분석서를 기반으로 다음과 같은 요소들을 파악

    -> 데이터베이스 구조 : 데이터베이스 구조에 따라 문제 발생 시 대응 방법이 다름

    -> 이중화 구성 : 문제 발생에 대비하여 동일한 데이터베이스를 복제하여 관리

    -> 분산 데이터베이스 : 물리적인 피해에 데이터 유실을 최소화할 수 있고 장애로 인한 데이터 유실 복구에 효과적

    -> 접근 제어 / 통제 : 접근 가능한 사용자의 권한 남용으로 인한 정보 유출 및 변조가 빈번하게 발생

    -> DB암호화 : 데이터 암호화, 암호 키에 대한 인증 등을 통해 데이터 유출 시 데이터의 복호화를 어렵게 함

 

데이터베이스 저장 공간 설계

테이블

- 데이터베이스의 가장 기본적인 객체로써 행(Row)과 열(Column)으로 구성됨

- 논리 설계 단계의 개체(Entity)에 대응하는 객체

- 종류에는 일반 테이블, 클러스터 인덱스 테이블, 파티셔닝 테이블, 외부 테이블, 임시 테이블 등이 있음

 

일반 테이블

- 현재 사용되는 대부분의 DBMS(DataBase Management System)에서 표준 테이블로 사용되는 테이블

클러스터드 인덱스 테이블

- 기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블

- 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로가 단축

기본키인 학번을 기준으로 정렬

파티셔닝 테이블

- 대용량의 테이블을 작은 논리적인 단위인 파티션으로 나눈 테이블

- 대용량의 데이터를 효과적으로 관리할 수 있지만 파티션 키를 잘못 구성하면 성능 저하 등 역효과를 초래할 수 있음

- 방식에 따라 범위 분할, 해시 분할, 조합 분할 등으로 나뉨

    -> 범위 분할 : 지정한 열의 값을 기준으로 분할

    -> 해시 분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할

    -> 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할

외부 테이블

- 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일로 데이터베이스 내에 객체로 존재

- 데이터 쉐어하우스, ETL(Extraction Transformation Loading, 추출 변환 적재) 등의 작업에 사용

 

임시 테이블

- 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블

- 절차적인 처리를 위해 임시로 사용

- 저장된 데이터는 트랜잭션이 종료되면 삭제

 

칼럼

- 테이블의 열을 구성하는 요소로 데이터 타입과 길이 등으로 정의

- 데이터 타입은 데이터의 일관성 유지를 위해 사용되는 가장 기본적인 것

- 도메인을 정의한 경우 도메인에 따라 데이터의 타입과 길이가 정의

- 두 칼럼을 비교하는 연산에서 두 칼럼의 데이터 타입이나 길이가 다르면 DBMS 내부적으로 데이터 타입 변화 후 비교 연산 수행

- 참조 관계인 칼럼들은 데이터 타입과 길이가 일치해야 함

 

테이블스페이스

- 테이블이 저장되는 논리적인 영역으로 하나의 테이블스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있음

- 테이블을 저장하면 논리적으론 테이블스페이스에 물리적으론 연관된 데이터 파일에 저장됨

- 테이블스페이스를 테이블, 테이블스페이스, 데이터 파일로 나눠 관리하면 논리적 구성이 물리적 구성에 종속되지 않아 투명성이 보장됨

    -> 투명성 : 사실의 존재 여부를 염두에 두지 않아도 되는 성질

- 데이터베이스에 저장되는 내용에 따라 테이블, 인덱스, 임시 등의 용도로 구분하여 설계

 

트랜잭션 및 CRUD 분석

트랜잭션의 정의

- 데이터베이스의 상태를 변환시키는 하나의 논리적인 기능을 수행하기 위한 작업 단위 또는 한꺼번에 수행되어야 할 일련의 연산들을 의미

- 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적인 단위

- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위

 

트랜잭션의 특성

- 원자성(Atomicity)

    -> all or nothing

    -> 데이터베이스에 반영되도록 완전히 완료 아니면 전혀 반영되지 않도록 복구되어야 함

    -> 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함

- 일관성(Consistency)

    -> 문법을 일괄적으로 맞춰야 함

    -> 트랜잭션을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환

    -> 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 후가 상태가 같아야 함

- 독립성(Isolation)

    -> 하나의 트랜잭션 연산 중에는 다른 트랜잭션이 관여하면 안 됨

    ->수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음

- 지속성(Durability)

    -> 성공적으로 완료된 트랜잭션의 결과는 영구적으로 유지, 반영되어야 함

 

CRUD 분석

- 데이터베이스의 테이블에 변화를 주는 트랜잭션 연산 중 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)의 연산에 대해 CRUD 매트릭스를 작성하여 분석하는 것

- 테이블에 발생되는 트랜잭션의 주기별 발생 횟수를 파악하고 연관된 테이블들을 분석하면 테이블에 저장되는 데이터의 양을 유추할 수 있음

 

CRUD 매트릭스

- 2차원 표로 행에는 프로세스 열에는 테이블을 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하는 업무 프로세스와 데이터 간 상관 분석표

- CRUD 매트릭스를 통해 프로세스의 트랜잭션이 테이블에 수행하는 작업을 검증

- CRUD 매트릭스의 각 셀에는 C, R, U, D가 들어가고 복수의 작업 시에는 우선순위는 C > D > U > R를 적용

- CRUD 매트릭스가 완성되면 C, R, U, D 중 어느 것도 적히지 않는 행이나 열, C나 R이 없는 행을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾음

온라인 쇼핑몰 CRUD 매트릭스

트랜잭션 분석

- CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하고 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB용량을 산정, DB 구조를 최적화하는 것

 

트랜잭션 분석서

- 단위 프로세스와 CRUD 매트릭스를 이용하여 작성

- 구성 요소에는 단위 프로세스, CRUD 연산, 테이블 명, 칼럼명, 테이블 참조 횟수, 트랜잭션 수, 발생 주기 등

주문요청 프로세스에 대한 트랜잭션 분석서

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중..

1d1cblog.tistory.com

 

728x90

+ Recent posts