[Data] Database 기초 다기지 - DBMS의 종류와 구조, 특징 (Ft. 데이터 무결성, 옵티마이저, 트랜잭션)

    Database 기초 다지기 3번째 글입니다.
    데이터 베이스 관리 시스템에 대해 소개한 글에 이어
    데이터 베이스 관리 시스템의 종류와 특징을 정리해 볼게요.

    데이터 베이스나 데이터 베이스 관리 시스템에 대해 궁금한 점이 있으시면 아래 링크를 참고하세요.

     

    [Data] Database기초 다지기 - 데이터 베이스란? (Ft. DIKW, Literacy, DB)

    데이터 베이스 기초 데이터 리터러시 DIKW 피라미드란? DIWK 피라미드는 Data, Information, Knowledge, Wisdom로 구성되어 있습니다. 이는 데이터, 정보, 지식을 통해 지혜를 얻어내는 과정을 계층적 구조로

    kay-dev.tistory.com

     

    [Data] Database 기초 다지기 - 데이터 베이스 관리 시스템이란? (DBMS)

    Database 기초 다지기 2번째 글입니다. 데이터 베이스에 이어서 데이터 베이스 관리 시스템에 대해 정리하겠습니다. 데이터 베이스에 대해 궁금한 점이 있으시면 아래 링크를 참고하세요. [Data] Data

    kay-dev.tistory.com


    DBMS의 종류와 특징

    DBMS의 종류

     

    DBMS의 종류

    DBMS의 종류는 7가지로 분류할 수 있습니다. 위처럼 말이죠. (파일 시스템 제외)
    DMBS 등장 전에는 파일 시스템을 사용했습니다.
    그리고 계층형 DBMS의 등장 후 관계형 DBMS를 거쳐 NoSQL까지 등장했죠.
    각 종류마다 장점과 단점이 있으며, 최근에 개발된 DBMS만 사용하는 것은 아닙니다.


    DBMS의 구조

    앞서 소개한 DBMS를 종류별로 자세히 들여다보겠습니다.

    계층형 DBMS (HDBMS)

    HDBMS

    계층형 DBMS는 Hirearchical DBMS(HDB)라고 합니다.
    데이터를 종속적 관계로 계층화해 관리하는 DBMS입니다.
    한 데이터는 필드로 구성되며 다른 데이터들의 포인터로 구성되어 있습니다.

    장점은 빠른 접근 속도이며, 단점은 데이터 변화에 대한 유연성이 낮다는 점입니다.


    네트워크형 DBMS (NDBMS)

    NDBMS

    네트워크형 DBMS는 Netowrk DBMS(NDBMS)입니다.
    망형의 네트워크 구조로 데이터를 관리하는 데이터 베이스죠.
    데이터에서 부모 데이터의 포인터도 관리할 수 있다는 특징이 있습니다.

    장점은 데이터 변화에 대한 유연성이 좋다는 점이고, 단점은 데이터 모델링이 복잡하다는 점입니다.


    관계형 DBMS (RDBMS)

    RDBMS

    관계형 DBMS는 Relational DBMS(RSBMS)라고 하죠.
    가장 일반적으로 사용하는 DBMS 중 하나입니다.

    데이터 간 관계 구조를 관리하는 데이터 베이스입니다.
    데이터의 집합을 테이블로 구성한다는 특징이 있어요.

    위 그림을 예로 들어볼게요.
    고객, 주문, 배송업체에 대한 큰 데이터 집합은 서로 관계가 있습니다.
    고객 정보의 고객 ID와 주문 정보의 고객 ID 같이 말이죠.
    그리고 각 데이터 집합은 테이블로 구성해서 관리합니다.

    장점은 동적 변화로 유연성이 높다는 점이고, 반복 그룹과 자료형의 한계는 단점입니다.
    대표적으로 오라클, MS SQL 서버, Access, 인포믹스, MySQL 등이 있습니다.


    객체지향 DBMS

    OODBMS

    객체지향 DBMS는 Object Oriented DBMS(OODBMS)입니다.
    데이터를 객체화해서 관리한다는 특징이 있죠.

    객체 재사용, 캡슐화, 상속 가능, 멀티미디어 지원 등의 장점이 있고,
    데이터 모델링이 복잡하다는 단점도 있습니다.


    객체관계 DBMS

    ORDBMS

    객체관계 DBMS는 Object Relational DBMS (ORDBMS)입니다.
    기존의 RDB에 객체의 개념을 적용해 "객체 DBMS" + "관계 DBMS"의 특징을 모두 갖고 있죠.
    개발자가 데이터형을 정의할 수 있으며,
    RDBMS의 단점인 반복 그룹과 자료형 한계를 극복했으며, OODBMS보다 데이터 모델링이 용이합니다.

     


     

    DBMS의 특징

    앞서 소개한 DBMS 대표적인 3가지에 대해서 특징을 알아볼게요.

    • 관계형 DBMS (RDBMS)
      • 저장 자료: 문자형 데이터 위주
      • 자료 모델: 데이블 구조, Primary Key
      • 자료형: 미리 정의된 일반 정보 타입
      • DB 접근 방식: SQL 질의어 사용
      • 장점: 시스템의 안정성과 대규모 트랜잭션 처리
      • 단점: 복잡한 정보 수용을 위한 모델 적용이 제한적
    • 객체형 DBMS (OODBMS)
      • 저장 자료: 데이터와 연관 프로그램 저장
      • 자료 모델: 객체 간 포인팅 방식, 객체 식별(OID)
      • 자료형: 비정형 객체 타입
      • DB 접근 방식: OQL (Objec Qurey Language)
      • 장점: 복합 비정형 데이터 모델 적용
      • 단점: 데이터 베이스 기본 기능이 미약해 안정성 및 성능 검증 미흡
    • 객체관계 DBMS (ORDBMS)
      • 저장 자료: 데이터 연관 프로글매 저장
      • 자료 모델: RDBMS + OODBMS
      • 자료형: 사용자 정의 및 비정형 객체 타입
      • DB 접근 방식: SQL 확정 질의어 (SQL3)
      • 장점: 관계형의 안정성과 객체지향 모델의 복합적 요소를 가진 모델 적용
      • 단점: 표준화의 부재

     

     


    DBMS 참고

    데이터 무결성 (Integrity)

    이전 글에서 간단하게 살펴본 "데이터 무결성"입니다.
    데이터 무결성은 데이터의 정확성, 일관성, 유효성을 의미하죠.
    데이터가 결함 없이 정확하고 일관되게 유지되는 것을 의미합니다.

    데이터 무결성에는 몇 가지 제약조건들이 있습니다.

    • 개체 무결성
      • 개체 무결성은 Primary Key에 대한 조건입니다.
        NULL 무결성과 헷갈리지 않게 주의하세요.
      • 예: '사원' 릴레이션*에서 '사번'이 Primary Key라면 '사번' 속성은 NULL이 되면 안 됩니다.
    • 참조 무결성
      • 외래키** 값은 NULL이거나 참조하는 릴레이션의 Primary Key값과 동일해야 합니다.
      • 예: '근태' 릴레이션에서 '사번' 속성에는 '사원' 릴레이션의 '사번' 속성에 존재하는 값만 입력해야 합니다.
    • 도메인 무결성
      • 속성들의 값은 정의된 도메인에 속한 값이어야 합니다.
      • 예: '직급' 속성은 '사원' ~ '사장'에 속하지 않는 데이터는 입력되면 안 됩니다.
    • 고유 무결성
      • 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우
        릴레이션의 각 튜플이 가지는 속성 값들은 서로 달라야 합니다.
      • 예: '사원' 릴레이션에서 '이름'과 '나이'는 서로 같은 값이 올 수 있지만
        '사번'은 각 튜플이 서로 다른 값을 가져야 합니다.
    • NULL 무결성
      • 릴레이션의 특정 속성 값은 NULL이 될 수 없습니다.
      • 예: '사원' 릴레이션의 '연봉' 속성을 NULL이 올 수 없게 정의했으면 NULL 값이 올 수 없습니다.
    • 키 무결성
      • 각 릴레이션은 최소한 1개 이상의 키가 존재해야 합니다.

    * 릴레이션: RDBMS에서 정보를 구분해 저장하는 기본단위 (DB 테이블)
    ** 외래키: 참조되는 릴레이션의 Primary Key와 대응되어 릴레이션 간의 참조 관계를 표현하는 도구


     

    옵티마이저 (Optimizer)

    옵티마이저 역시 앞선 글에서 간단히 소개했죠.
    이번 글에서 보다 자세히 다루겠습니다.

    옵티마이저 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다.
    사용자가 제안한 SQL Query를 가장 효율적으로 실행하기 위해 계획을 세우고 수행하는 역할을 합니다.

    옵티마이저는 크게 2가지로 분류할 수 있습니다.
    특징들을 먼저 비교해 보죠.

    • 규칙 기반 옵티마이저 (Rule Based Opitmizer, RBO)
      • 개념: 사전에 정의된 규칙을 기반으로 함
      • 기준: 실행 우선순위 (Ranking)
      • 인덱스: 인덱스가 존재하면 가장 먼저 사용
      • 성능: 사용자의 SQL 숙련도에 따라 다름
      • 장점: 매우 규칙적으로 판단하며 예상이 가능
      • 단점: 예측 통계 정보 요소를 무시
      • 사례: AND 중심 양쪽 "=" 시 Index Merage 사용
    • 비용 기반 옵티마이저 (Cost Based Optimizer, CBO)
      • 개념: 최소 비용 계산 실행 계획 수립
      • 기준: 액세스 비용 (Cost)
      • 인덱스: Cost에 의한 결정
      • 성능: 옵티마이저 예측 성능
      • 장점: 통계 정보를 반영해 현실적인 요소를 적용함
      • 단점: 최소한의 성능을 보장할 계획의 예측 제어가 어려움
      • 사례: AND 중심 양쪽 "=" 시 분포도별 Index 사용

    규칙 기반 옵티마이저는 오라클8 이하에서 기본 설정된 옵티마이저입니다.
    말 그대로 실행 속도가 빠른 순으로 미리 규칙을 세워두고, 이를 기준으로 우선순위를 비교해 실행합니다.
    과거의 옵티마이저는 비용예측의 성능이 우수하지 못해 규칙을 미리 정하는 방식을 사용했죠.

    비용 기반 옵티마이저는 오라클10 이후부터 적용된 방식입니다.
    이름 그대로 여러 실행 계획 중 비용이 최소인 계획을 수행하죠.
    이때 통계 정보를 이용하는데, 이는 규칙 기반 옵티마이저와 다른 점이면서 동시에 한계점이 되기도 합니다.
    통계 정보가 없는 경우에는 비효율적인 실행 계획을 생성할 수 있기 때문이죠.


    트랜잭션 (Transaciton)

    마지막으로 트랜잭션입니다.
    트랜잭션이란 데이터 무결성을 보장하기 위한 하나의 논리적 기능을 수행하는 작업 단위죠.
    트랜잭션의 4가지 성질 (원자성, 일관성, 고립성, 지속성)은 이전에 다뤘으므로 용어와 상태에 대해 볼게요.

    Commit 연산은 작업이 성공적으로 끝난 1개의 트랜잭션에 대해 DB가 일관된 상태로 돌아갔을 때,
    해당 트랜잭션에 의한 갱신 연산이 완료된 것을 알리는 연산입니다.

    Rollback 연산은 비정상적으로 종료된 하나의 트랜잭션에 의해 DB의 일관성이 유지되지 못한 경우,
    해당 트랜잭션이 정상 처리한 일부 기능이 있더라도 이를  무시하고, 트랜잭션 이전의 상태로 돌리는 연산입니다.

    Actiavate는 트랜잭션이 실행 중인 상태를 의미하죠.
    Failed는 트랜잭션 실행 중 오류가 발생해 중단된 상태입니다.
    Aborted는 트랜잭션의 비정상적인 종료에 의해 Rollback 연산이 수행된 상태입니다.
    Partially Commited는 하나의 트랜잭션이 마지막 기능까지 정상적으로 수행해 Commit 연산만 하면 되는 상태입니다.
    Committed는 트랜잭션이 성공적으로 종료되어 Commit 연산까지 실행한 후의 상태입니다.


    DBMS의 종류와 구조, 특징에 대해 알아봤습니다.
    제 글이 도움이 되면 좋겠습니다.
    감사합니다.😊

    댓글

    Designed by JB FACTORY