컴퓨터공부

데이터베이스론 정리 (1/3) 데이터베이스 시스템의 개요

E.K.Lim 2018. 12. 28. 14:20

데이터베이스 시스템의 개요

전사 아키텍처

P/V업무아키텍처데이터 아키텍처애플리케이션 아키텍처기술 아키텍처
개괄적 관점기업 이념, 경영 방침
업무 주제 영역
CEO, 이사진
데이터 주제 영역
데이터 표준 정책 
개괄 데이터 모델
데이터 관리 정책, CIO
애플리케이션 정책
시스템구성도
CIO
전사 기술영역 모델
기반구조 구성도 
CIO
개념적 관점경영목표
업무영역
기획자, 관리자
데이터 영역
데이터 표준 원칙
개념 데이터 모델
요구사항/데이터표준 관리
데이터아키텍트, DBA
애플리케이션 원칙
애플리케이션 기능분할도
애플리케이션 프로세스사양서
애플리케이션 아키텍트
기반구조 관계도
기술 아키텍트
논리적 관점경영전략
관리대상업무
중간 관리자
논리적 데이터 요소
단어/용어사전
논리 데이터 모델
데이터 모델 관리
데이터 모델러
메시지 목록
애플리케이션 설계서
애플리케이션 목록
애플리케이션 설계자
기반구조 설계서
시스템성능 설계서
기반구조 설계자
물리적 관점경영전술
업무프로세스
업무매뉴얼
업무절차서
담당자
물리적 데이터 요소
도메인/코드사전
물리 데이터 모델
데이터 영향도 관리
데이터 모델러
코딩규칙
소스코드
애플리케이션 개발자
기술자원 목록
제품 목록
시스템 관리자
부가적 관점업무환경 조성
실무자
DB환경 데이터, DB 구성 목록
인덱스 디자인 차트
저장공간 설계도, DB설계도
DB, 운영자
애플리케이션 환경 조성
실행 모듈
애플리케이션 개발자
정보시스템 환경 조성
실무자

업무와 데이터, 데이터 표준

기업의 업무

  • 관리 대상 업무 : 개체들 사이에서 관계가 형성되어 데이터 흐름이 발생하는 것
  • 데이터 흐름이 발생하지 않는 하나의 개체에만 관련된 대상업무는 행위가 반복됨(회원비 납부 vs. 회원등록)
  • 핵심 줄기 업무 vs. 부수적인 업무
  • 업무 영역 - 업무 주제 영역 -> 업무 계층도와 기능 차트로 표현 

요구사항 수집과 분석

  • 프로젝트의 기준이 되는 업무 명세서를 생성하는 과정에서 명확한 대상 업무를 도출하여 확정
  • 업무 기술서(매뉴얼, 절차서), 제안요청서, 수행계획서 등에서 수집하거나 애플리케이션이나 홈페이지, DB 설계에 사용되었던 문서에서 수집, 실무 현장의 문서 및 설문조사, 워크샵에서 수집, 우수 경쟁사나 해외 기업의 벤치마킹, 문헌, 전문가를 통하여 수집
  • 업무 명세서와 같은 문서로 정리하는 것이 좋음
  • 업무행위 기반 분석 방법론: 문장에서 동사 추출 후 행위 중심으로 대상업무 도출 및 확정

데이터

  • 업무 규칙에 대한 4가지 규칙
    • 선택성(Selectivity)/참여도 : 인스턴스들이 관계에 대하여 참여하는 정도
    • 기수성(Cardinality): 한 인스턴스에 대하여 상대 인스턴스가 몇 개나 관련되어 있는지
    • 상속(Inheritance): 한 인스턴스가 상대 인스턴스에게 어떻게 정보를 넘겨주는가
    • 관계명(Relationship Name): 업무 관련성의 명칭
  • DB 환경 데이터: DBMS, 네트워크, 시스템 구조, 보안 관련 정보
  • DB 운영 데이터: DBA가 운영시 참조하는 데이터로 DB 환경 데이터, 백업과 복제 정보, 모니터링과 튜닝 정보, 권한 정보, 전사 데이터 관련 정보, 유지보수 정보, 관련업체 정보, 사용자 정보 및 이해관계자 정보
  • 저장 구조 관련 데이터: 논리(테이블스페이스, 세그먼트, 익스텐트 및 블록), 물리(데이터파일)
  • 데이터베이스 관련 데이터: 인덱스와 제약 조건

