본문 바로가기
정보처리기사

[실기] 제 11과목 - 응용 SW 기초 기술 활용 요점 정리 -2

by 3.14pie 2023. 5. 8.

데이터베이스 - 데이터 저장과 개발 및 유지보수 측면에서 중복성 통제, 다중 사용자간 데이터 공유, 권한 없는 사용자의 데이터 접근 통제, 데이터 간 관련성 표현, 무결성 보장, 백업과 복구 기능, MySQL, Tibero, SQL Server, DB2, PostgreSQL, Maria DB

   - RDBMS : 문자형 데이터 위주, 테이블 구조 관계 기본키(PK), 미리 정의된 일반 정보 타입만 지원, SQL 질의어

   - OODBMS : 데이터와 연관 프로그램(메서드) 저장, 엔티티 간 포인팅 방식 객체 식별(OID), 비정형 객체 타입 지원, OQL

   - ORDBMS : 데이터와 연관 프로그램(메서드) 저장, PK + OID, 사용자 정의 및 비정형 객체 타입 지원, SQL 확장 질의어(SQL3)

 

NoSQL - Not Only SQL, 수평적 확장이 가능하고, 다수 서버들에 데이터 복제 및 분산 저장이 가능한 DB

   - Schema-less : 스키마 없이 키 값을 이용해 다양한 형태의 저장, 접근 가능, 컬럼, 값, 문서, 그래프 저장 방식

   - 탄력성 : 시스템 일부 장애에도 다운 타임이 없도록 하는 동시에 대용량 데이터의 생성, 업데이트, 질의에 대응할 수 있도록 시스템 규모와 성능 확장이 용이하고, 입출력 부하 분산에도 용이한 구조

   - 효율적 질의 가능 : 수십, 수천대 규모 시스템에서도 데이터 특성에 맞게 효율적으로 데이터를 검색, 처리할 수 있는 질의 언어, 관련 처리 기술, API 제공

   - 캐싱 : 대규모 질의에도 고성능 응답 속도를 제공할 수 있는 메모리 기반 캐싱 기술 적용이 매우 중요하고, 개발, 운영에도 일관되게 적용할 수 있는 구조

 

NoSQL 저장 구조

   - Key / Value Store : 기본적인 패턴, 유니크한 key에 하나의 value, Oracle coherence, Redis

   - Ordered Key / Value Store : Key / Value 확장 형태, 동일하지만 데이터가 내부적으로 key 순서로 정렬되어 저장, HBase, Cassandra

   - Document Key / Value Store : Key / Value 확장 형태, 저장되는 value 타입이 document(XML, JSON, YAML 같은 구조화 데이터 타입), 복잡한 계층 구조 표현 가능, MongoDB, CouchDB, Riak

   - Graph Database - Ne04j, AlleqroGraph

 

데이터 독립성 - 데이터의 저장 구조와 접근 기법으로부터 응용을 분리시키는 개념, 데이터와 응용 프로그램이 서로 영향을 받지 않음, 사용자 view와 구현 view를 분리해 변경에 따른 영향을 줄임, 각 view의 독립성을 유지, 계층별 view에 영향을 주지 않고 변경 가능

   - 논리적 독립성 : 논리적 구조를 변경시켜도 기존 응용 프로그램에 영향 X, 하나의 논리적 데이터 구조를 가지고 많은 응용 프로그램이 각각 요구하는 다양한 형태의 논리적 구조로 매핑 가능해야 함, 사용자 특성에 맞는 변경 가능, 통합 구조 변경 가능

   - 물리적 독립성 : 응용 프로그램과 논리적 구조에 영향을 주지 않고 물리적 구조만 변경, 하나의 논리적 구조로부터 여러가지 물리적 구조를 지원할 수 있는 매핑 능력 필요, 시스템 성능 향상에 필요, 물리적 구조 변경 없이 개념 구조 변경 가능 (반대도 가능)

   - 관리자 측명 : HW 변환이나 갱신에 따라 개념 스키마 변화가 필요 없어 사용 중인 어플리케이션 변화 필요 없음, 정보 시스템의 운영을 정지하지 않고도 데이터의 물리적 구조 및 논리적 구조 변경 가능

   - 설계자 측면 : 외부 스키마와 사용 중인 어플리케이션 변화 없이 개념 스키마 변화 가능

   - 사용자 측면 : 사용자가 의식하지 못하게 DB 변경 수행이 가능해 투명성 제공 가능

 

내부 단계 - Internal, 물리적인 기억 장소와 가장 가까운 단계, 데이터가 물리적으로 저장되는 방법과 관련

개념 단계 - Conceptual, 내부와 외부 사이에 있는 간접 또는 중간 단계, DB 전체에 대한 추상적인 설명

외부 단계 - External, 사용자와 가장 가까운 단계, 개개인이 보는 자료에 대한 관점과 관련

 

