XIV. 빅데이터 및 NoSQL에 대한 이해

- 목표 : 빅데이터 개념과 관련 기술, NoSQL의 개념과 특징

- 핵심 키워드 : 빅데이터, 3V, 비정형데이터, 분산파일시스템(DFS), NoSQL, CAP이론

 

01 빅데이터의 개요

. 빅데이터 정의 및 특징

  1) 빅데이터 정의

      - 기존 DB 관리도구의 데이터 수집, 저장, 분석하는 역량을 넘어서는 데이터

      - 다양한 종류의 대규모 데이터로부터 저비용으로 추출, 빠른 수집, 발굴, 분선을 지원하는 차세대 기술 및 아키텍처

 

   2) 빅데이터 특징(3V)

3 요소 설명
크기(Volume) - 수십 테라바이트(Terabyte)/페티바이트(Petebyte) 이상의 데이터
속도(Velocity) - 고속 생성, 실시간 처리(수집, 처리, 저장, 분석)
다양성(Valiety) - 다양한 종류 데이터(정형, 반정형, 비정형)

 - 빅데이터 6V : Volume, Variety, Velocity + Veracity(진실성), Visualization(시각화), Value(가치)

 

  3) 정형 데이터 VS 비정형 데이터

데이터 형태 설명
정형(Structured) - 고정된 필드에 저장되는 데이터
반정형(Semi-Structured) - XML, HTML 처럼 메타 데이터나 스키마 포함 데이터(CVS, XLS, RDF)
비정형(Unstructed) - 문서, 그림, 동영상, 오디오, 비디오

 

) 빅데이터의 Life Cycle별 세부기술

구분 설명 세부기술
수집 - 데이터 수집 기술 - 크롤링(웹로봇), ETL, CEP
저장/처리 - 분산 저장/처리 - DFS, NoSQL, MapReduce
분석 - 유의미한 정보 추출 - NLP, ML, 데이터 마이닝
표현 - 분석 결과의 효과적 표현 - R, 그래프, 도면, 시각화

 * CEP(Complex Event Processing, 실시간 복합 이벤트 처리)

   - 실시간 데이터의 가시화를 통해 이벤트 간 연관성, 패턴을 이해하고 유의미한 정보를 통해 다양한 비즈니스 가치를 창출하는 과정

 

02. 빅데이터 관련 기술

  가) 수집기술

    - ETL, 웹 크롤링, RSS Feeding, Open API, CEP

   - 웹 크롤링 : 웹 문서, 데이터 자동 수집(SNS, 블로그, 뉴스), HTML 코드 분석, 특정 태그 데이터 수집 

기술 설명 솔루션
DBMS 이용 SQL 기능 이용 Oracle, MariaDB, Tibero
센서 이용 일정 조건 만족 시 데이터 수집 CQL, Kafka
FTP 수집 파일 이동 포트 이용 수집  
HTTP 수집 HTML  태그 이용 수집 스크래퍼

  ) 빅데이터 저장/처리 기술

기술 설명 솔루션
분산파일시스템(DFS) - 대용량, 비정형 데이터의 분산 저장/처리 아키텍처
- 가격 저렴, Scale-Out, 고가용성, Batch 처리
GFS(Google File System), HDFS(Hadoop DFS)
NoSQL - BASE특성의 저장/검색 시스템
- 유연한 스키마, 비 관계형 모델, 확장성
HBase, Cassandra, MongoDB, CouchBase, Redis, Neo4J
MapReduce - 클러스터 환경에서의 병렬 분산 처리 프레임워크
- HDFS 연동, 다양한 옵션
HDFS

- 최근 클라우드 환경에서 가상화 기술 이용한 클라우드 기반 분산 파일 시스템 도입 중

 

    다) 표현기술

    - 이해하기 쉽도록 분류, 통계, 그래프 이용하는 기법

  라) 빅데이터 분석

     - 빅 데이터로부터 의미 있는 패턴을 발견하는 것

 

  마) 주요 빅데이터 분석 방법

개념 설명
로지스텍 회귀분석
(Logistic Regression)
- 독립변수의 선형결합 이용, 사건의 발생확률 예측 기법
의사결정트리 분석(Decision Tree) - 의사결정 규칙을 도표화, 소집단으로 분류, 예측하는 계량적 분석방법
신경망 분석(Neural Network) - 인간 두뇌 모방, 네트워크 기반으로 병렬, 분산, 확률적 계산 분석방법
텍스트 마이닝 (Text Mining) - Test 데이터를 NLP, 문서처리 기술 적용하여 추출/가공하는 기술
- 핵심기술 : 요약, 분류, 군집, 특성 추출
SNA (Social Network Analysis) - 객체 간의 관계, 네트워크의 특성/구조 분석, 시각화화는 분석방법론
Opinion Mining - 비정형 리뷰에서 정보 분석, 지능적 유추 기술
- 핫 이슈 추출, 여론 분석, 마케팅 정책에 활용
자연어처리(NLP) - 사람의 언어를 이해, 생성, 분석하는 AI기술
- 절차 : 전처리 → 형태소 분석 → 구문분석 → 의미분석 → 담화분석

   ) 데이터 과학자

     - 데이터 수집, 정리, 조사, 분석, 가시화 전문가. 데이터를 이용해 기업/조직에 필요한 정보 제공

 