데이터 표준

  • 데이터 품질: 적합성, 적시성, 정확성, 완전성, 적절성 및 접근 가능성
  • 데이터 표준: 보통 사전으로 구성
    • 표준 단어: 사전적으로 문법상의 일정한 뜻을 가지는 말의 최소 단위. 단어사전에 정의
    • 표준 용어: 완전한 의미를 가지는 어휘로, 표준 단어의 조합으로 구성. 용어 사전에 정의
    • 도메인 사전: 엔터티의 속성이나 테이블 컬럼의 데이터 타입을 도메인으로 정의할 때 사용하는 사전
    • 코드 사전: DB와 App에서 사용되는 코드를 정의한 사전
    • 메시지 목록: 애플리케이션에서 사용하는 메시지들을 모아 표준화하여 목록화한 것

데이터베이스 시스템

데이터베이스

데이터 모델

  • 데이터 모델의 종류
    • 개괄 데이터 모델 : 업무 개요 판단 및 전반적 골격 이해, 생략하는 경우가 많음
    • 개념 데이터 모델 : 정보시스템의 데이터 구조에 대한 전체적인 개념 파악
    • 논리 데이터 모델 : 업무 데이터들을 구조화시켜 논리적 수준에서 모델화한 설계도
    • 물리 데이터 모델 : 논리 모델을 구현하기 위해 배치도 역할을 하는 모델

테이블

  • 데이터베이스와 물리모델의 차이: 컬럼들의 순서 및 인덱스 생성 여부
  • 데이터를 테이블에 저장하는 방식
    • 분리형(Heap) 테이블: 테이블 데이터와 인덱스 데이터가 분리되어 저장. 어떠한 컬럼에 의해서도 정렬되지 않는 유형. 삽입 성능은 좋지만 검색, 삭제 및 갱신 성능은 별로. 인덱스를 생성하여 성능 개선. 테이블 유형 중 가장 많이 사용하는 형태
    • 일체형(Index Organized) 테이블: 인덱스 데이터를 테이블에 함께 저장. 기본키에 대하여 B* 트리 인덱스를 구성하고 인덱스의 말단 노드(leaf node)에 데이터 행을 저장하는 방식. 기본 키를 중심으로 액세스할 때는 빠르지만 일반 컬럼을 액세스할 때는 비정렬 저장 방식과 동일. 삽입, 갱신, 삭제(기본 키 제외) 성능이 나쁨. 우편번호 테이블에 유리.
    • 클러스터형(Clustering) 테이블: 컬럼 값이 동일한 행을 저장하는 단위 저장 공간인 ‘클러스터’에 데이터를 저장. 중복이 심할수록 유리.
      • 인덱스 클러스터형: B* 트리 구조 사용, 중복이 많은 경우 유용
      • 해시 클러스터형: 해시 함수 사용, 균일 분포를 가지는 동등 비교에서 많이 사용
  • 파티션 테이블: 별개의 테이블스페이스를 지정하여 저장할 수 있어 분산 효과 극대화
    • 범위 파티션: 컬럼 값의 범위에 따라 행들을 분할하여 해당 파티션에 저장
    • 리스트 파티션: 파티션별로 저장될 수 있는 컬럼 값을 나열하여 해당 행을 파티션별로 저장
    • 해시 파티션: 해시 값이 동일한 행을 동일한 파티션에 저장
    • 복합 파티션: 복합하여 저장
  • 임시 테이블: 트랜잭션이나 세션별로 데이터를 저장하고 처리 (임시 저장용으로 사용)
  • 외부 테이블: Select, 조인, 정렬 등은 가능하나 수정, 삭제, 추가, 인덱스 생성 불가능. 주로 ETL 작업에서 많이 사용

인덱스

일반적으로 B* 트리 인덱스를 가장 많이 사용하고, DW처럼 중복이 많거나 OR 연산이나 NOT 연산을 많이 하는 경우에 비트맵 인덱스를 많이 사용

  • 분포도 : 동일 컬럼 값을 가진 행의 수 / 전체 행의 수 (작을 수록 좋다고 봄)

데이터베이스 관리 시스템과 데이터베이스 설계 툴