E-R 모델 - Entity Relationship, 개체, 속성, 관계 등에 대해 표현할 수 있는 E-R 도형을 정의

 

개체 - 현실 세계의 객체로서 유형, 무형의 정보 대상으로 존재하며 서로 구별될 수 있는 것

관계 - 2개 이상의 개체 사이에 존재하는 연관성 의미

릴레이션 - 자료 저장의 형태가 2차원 구조의 테이블로 표현

속성 - 릴레이션을 구성하는 각 열, Coulmn = Attribute

튜플 - 릴레이션의 한 행을 구성하는 속성들의 집합, Tuple = Row = Record

도메인 - 하나의 속성이 가질 수 있는 값들의 범위

릴레이션 스키마 - 릴레이션의 이름과 속성 이름의 집합

릴레이션 인스턴스 - 릴레이션에서 어느 시점까지 입력된 튜플들의 집합

차수 - 릴레이션을 구성하는 속성의 수, Degree

카디널리티 - 릴레이션에 입력된 튜플의 수

 

매핑 룰 - 개념적 데이터 모델인 E-R 모델을 논리적 데이터 모델인 릴레이션 스키마로 변환하는 것, 속성 -> Coulmn, 식별자 -> PK, 릴레이션 간 관계는 PK와 FK로 표현

 

Key - DB에서 조건에 만족하는 튜플을 찾거나 정렬할 때, 튜플을 서로 구분할 수 있는 기준이 되는 속성

   - 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함, 기본키, 후보키, 슈퍼키

   - 최소성 - 속성의 집합인 키가 릴레이션의 모든 튜플을 유일하게 식별하기 위해 꼭 필요한 속성, 기본키, 후보키

   - 슈퍼키 > 후보키 > 대체키 > 기본키, 후보키 (= 대체키 + 기본키)

 

   - 슈퍼키 : 유일성만 있고 최소성이 없는 속성의 집합

   - 후보키 : 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성의 집합

   - 대체키 : 후보키가 둘 이상인 경우, 기본키로 선택되지 못한 후보키들

   - 기본키 : 릴레이션의 유일한 식별자, 기본키로 지정된 속성은 같은 값을 가질 수 없음, 중복값 X, 유일성, 최소성 만족

   - 외래키 : 한 테이블의 키 중 다른 테이블의 튜플을 식별할 수 있는 키

 

무결성 - 데이터 베이스에 저장된 데이터 값과 그것이 표현하는 현실 세게의 실제 값이 일치하는 정확성

   - 개체 무결성 : 기본키는 반드시 값을 가짐, 유일성을 보장하는 최소한의 집합, PK, Not NULL

   - 참조 무결성 : 외래키 속성은 반드시 참조되어야 함, 외래키가 기본키로 사용된 릴레이션과 참조 무결성 제약을 가짐, FK

   - 속성 무결성 : 컬럼은 지정된 데이터 형식을 반드시 만족하는 값만 포함

   - 키 무결성 : 한 릴레이션에 같은 키 값을 가진 튜플들은 허용 X, PK, Unique Key로 구현

   - 사용자 정의 무결성 : 모든 데이터는 업무 규칙을 준수해야 함, Trigger, check 등으로 구현

   - 도메인 무결성 : 특정 속성 값이 미리 정의된 도메인 범위에 속해야 함

 

무결성 제약 조건 - 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 DB 내에 저장되는걸 방지하기 위한 조건

 

관계 대수 - RDBMS에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어, 식과 결과 모두 릴레이션

 

순수 관계 연산자

   - Select : σ, 시그마, 선택 조건을 만족하는 튜플의 부분 집합을 구함, 가로(행)을 계산, 수평 연산, σ (조건) (R), R = 릴레이션 이름

   - Project : π, 파이, 속성 리스트에 제시된 attribute만 추출하는 연산, 세로(열)을 계산, 수직 연산, π (속성 리스트) (R), R = 릴레이션 이름

   - Join : ⋈, 공통 속성을 중심으로 두 릴레이션을 합쳐 새 릴레이션을 만듬, 차수는 두 릴레이션 차수의 합, 결과 = CARTISIANPRODUCT -> SELECT, R ⋈ 키 속성 r = 키 속성 s S

   - Division : ÷,  Y ⊂ X 인 릴레이션일 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외하고 구하는 연산, R (속성r ÷ 속성s) S

 

일반 집합 연산자

   - 합집합 : ∪, 튜플의 합집합, 중복 제거

   - 교집합 : ∩, 튜플의 교집합

   - 차집합 : -, 튜플의 차집합

   - 교차곱 : X, 튜플의 순서쌍을 구함, 두 릴레이션의 카디널리티를 곱한 것과 같음

 