03. NoSQL

 ) NoSQL 정의 및 특징

 - 비정형, 초고용량 데이터 처리 위해 쓰기속도 증가, 복제/분산 저장, 수평적 확장이 가능한 비관계형 분산 데이터 저장소

 - 특징

특징 설명
대용량 데이터 처리 - 페타바이트 수준 처리 가능, 느슨한 데이터 구조
유연한 스키마 - 유연한 저장, Key-value, Graph, Document 구조
저렴한 클러스터 구성 - 상용 HW 활용, 수평적 확장, 복제 및 분산 저장
단순한 CLI - 쿼리 언어 없음, API Call, Http 이용 단순한 인터페이스
고가용성 - 클러스터 환경에 자동 분할, 적재
적정한 무결성 - BASE 기반, 무결성을 응용에서 일부 처리
Schema-Less - Key 이용 저장, 접근 기능 사용, 칼럼, , 문서, 그래프 방식
탄력성 - 성능 확장 용이, 입출력 부하 분산 용이
질의가능(Query) - 대규모 시스템에서 검색/처리 가능한 질의언어, API 제공
캐싱(Caching) - 파티셔닝 통한 점진적 노드 추가 가능
높은 확장성 - 메모리 기반 처리, 논블락킹 Write/단순한 알고리즘 사용
원자성 - 각각의 쓰기는 원자성 보유
일관성 - 결과적 일관성 보유
지속성 - 데이터는 디스크에 유지
배포의 유연함 - 노드 추가/삭제 자동 로드, 이기종간 동작 가능
모델링의 유연함 - Key-value, 계층적 데이터, 그래프 등 다양한 모델링 가능
퀴리의 유연함 - 다중 GET, 범위 기반 쿼리 가능

 

 

 

 

) NoSQLBASE 속성

구분 설명
Basically Available - 가용성 중시, Optimistic Locking/규 사용
- 다수 스토리지에 복제를 통해 가용성 보장
Soft-State - 외부의 전송 정보를 통해 노드 상태 결정
- 데이터가 노드에 도달한 시점에 갱신
Eventually Consistent - 일시적 비일관적 상태 → 최종적으로는 일관성 성립

 BASE 속성과 ACID 속성 비교

속성 BASE ACID
분야 NoSQL RDBMS
범위 시스템 전체 특성 트랜잭션에 한정
일관성 측면 약한 일관성 강한 일관성
중점사항 ‘Availability’에 집중 ‘Commit’에 집중
시스템 측면 성능에 초점 엄격한 데이터 관리에 초점
효율성 쿼리 디자인이 중요 테이블 디자인이 중요

 ) NoSQL의 저장방식

 - NoSQL 종류

종류 설명
Key-Value 기반 - 단순/빠른 Get, Put, Delete 기능 제공
- Dynamo, Redis, MemcacheDB
Column Family 기반 - 칼럼 패밀리에 행으로 데이터 저장
- Cassandra, HBase, SimplDB
Document 기반 - 문서를 Key-ValueValue 부분에 저장
- MongoDB, CouchDB
Graph 기반 - 엔트리 속성을 노드로, 관계를 엣지로 표현
- Neo4J, 플록DB

   라) NoSQL 데이터 모델의 특징 비교              

방식 관계형DB 데이터 모델링 NoSQL 데이터 모델링
개념도
핵심 - ACID 기반 데이터 모델링 - BASE기반 데이터 모델링
방식 - 최소 중복 통한 데이터 일관성 확보 - 데이터 중복통한 빠른 조회 확보
단계 - 데이터 모델링(설계)후 개발 - 화면, 개발 로직 고려한 데이터셋 설계
독립성 - 프로그램 독립적 설계(데이터 독립성 중요) - 프로그램 종속적 설계(데이터 독립서 회피)
특징 - 논리적 연결점 보유한 모델링 기법 - 파일구조 설계에 근접

   마) NoSQL 데이터 모델의 특징

     1) CAP 이론의 정의

        - 대용량 분산 DB는 일관성(Consistency), 가용성(Availability), 단절내성(Partition Tolerance)을 모두 만족시키는 것은 

          불가능, 두 가지만 전략적으로 선택해야 한다는 이론

     2) CAP 이론의 구성과 관리 전략

특성 설명
구성도
Consistency - 각 사용자는 항상 동일한 데이터 조회
Availability - 소수 노드 장애 발생에도 다른 노드에 영향 없음
Partition Tolerance - 일부 메시지 손실에도 시스템은 정상 동작
C + A - 메시지 손실 방지하는 강한 신뢰성, 일반 RDBMS
C + P - 모든 노드가 함께 퍼포먼스 내는 성능형, Big Table, Hyper Table, HBase
A + P - 비동기화된 스토어 작업에 필수적
- Dynamo, Apache Cassandra, CouchDB, Oracle Coherence

  - NoSQL 시스템들은 A+P, C+P의 특성을 가지는 분산시스템들로 구성

 

[TOPCIT 목차]

 

01. 데이터 품질관리 프레임워크

 

                                       대상
조직      
데이터 값 데이터 구조 데이터 관리 프로세스
CIO/EDA
(개괄적 관점)
데이터 관리 정책
DA
(개념적 관점)
표준 데이터 개념 데이터 모델
데이터 참조 모델
데이터 표준관리
요구사항 관리
모델러(Modeler)
(논리적 관점)
모델 데이터 논리 데이터 모델 데이터 모델 관리
데이터 흐름 관리
 DBA