3단계 스키마 아키텍처와 데이터 독립성

  • 3단계 스키마 아키텍처: 사용자가 DBMS 내에서 스키마 단계를 시각화하는 수단

    • 외부 단계(뷰 단계): 외부 스키마 - 특정 사용자 그룹이 관심있는 데이터베이스 부분만 기술하고 나머지는 사용자그룹에게 숨김
    • 개념 단계: 개념 스키마 - 모든 사용자들을 위해 데이터베이스 전체 구조 기술. 물리적인 저장 구조를 숨기고 논리적 구조만 표현
    • 내부 단계: 내부 스키마 - DB의 물리적 저장 구조 기술, 액세스 경로도 함께 기술.
    • 외부-개념 사상: 개념 단계를 외부 단계에서 동일한 의미를 가진 단계에 대응시키는 것
    • 개념-내부 사상: 내부 단계를 개념 단계에서 동일한 의미를 가진 단계에 대응시키는 것
  • 데이터 독립성

    • 논리적 데이터 독립성: 외부스키마, 애플리케이션 변경없이 개념 스키마 변경 가능
    • 물리적 데이터 독립성: 개념스키마 변경없이 내부 스키마 변경 가능
  • 그러나 컴파일할 때 두 번의 사상을 거쳐야 해서 효율이 떨어지고 오버헤드 발생 가능 (따라서 대부분의 DBMS는 완전한 3단계-스키마 아키텍처 구현x)

오라클 구조

  • 인스턴스: DB를 액세스하는 수단. SGA와 백그라운드 프로세스로 구성
  • SGA(System Global Area): 사용자 정보를 공유하여 저장하는 메모리 영역
    • 공유 풀(Shared Pool)
      • 라이브러리 캐시 : 최근 실행된 SQL문과 PL/SQL문 저장
      • 데이터 딕셔너리 캐시: 최근 액세스된 DB파일, 테이블, 인덱스, 열, 사용자, 권한 및 DB 객체에 관한 정보들을 저장
    • 데이터베이스 버퍼 캐시: 데이터 파일에서 액세스된 데이터 블록의 복사본 저장
    • 리두 로그 버퍼: 데이터베이스가 비정상 종료되어 재시작될 때 복구를 위해 데이터블록의 모든 변경 내용들을 로그 형태로 저장
    • JAVA 풀과 대용량 풀도 추가로 가지고 있음
  • 백그라운드 프로세스 중 DBWn, LGWR, SMON, PMON, CKPT만 필수
    • DBWn(DB Writer n): 데이터베이스 버퍼 캐시에 저장된 데이터를 데이터 파일에 저장할 때 동작. 체크포인트 발생, 더티 버퍼가 가득찬 경우, 사용 가능 버퍼가 없는 경우, 시간 초과 및 기타 여러 가지 사유가 발생하면 동작
    • LGWR(Log Writer): 리두 로그 버퍼의 내용을 데이터베이스에 있는 리두 로그 파일에 저장할 때 동작하는 프로세스. 커밋의 발생, DBWn가 동작하기 전, 리두로그 버퍼가 1/3까지 찬 경우, 기타 사유시 동작
    • SMON(System Monitor): 비정상 종료된 데이터베이스가 재시작될 때 롤백이나 롤포워드를 수행하여 복구. 사용자가 액세스 가능하도록 데이터베이스 열기, 데이터 파일의 사용 가능한 공간 병합, 할당된 임시 세그먼트 해제 등도 수행
    • PMON(Process Monitor): 프로세스가 실패했을 때 사용자의 트랜잭션을 롤백시키고 사용자의 자원을 해제하여 다른 사용자가 사용 가능하도록 함
    • CKPT(Checkpoint) Process: 체크포인트 발생시 DBWn 프로세스에 알리고 데이터 파일 헤더와 제어 파일에 체크포인트 정보 갱신
      • 체크포인트 : 3초마다 데이터베이스 버퍼 캐시 데이터를 데이터베이스에 자동으로 저장할 때 이 때의 지점을 제어 파일에 저장하여 리두로그 파일에서 복구가 시작되는 위치를 식별할 때 사용

오라클 데이터베이스 구조

  • 테이블스페이스
    • 논리적으로는 여러 세그먼트, 물리적으로는 여러 데이터 파일로 구성
    • 하나의 테이블스페이스에 여러 객체의 세그먼트 저장 가능
    • 테이블과 인덱스는 서로 다른 테이블스페이스에 저장하는 것이 효율적
  • 세그먼트
    • 논리적으로 여러 익스텐트들이 모여서 구성- 익스텐트 단위로 초기화 및 증감
    • 객체의 인스텐트마다 구성되는 블록수가 다름
    • 데이터 세그먼트(테이블 데이터 저장), 인덱스 세그먼트(인덱스 데이터 저장), 언두 세그먼트(로그 저장), 임시 세그먼트(정렬 등 동작에서 임시 사용) 등이 있음
  • 익스텐트: 물리적 데이터 파일의 구성 단위
  • 블록: 기본적으로 8kb로 설정하여 실제 데이터를 저장
  • ROWID: 행식별자. 객체번호+상대파일번호+블록번호+블록내 슬롯번호