트랜잭션 - DB의 상태를 변화시키기 위해 수행하는 작업의 단위, 사용자가 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위, Rollback, Commit

   - 원자성 : Atomicity, 분해가 불가능한 최소 단위, 한가지라도 실패 시 전체 취소로 무결성 보장, Commit, Rollback, 트랜잭션 관리자

   - 일관성 : Consistency, 트랜잭션이 실행 성공 후 항상 모순 없이 일관성 있는 DB 상태 보존, 참조 무결성 기법

   - 고립성 : Isolation, 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가, 병행 제어 관리자

   - 영속성 : Durability, 성공이 완료된 트랜잭션의 결과는 영속적으로 DB에 저장, 회복 기법

 

회복 - Recovery, 트랜잭션을 실행하는 도중 장애(Failure)가 발생해 DB가 손상되었을 경우, 이전의 정상 상태로 복구하는 작업

   - 실행 장애 : 사용자 실수, 무결성 규정 위반 등 질의 실행 실패

   - 트랜잭션 장애 : 입력 데이터 오류, 시스템 자원 요구 과다 등 비정상적인 상황으로 트랜잭션 실행 중단

   - 시스템 장애 : HW 오작동, 정전, SW 오작동 등 실행 중인 트랜잭션 실행 지속 불가

   - 미디어 장애 : 디스크 블록 손상, 헤드 충돌 등으로 DB 일부 또는 전체가 물리적으로 손상

 

   - 지연 갱신 기법 : Deffered Update, 트랜잭션이 성공적으로 종료될 때까지 실질적 갱신 연기

   - 즉시 갱신 기법 : Immediate Update, 트랜잭션이 데이터를 변경하면 부분 완료되기 전이라도 즉시 DB에 반영, Redo, Undo

   - 그림자 페이지 기법 : Shadow Paging, 갱신 이전 DB를 페이지 단위로 구성해 복사본인 그림자 페이지를 별도 보관, 실제 페이지를 대상으로 트랜잭션 변경 작업 수행

   - 검사점 기법, Check Point, 장애 발생 시, Redo와 Undo를 수행하기 위해 로그 전체를 조사하는 경우를 피하기 위한 방법, 주기적으로 변경 내용, 시스템 상황 등의 정보를 검사점과 함께 로그에 보관, 로그의 최근 검사점부터 회복 작업 수행

   - 미디어 회복 기법 : Media Recovery, 주기적으로 안전한 저장 장치에 덤프

 

병행 제어 - Concurrency Contorl, 다중 사용자 환경을 지원하는 DB에서 여러 트랜잭션들이 성공적으로 동시에 실행되도록 지원하는 기능

   - 동시성 제어, 트랜잭션의 직렬성 보장, 동시 수행 트랜잭션 처리량 최대화, 공유도 최대, 응답시간 최소, 시스템 활동 최대 보장, 데이터 부결성, 일관성 보장

   - 2단계 잠금 기법 : 2 Phase Locking, 잠금을 2단계로 구분, 확장 단계에서는 트랜잭션에서 잠금만 수행, 차단 단계에선 데이터 연산(SQL)만 수행

        > 잠금 : 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는것, 잠금 -> 실행 -> 해제, DB, 테이블, 레코드, 필드..

        > 교착 상태 : 한 트랜잭션이 사용하기 위해 잠가놓은 자원을 사용하기 위해 기달려 모든 트랜잭션이 실행하지 못하고 무한정 기다리는 상태

   - 타임 스탬프 기법 : Timestamp Ordering, 트랜잭션 도착 시간 별로 스탬프 할당, 먼저 오면 우선권, 시스템 계수기(시스템 시간), 논리적 계수기(DBMS 논리적 계수기)

   - 검증 기법 : Validation, 트랜잭션 처리 시 먼저 메모리 상에서 복사본에 대한 연산 수행 후 검증 완료 시 DBMS에 반영, Read(메모리에서 연산 수행) -> Validation(트랜잭션 직렬성 확인) -> Write(검증 성공 시 DBMS에 Commit, 실패 시 Rollbck)

 

병행제어를 하지 않았을 때 문제점

   - 갱신 내용 손실 : Lost Update, Dirty Wirte, 동일 데이터를 동시에 갱신할 경우 발생, 이전 트랜잭션이 갱신 후 종료 전에 나중 트랜잭션이 값을 덮어쓸 때

   - 현황 파악 오류 : Dirty Read, 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조해 발생하는 오류

   - 모순성 : Inconsistency, 두 트랜잭션이 동시에 실행할 때, DB가 일관성 없는 모순된 상태로 남는 문제, 복수의 사용자가 동시에 DB에 Access해 갱신한 결과 DB 내 data가 상호 일치하지 않거나 출력된 정보에 모순이 있는 경우

   - 연쇄 복귀, 회복 불능 : Cascading Rollback, Unrecoverability, 복수의 트랜잭션이 data 공유 시 특정 트랜잭션이 처리의 취소를 할 때, 다른 트랜잭션이 이미 처리한 부분에 대해서는 취소 불가한 상태 발생