(물리적 관점)
관리 데이터 물리 데이터 모델
데이터 베이스
DB 관리
DB 보안관리
사용자
(운용적 관점)
업무 데이터 사용자 뷰 데이터 활용 관리

-  데이터 품질관리 ? 데이터의 품질을 향상 시키기 위해 데이터 값, 데이터 구조, 데이터 관리 프로세스 대상에 대한 활동을 수행

 

가) 데이터 값

 ① 표준 데이터 : 공통된 형식과 내용으로 정의하여 사용하는 표준 관련 데이터

     ex> 표준 단어(word) 사전, 표준 도메인(domain) 사전, 표준 용어(term) 사전, 표준 코드, 데이터 표준 요소

 

 ② 모델 데이터 : 데이터 모델을 운용, 관리하는 데 필요한 데이터

    - 완전성, 일관성, 추적성, 상호연계성, 최신성, 호환성 관리

     ex> 모델에 대한 메타 데이터 및 DBMS 객체 정보 

 

 ③ 관리 데이터 : DB를 표과적으로 운영, 관리하는 데 필요한 데이터

    ex> 사용 관리 데이터, 장애 및 보안관리 데이터, 성능관리 데이터, 흐름 관리 데이터, 품질 관리 데이터

 

 ④ 업무 데이터 : 기관이나 기업의 업무 및 비즈니스를 수행하는데 필요한 데이터

    ex> 소스데이터, 운영 데이터, 분석 데이터

 

나) 데이터 구조

 ① 개념 데이터 모델

정의  - 업무 요건을 충족하는 데이터의 주제영역과 핵심 데이터 집합을 정의하고 상호 간의 관계를 정의한 모델
관리 항목  - 주제영역, 핵심 엔티티, 핵심관계

 

 ② 데이터 참조 모델

정의  - 데이터 아키텍처의 구축·유지관리 및 조직에서 사용하고 있는 데이터 모델의 상호 운영과 타 조직 데이터모델의 참조·재사용을 목적으로 업무영역별, 주제영역별로 표준 데이터 집합과 관리 항목들을 정의한 데이터 모델 
관리 항목  - 재사용이 가능한 형태의 데이터 모델로, 속성단위, 엔티티, ERD 전체 업무 영역 단위 등
 - 개념 데이터 모델, 논리 데이터 모델, 물리 데이터 모델

 

 ③ 논리 데이터 모델

정의  - 개념 데이터 모델을 상세화하여 논리적인 데이터 집합, 관리 항목, 관계를 정의한 모델
관리 항목  - 주제영역, 엔티티, 관계, 속성

 

④ 물리 데이터 모델

정의  - DBMS의 특성과 성능을 고려하여 논리 데이터 모델을 구체화시킨 모델
관리 항목  - 주제영역, 테이블, 관계, 컬럼

 

⑤ 데이터베이스

정의  - 물리 모델을 구현한 결과물이며 구축된 실제 데이터가 저장되는 데이터 저장소
관리 항목  - 저장공간, 테이블, 제약조건, 인덱스, 트리거, DB링크, 프로시저, 뷰, 동의어, 롤

 

⑥ 사용자 뷰

정의  - 데이터를 제공하는 정보시스템 상의 화면이나 출력물
관리 항목  - 화면, 출력물

 

다) 데이터 관리 프로세스

라) 데이터 품질관리 성숙모형

 ① 데이터 품질 기준

    - 데이터 유효성 측면 : 정확성, 일관성

    - 데이터 활용성 측면 : 유용성, 접근성, 적시성, 보안성

 

 ② 데이터 품질 관리 프로세스

    - 정확성, 일관성, 유용성, 접근성, 적시성, 보안성을 향상 시키기 위한 프로세스를 식별

프로세스 활동 설명
데이터 품질기준 수립 DQI, CTQ 선정 - 데이터 품질 기준정보
- DQI 등 업무영역 선정
프로파일링 대상 선정 프로파일링 - 일반적 유형 현황 파악
- 컬럼, 관계, 패턴, 코드 등
BR(Business Rule) 선정 BR 도출 및 확정 - 각종 업무 규칙 수집
- 측정 가능형태로 선정
데이터 품질진단 BR 측정 및 진단 - 확정 BR의 측정, 진단
- 결과에 따른 현상 분석
개선/정제 데이터 정제 - 저품질 BR 오류 분석
- 개선/정제 후 재측정

 

 ③ 데이터 품질 관리 성숙 수준

    - 단계 : 1~5단계로 정의

    - 성숙수준이 높을 수록 체계적이고 정교한 관리가 수행됨을 의미

 

02. 데이터 표준화

가) 데이터 표준화 개요

  • 기업내 시스템별로 산재해 있는 데이터 정보요소에 대한 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하여 전사적으로 적용하는 관리 활동
  • 시스템 별로 산재해 있는 데이터 정보요소에 대한 명칭, 정의, 형식, 규칙에 대한 원칙을 수립하여 이를 전사적으로 적용하는 것
  • 데이터의 정확한 의미를 파악, 데이터의 상반된 시각적 조정하는 역할 수행

 

나) 데이터 표준화 필요성

필요성 설명
시스템 별 데이터
일치 요구
 – 데이터 표준 정책 미비로 명칭 중복 관리 등 
 – 동일 데이터를 시스템 간 상이하게 처리
데이터 의미 파악
개선 필요
 – 정보 요건 변경 시 필요 데이터 파악 시간 낭비
 – 정보 사용자에게 정확한 정보 제공 어려움
유지보수 개선 필요  – 정보시스템 유지보수 시 데이터 의미 파악 곤란
 – 새로운 요건 반영 시 기존 데이터 파악 어려움

 

다) 데이터 표준화 구성요소

구분 구성요소 상세 설명
데이터 표준 표준 용어 – 업무적 용어, 기술적 용어 표준
표준 단어 – 용어를 구성하는 단어 표준
표준 도메인 – 컬럼의 성질(Type) 그룹핑
표준 코드 – 도메인 데이터 값까지 사전 정의
데이터 표준 관리 조직 전사 데이터 관리자 – 정책 결정, 검토된 표준화 승인
업무 데이터 관리자 – 업무 단위 요구사항 반영, 검토
업무 시스템 관리자 – 시스템 관리 요구사항 정의
데이터 표준화 절차 요구사항 수집 – 개별 시스템 데이터 표준 수집
표준 정의 – 표준화 정의(용어,단어,도메인,코드)
표준 확정 – 표준 확정, 검토, 공표
표준 관리 – 표준 이행, 관리 절차 수립
  • 데이터 표준화 위해 표준관리, 구조관리, 프로세스 관리 등 존재

 

라) 데이터 표준 정의

 ① 표준단어의 도출 전체 개요

    - 표준단어는 모든 시스템에서 사용되고 있는 용어를 단어 단위로 분할하여 도출

    - 표준단어는 전사적으로 관리하고 있는 엔티티와 속성을 개별단위로 추출

 

 ② 단어 분할

     - 수집된 용어를 업무상 사용되며 일정한 의미를 가지고 있는 최소 단위의 단어로 분할

       ex>  주민등록 번호 -> 주민 + 등록 + 번호

 

 ③ 이음동의어 처리

    - 의미가 동일한 단어들에 대해 하나의 대표 단어를 표준으로 선정

    - 최종 도출된 모든 단어들은 한글명과 영문 약어명 모두 유일해야 함

      ex>  비밀번호, 암호, 패스워드를 비밀번호로 통일

 

 ④ 표준 도메인 사전 도출

    - 각 속성은 임의의 도메인에 할당 되어야 하며, 하나 이상의 도메인에 복수로 할당할 수 없음

    - 새로운 속성이 추가될 경우 해당 속성의 도메인을 선정, 등록해야함

      ex> (용어)주민번호-(도메인명)등록번호-(타입)char(13)

 

 ⑤ 표준 코드 사전 도출

     - 전사적으로 사용되고 있는 모든 코드들을 수집하여 동일 코드를 파악하고 통합하여 표준 코드를 정의

       ex> 색상코드->포장이 생삭코드

 

 ⑥ 표준 용어 사전 도출

     - 전사적으로 보유하고 있는 엔티티와 속성을 대상으로 추출된 표준 단어를 조합하여 표준용어를 생성

       ex> (표준단어)고객, 구분, 코드, ID->(표준용어) 고객구분코드, 고객ID 

 

마) 데이터 표준 확정

 ① 데이터 표준 검토 대상

    - 표준 단어 사전, 표준 도메인 사전, 표준 코드 사전, 표준 용어 사전 등

 

 ② 데이터 표준에 대한 주요 검증 기준

    - 유일성, 완전성, 정확성, 범용성

1. 데이터베이스 설계 및 구축 과정

가) 요구사항 수집 및 분석

-. 사용자 요구사항 수집 분석

-. 요구 조건 명세서 작성

-. 정적요구사항, 동적 요구사항 파악

   * 정적 요구사항: 엔터티, 속성, 관계, 제약조건

   * 동적 요구사항: 트랜잭션의 유형, 빈도

 

나) DB 설계

데이터 모델링 내용 수준
개념적 데이터 모델링 업무중심적, 포괄적 수준의 모델링, 전사 아키텍쳐(EA) 수립시 많이 이용 추상적
논리적 데이터 모델링 Key, 속성, 관계 표현, 데이터 모델 재사용성이 높음    :
물리적 데이터 모델링 실제 DB 이식, 성능 향상 및 저장의 효율화를 위해 물리적 성격 고려 설계 물리적
데이터 모델링 내용
개념적 데이터 모델링 현실세계에서나타나는 정보구조를 추상적으로 개념화하는 것
엔티티, 엔티티의 식별자, 엔티티간 관계, 관계의 대응 수 및 차수, 엔티티의 속성 등이 도출됨
일반적으로 개체-관계 모델로 표현됨
논리적 데이터 모델링 사람의 이해를 위한 개념적 설계의 결과를 데이터 베이스 저장이 용이한 논리적 구조로 변환하는 것
관계형, 네트워크형, 계층형, 객체 지향형 모델이 있으며 이 중 관계형 모델이 가장 일반적으로 사용됨
관계형 모델의 경우 논리적 설계 단계에서 테이블명, 기본키, 외래키 등이 결정됨
단계 산출물로 논리 스키마가 도출됨
요구 수준에 맞춘 정규화가 수행됨
물리적 데이터 모델링 논리적 구조 설계를 통해 생성된 데이터베이스의 물리적 저장 구조 결정
열의 데이터 형식, 제약조건 및 특정 데이터에 접근하기 위한 접근 방법, 접근 경로를 정의함
성능 요구사항에 따라 구조를 변환하는 기술이 필요함
구체적으로 트랜잭션 분석, 뷰 설계, 인덱스 설계, 용량 설계, 접근 방법 설계 등이 수행됨
단계 산출물로 물리 스키마가 도출됨

다) DB 구축

-. DB 구현, DB 개발 단계라고도 한다.

-. DB 구성에 필요한 SQL 문을 작성하고 이를 실행하여 사용자 요구사항을 수용할 수 있는 데이터 베이스를 생성한다.

-. 구축해야 할 데이터를 수집하고 이를 가공한다.

-. 수집, 가공된 데이터를 입력, 저장한다. 

 

라) 운영 및 유지보수

-. 데이터베이스 품질 관리 및 모니터링

-. 데이터베이스 복구, 회복에 대한 전략 수립

-. 보안 정책 수립

-. 지속적인 유지보수 및 사후 평가: 분석 대상 산출물, 설계 주체, 설계 영향도

 

2. 데이터베이스 설계 고려사항

가) 분석 대상 산출물

단계 고려사항 설명
개념 모델 설계 단계 고려사항 데이터에 대한 의미와 데이터들 간의 사고관계에 관한 규칙을 정의하는 단계
주제영역, 핵심 엔티티, 관계가 정의되어 개념 데이터 모델이 작성되어야 함
논리 모델 설계 단계 고려사항 개념 데이터 모델 기반, 속성, 키 정의 엔티티가 상세화, 이력관리가 정의된 형태로 최종 개체-관계 다이어그램 작성 되어야 함
물리 모델 설계 단계 고려사항 데이터베이스가 구현되기 위한 물리적인 스키마를 구현하는 단계
성능을 고려한 반정규화가 수행, 테이블 정의서 도출

나) 설계 주체 고려사항

DA, DBA

 

3. 프로젝트 라이프사이클에서 DB 설계 영향도

 

[TOPCIT 목차]

 

키워드 : 갱신손실, 현황파악오류, 모순성, 연쇄복귀, Locking, 2PL, Timestamp

 

01. 트랜젝션이란

  가) 트랜잭션의 개념

  • 하나의 논리적인 작업 단위를 이루는 여러 연산 집합으로 데이터베이스의 일관된 상태를 또 다른 일관된 상태로 변환시킴
  • 한 번에 수행되어야 할 데이터베이스의 일련의 읽기(Read)와 쓰기(Write) 연산을 수행하는 단위

  나) 트랜잭션의 ACID 특징

특징 ACID가 깨지는 사례
Atomicity
(원자성)
철수는 10건의 데이터를 입력 처리하는 작업을 1개의 트랜잭션으로 처리하는데 9건을 성공적으로 수행되었고 한 건은 실패되어 저장
-> 1개의 트랜잭션에서 모든 데이터는 함께 성공하든지 함께 실패하든지 해야 함
Consistency
(일관성)
강희는 SQL의 연산을 칼럼1+칼럼2+칼럼3-칼럼4의 로직으로 실행하는데 실행 때마다 예측된 결과가 나오지 않고 다른 결과가 나오는 경우가 있음
-> 트랜잭션의 실행은 항상 기대되는 값을 정확하게 보여줘야 함, 중간에 다른 트랜잭션이 끼어들지 못 하게 하는 Lock, Timestamp, Validation 등을 사용하여 제어함
Isolation
(고립성)
영희가 100건의 데이터를 수정하는 작업을 실행하여 데이터베이스에서는 35건째 수정작업이 진행 중인데 첫 번째 수정한 데이터를 철수가 접근하여 재수정하였다.
-> 트랜잭션의 Commit 또는 Rollback이 발행되기 전에 다른 트랜잭션이 끼어들어서 처리하면 안 됨
Durability
(영속성)
철수가 10건의 회원 정보를 회원 테이블에 저장(Insert)하고 성공적으로 Commit 하였으나 전원이 일시적으로 나갔다가 들어오면서 데이터가 유실됨
->한번 성공한 트랜잭션은 지속성을 보장해야 함, 이 같은 경우 순방향 복구 알고리즘에 의해 복구되어야 함
  다) 트랜잭션 종료 시 연산
  • 트랜잭션 완료(Commint) 연산 : 트랜잭션 안에서 수행한 모든 SQL 문장들의 결과를 데이터베이스에 영구적으로 반영하면서 해당 트랜잭션을 종료하는 연산
  • 트랜잭션 복귀(Rollback) 연산 : 트랜잭션의 수행 도중에 치명적인 오류가 있어 더 이상 진행할 수 없거나, 사용자에 의해 반영 취소 명령(rollback)이 수행되었을 때 지금까지 수행해왔던 트랜잭션 안에서 변경된 모든 데이터 값을 트랜잭션 수행 이전 상태로 되돌리는 연산{즉, 트랜잭션을 철회(abort)하는 연산}

  라) 트랜잭션 처리 시 고려사항

  • 트랜잭션의 동시성 구현 : 트랜잭션의 동시 실행은 트랜잭션의 처리율과 시스템 이용률을 높이고 대기시간을 줄임으로써 동시성을 높일 수 있음
  • 트랜잭션 수행시간을 최대한 짧게 수행 : 긴 트랜잭션의 경우에 잠금(Lock) 수행시간이 길어져 충돌 현상 및 교착상태를 발생시킬 소지가 큼. 트랜잭션은 직렬성을 보장할 수 있도록 잠금(Lock)을 충분히 오랫동안 유지해야 하지만 동시에 성능을 저하하지 않도록 짧게 구성할 필요가 있음.

02. 동시성(병행)제어

  가) 트랜잭션의 직렬가능 스케줄의 정의

  • 직렬성을 가진 트랜잭션 스케줄이란 각각의 트랜잭션이 동시에 수행되더라도 그 결과가 순차적으로 트랜잭션이 수행된 결과와 같은 경우
  • 트랜잭션의 직렬화 수행 보장
 

  나) 동시성(병행) 제어의 정의

  • 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
  • 다중 사용자 환경을 지원하는 데이터베이스 시스템의 경우 필수적으로 지원해야 하는 기능으로 동시성(병행) 제어라고도 함

  다) 동시성(병행) 제어의 목적

  • 직렬가능스케줄(Serializable Schedule)의 생성 또는 트랜잭션들의 직렬가능성 보장
  • 공유도 최대, 응답시간 최소, 시스템 활동의 최대 보장
  • 데이터의 무결성 및 일관성 보장

  라) 동시성(병행) 제어를 하지 않았을 경우 발생하는 문제점

구분 내용
갱신 손실
(Lost Update)
- 트랜잭션들이 동일 데이터를 동시에 갱신할 경우 발생
- 이전 트랜잭션이 데이터를 갱신한 후 트랜잭션을 종료하기 전에 나중 트랜잭션이 갱신 값을 덮어쓰는 경우 발생
오손 데이터 읽기
(Dirty Read)
- 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조함으로써 발생하는 오류
- 현황파악오류
모순성
(Inconsistency)
- 두 트랜잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제
연쇄 복귀
(Cascading Rollback)
-복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능
반복할 수 없는 읽기
(Unrepeatable Read)
- 한 트랜잭션 내에서 같은 질의를 두 번 수행했는데, 그사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 경우 두 질의의 결과가 다르게 나타나는 현상

  마) 동시성(병행) 제어 기법들

  • 잠금(Lock) 기반 기법
  • 타임 스탬프 기반 기법
  • 다중버전 기법
  • 검증(낙관적) 기반 기법

  바) 2PL(2-Phase Locking) 기법이란

  • 직렬성 보장을 통해 동시성을 제어하는 2단계 잠금(Locking) 기법으로 Lock과 Unlock 연산을 확장단계와 수축단계로 구분하여 수행하는 2 PL 규약을 따른다.

        - 확장단계 : 트랜잭션은 Lock만 수행할 수 있고 Unlock은 수행할 수 없는 단계

        - 수축단계 : 트랜잭션은 Unlock만 수행할 수 있고 Lock은 수행할 수 없는 단계

  • 모든 잠금 연산(Read_Lock, Write_Lock)들이 최초의 unlock 연산보다 앞에 나오는 경우, 그 트랜잭션은 2단계 잠금 프로토콜을 준수한다.
  • 만일 모든 트랜잭션이 2단계 잠금 규약을 준수한다면, 모든 트랜잭션은 직렬성을 보장받게 되나 그 역은 성립하지 않는다.
  • 직렬가능성을 보장할 수 있는 규약으로 가장 많이 사용된다.

03. 트랜잭션 수준(Isolation Level)

  가) 완료되지 않은 읽기(Read Ucommitted)

  • 트랜잭션에서 처리 중인 아직 완료되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다.

  나) 완료된 읽기(Read Committed)

  • 트랜잭션이 완료되어 확정된 데이터만 다른 트랜잭션이 읽도록 허용한다.

  다) 반복 읽기(Repeatable Read)

  • 트랜잭션 내에서 질의를 두 번 이상 수행할 때, 첫 번째 질의에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지해준다.

  라) 직렬화(Serializable Read)

  • 트랜잭션 내에서 질의를 두 번 이상 수행할 때, 첫 번째 질의에 있던 레코드가 사라지거나 값이 바뀌지 않음은 물론 새로운 레코드가 나타나지도 않게 한다.
Isolation Level Dirt Read Non repeatable Read Phantom Read
레벨 0 Read Uncommitted 발생 발생 발생
레벨 1 Read Committed X 발생 발생
레벨 2 Repeatable Read X X 발생
레벨 3 Serializable X X X

04. 교착상태(Daedlock)

  가) 교착상태 정의

  • 다중처리 환경 또는 다중 트랜잭션 데이터베이스 시스템에서 다수의 프로세스 또는 트랜잭션이 특정 자원의 할당을 무한정 기다리고 있는 상태
  • 교착상태에 있는 트랜잭션들은 결코 실행을 끝넬 수 없으며 시스템 자원이 묶여있어서 다른 작업을 시작하는 것도 불가능하므로, 교착상태가 발생하면 반드시 시스템은 두 트랜잭션 중의 하나를 취소시켜야 한다.
  • 모든 트랜잭션이 실행을 전혀 진전시키지 못하고 무한정 기다리고 있는 상태

        - T1T2가 데이터 XUnlock 하기를 기다림

        - T2는 데이터 XLocking하고 있는 상태

        - T2T이 데이터 YUnlock 하기를 기다림

        - T1은 데이터 YLocking하고 있는 상태

구분 Deadlock(교착상태) Stravation(무한대기)
정의 다수의 프로세스가 아무 일도 못 하고 특정사건 무한대기 특정 프로세스가 자원을 할당받기 위한 무한정 대기 상태
발생원인 상호배제, 점유와 대기, 비선점, 환형 대기 자원의 편중된 분배정책
해결방안 예방, 회피, 발견, 회복 Aging 기법
 
  나) 교착상태 발생원인
 
원인 내용
상호배제(Mutual Exclusion) 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함
점유와 대기(Block & Wait) 프로세스가 어떤 자원을 할당받아 점유하고 있으면서 다른 자원을 요구
비선점(Non Preemption) 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없으며, 점유하고 있는 프로세스 자신만이 해제 가능
환형 대기(Circular wait) 프로세스 간 자원 요구가 하나의 원형으로 구성
  다) 교착상태의 해결방안
해결방안 내용
교착상태 예방
(Deadlock Prevention)
- 시스템이 교착상태에 빠지지 않도록 보장하는 규약 사용
- 시스템이 교착상태에 빠질 확률이 상대적으로 높을 때 사용
- 상호배제 예방, 부분할당 예방, 비선점 예방, 환형 대기 예방
- 회피기법 : 타임 스탬프를 사용하는 Wait-Die, Wound-Wait 기법
교착상태 탐지와 복구
(Deadlock detection & Recovery)
- 시스템이 교착상태에 빠질 수 있도록 하고 교착상태 탐지와 복구 기법을 이용하여 교착상태 해결
- Dection : 시스템의 상태 감시를 알고리즘을 통하여 교착상태 검사(Wait for Graph reduction, cycle dection, knot detection)
- Recovery : deadlock이 없어질 때까지 프로세스를 순차적으로 Kill 하여 제거함{희생자 선택(프로세스 최소 종료 비용을 계산), 롤백, 기아 상태}
 

 

관련 링크

 1. Topic >  동시성 제어(Concurrency Control)/병행 제어

 2. 합격답안 > [답안] 동시성 제어 필요성, 해결방법(1교시)

1.관계형 데이블 전환 및 테이블 설계

   가) 물리적 모델링에 대한 학계와 산업계의 이해 차이

구분 주요작업
학계 데이터 타입 정의, 인덱스 설계등
산업계 데이터 타입 정의, 인덱스 설계, 테이블 및 컬럼 정의, 기본키와 외래키 정의, 정규화 및 역정규화, 뷰설계, 분산 설계 등

   나) 관계형 테이블 전환

1.엔티티 타입의 변환   
2.악성 엔티티의 변환    
3.1:1 관계의 변환   
4.1:N 관계의 변환  
5.M:N관계의 변환  
6.다중치 속성의 변환 여러개이 값을 가질 수 있는 속성, 예) 전화번호 : 집전화, 휴대폰, 직장전화 등
7.N-ary 관계의 변환(N>2) 이항관계 ( R = { (철수,남자), (선희,여자) } ) 이상인 관계
8.일반화 관계의 변환

  다) 테이블 설계

테이블 유형 Heap Organized Table 테이블 내에서 레코드의 저장 위치는 특정 속성의 값에 기초하지 않고 해당 레코드가 삽입될 때 결정, 대부분 상용 DBMS에서 사용
  Clustered Index Table 기본키 값이나 인덱스 키 값의 순서로 데이터가 저장되는 테이블
  Partitioned Table 대용량 데이터에 대해 논리적으로는 하나의 테이블이지만 저장되는 물리적 테이블은 일정한 기준(범위값, 해쉬등)으로 나누어 저장함으로써 성능 저하를 막고 관리를 수월하게 할 수 있도록 만든 테이블
  External Table 외부 파일을 데이터베이스 내에 존재하는 일반 테이블 형태로 이용할 수 있도록 만든 데이터베이스 객체
  Temporary Table 트랙잰션이나 세션별로 데이터를 저장하고 처리 할 수 있는 테이블
테이블 설계 고려사항 1. 컬럼데이터 길이의 합이 1블록(box)보다 클경우 수직 분할 고려
2.특정컬럼의 사용 빈도의 차이가 클 경우 수직분할 고려
3.각기 다른 사용자 그룹이 특정 컬럼만을 사용하는 경우 수직분할 고려
4.수직분할을 고려할 때 트랜잭션이 동시에 처리되는 경우조인이 빈번하게 발생하는 경우가 없어야 함

 

2.테이터타입 설계

가) 문자형 데이터 타입 1.고정길이 문자형
2.가변길이 문자형
3.문자형 라지 오브젝트 : 문자형으로 된 대용량의 데이터를 저장하기 위해 만들어진 데이터 타입이며, 크기가 커서 실제 해당 타입의 컬럼을 테이블에 직접 저장하기 않고 테이블 외부에 저장되며, 테이블 컬럼에는 데이터 위치를 참조하는 주소만 저장한다. 책이나 출판물과 같은 많은 양의 텍스트를 저장할 때 유용하게 사용
나) 숫자형 데이터 타입 1.실수형
2.정수형
다) 이진형 데이터 타입 1.고정길이 이진형 데이터 타입
2.가변길이 이진형 데이터 타입
3.이진 라지 오브젝트 : 이미지 , 영상 , 음향과 같이 하나의 커다란 이진형 데이터를 저장할 수 있는 데이터 타입이며, CLOB과 마찬가지로 테이블 외부에 저장되며 실제 CLOB 컬럼에는 참조주소가 저장된다
라) 날짜형 데이터 타입 1.날짜형 데이터 타입

 

3.인덱스 설계

가) 인덱스의 기능 1.검색 연산을 빠르게 수행
2.데이터 수가 증가하다라도 검색 연산 속도에 큰 변화가 없다
3.인덱스는 인덱스를 생성한 컬럼 값으로 정렬되어 있으며, 테이블 내에 실제 값들이 저장한 위치를 갖고 있다.
4.인덱스의 가장 중요한 기능은 접근 경로를 단축함으로써 데이터의 탐색 속도를 향상시키는 것
나) 인덱스 설계 절차 1.접근 경로 수집
2.분포도 조사에 의한 후보 컬럼 선정
3.접근 경로 결정
4.컬럼 조합 및 순서 결정
다) 인덱스 구조의 유형 1.트리 기반 인덱스
2.함수 기반 인덱스
3.비트맥 조인 인덱스
4.도메인 인덱스

 

4.뷰 설계 

가) 데이터베이스 뷰의 특징 1.하나 또는 그 이상의 테이블에서 원하는 데이터만을 모아 가상적으로 만든 테이블
2.자주 사용되는 질의를 정의해 둠으로써 반복되는 데이터 조작을 효율적으로 수행
3.사용자가 관심을 가지는 데이터에만 촛점
4.계산된 정보나 파생된 정보를 보여 줄 수 있다
5.사용자가 볼 수 있는 데이터를 제한할 수 있다
나) 뷰의 생성 1.CREATE VIEW

2.WITH CHECK OPTION
   -뷰에 대해 수행되는 모든 데이터 수정 문장들이 뷰를 정의하는 SELECT문의 조건을 지키도록 함
3.WITH ENCRYPTION
   -암호화를 해제하려면 뷰를 삭제하고 다시 생성해야 함
4.제약사항
   -사용되는 엔티티에 대한 SELECT 권한이 있어야 함
   -SELECT INTO 문을 사용 할 수 없음
   -임시 테이블에 대한 뷰를 생성할 수 없음
   -트리거나 색인을 생성할 수 없음
   -최대 250컬럼을 참조할 수 있음
다) 뷰를 통한 데이터 수정 1.뷰는 별도의 데이터 복사본을 가지지 않는다
2.뷰에 대한 갱신은 항상 원본 데이블에 영향을 미친다
3.제약사항
   - 뷰에 대한 갱신은 하나의 테이블에만 영향을 미칠 수 있다
   - 계산된 값이나 내장함수, 계산함수를 포함하는 컬럼에 대해서는 뷰를 통한 갱신이 허용안된다
   - NOT NULL 컬럼을 가지는 테이블에 영향을 미치는 경우에는 오류를 유발
   - 입력되지 않는 컬럼들의 경우 디폴트 값이 정의 되어 있거나 NULL이 허용되어 있어야 함
라) 기타 고려사항 1.뷰를 정의한 후에 원본 테이블에 컬럼이 추가되면, 이 컬럼은 뷰에 추가되지 않는다
2.뷰 자체의 정의를 변경하려면 뷰 자체를 삭제하고 다시 정의해야한다
3.원본 엔티티가 삭제되어도 뷰가 자동으로 삭제되지 않으므로 직접 뷰를 삭제해야 한다

 

5.분산 데이터베이스

가) 분산 데이터베이스의 특징 1.정의 데이터베이스가 네트워크 상에 여러 컴퓨터에 물리적으로 분산되어 있지만, 사용자가 하나의 데이터베이스처럼 인식할 수 있도록 논리적으로 통합되어 공유되는 데이터베이스를 의미
2.관리시스템 여러 데이터베이스를 하나의 논리적인 데이터베이스로 인식하도록 하기 위해 각 지역 데이터베이스의 정보를 교환하고 관리해주는 시스템 의미

3.장점 - 자산의 데이터를 지역적으로제어하여 원격 데이터에 대한 의존도 감소
- 단일 서버에서 불가능한 대용량 처리가 가능
- 기존 시스템에 서버를 추가하여 점진적으로 확장 가능
- 한 사이트가 고장 나더라도 해당 사이트의 데이터만 사용하지 못하므로, 신뢰도와 가용성 향상
4.단점 - 분산 처리로 인해 복잡도가 증가하여 소프트웨어 개발 비용이 증가
- 통제 기능이 취약
- 분산 처리에 따른 오류 발생 가능성이 증가
- 데이터가 물리적으로 저장된 시스템의 상황에 따라 응답 속도가 불규칙 할 수 있음
- 데이터 무결성을 완전히 보장하기 어려움
나) 데이터 투명성 정의 여려 개의 물리적인 데이터베이스를 논리적인 단일 데이터베이스로 인식하려면, 사용자들이 데이터가 물리적으로 어디에 배치되어 있고 어떻게 접근해야 하는지 알 필요가 없어야 한다
  종류 분할 투명성 : 사용자는 전역 스키마가 어떻게 분할되어 있는지 알 필요가 없음
위치 투명성 : 사용자는 데이터 위치나 입력 시스템과 무관하게 동일 명령을 사용 접근 가능
중복 투명성 : 사용자는 논리적으로 하나처럼 인식되어야 함
장애 투명성 : 네트워크 장애가 발생하여도 데이터 무결성 보장 되어야 함
병행 투명성 : 다수 트랜잭션이 동시에 수행되어도 일관성 유지 성질 , Locking, 타임스탬프 두가지 방법을 주로 사용

 

+ Recent posts