Lecture 02, 데이터베이스의 구조

2023. 6. 25. 13:112023/데이터베이스개론

서울여자대학교 이종태 교수님의 데이터베이스 개론 수업을 듣고 정리한 내용입니다.


  • 데이터베이스 시스템의 구성요소
    • 데이터베이스
      • 시스템적으로 접근했을 때 저장소 그 자체를 말함
    • 데이터베이스 관리 시스템
      • DB를 관리하는 소프트웨어
    • 데이터베이스 시스템
      • DB, DBMS를 모두 포함하는 개념
      • 데이터베이스 사용자, 데이터 언어
      • DB에 대한 다양한 접근 요층을 실행하기 위한 데이터베이스 서버
  • 데이터베이스 사용자
    • 일반사용자 = end user
      • 컴퓨터나 데이터베이스에 대한 전문 지식 없이 데이터베이스를 접근하는 사용자 유형
      • DB, DBMS에 대한 기초지식에 따라 사용자를 나눌 수 있음
      • 관련 자격증과 인증: SQLD
    • 응용 프로그래머
      • 데이터베이스 전문 지식을 가지고 응용프로그램을 개발할 목적으로 DB에 접근하는 사용자
      • C, Java, PHP, Python과 같은 프로그래밍 언어를 사용하는 전문 개발자
      • 작성한 응용프로그램 안에 데이터 언어나 DBMS 실행 명령어 작성 능력을 갖춘 사용자
      • 관련 자격증: SQLD, SQLP
    • DBA
      • 데이터베이스를 구축하고 데이터베이스 시스템을 자체적으로 운영, 통제하는 특별한 소수의 사용자 유형
      • DBMS의 슈퍼 사용자 겸 관리자
      • DBMS의 다양한 기능들을 활용함으로써 데이터베이스의 설, 구축, 서비스, 운영, fine tuning 담당
      • 관련 자격증 및 인증: SQLP, OCP, MCDBA
      • DBA의 경우 프로그래밍 능력이 있으면 좋으나 SQL 활용 능력, 모델링능력, DBMS 활용 능력은 뛰어나야 함
    • DBA의 주요 역할 - 기술적, 비 기술적 지원
      • 데이터베이스 시스템의 구성 요소를 선정
      • 데이터베이스 구조를 정의
      • 물리적 저장 구조와 접근 방법 결정
      • 무결성 유지를 위한 제약 조건의 정의
      • 보안 및 접근 권한 정책 결정
      • 백업 및 회복 기법 정의
      • 시스템 데이터베이스 관리
      • 시스템 성능 감시 및 성능 분석
      • 데이터베이스 재구성
      • 데이터베이스 관련 의견 조정과 분쟁 해결
    • 데이터베이스 언어
      • 데이터베이스 사용자와 응용프로그램은 DBMS를 통해서만 데이터베이스에 접근할 수 있음
      • 데이터 언어는 DBMS에 요쳥 내용을 전달하기 위한 의사 전달 수단/도구
      • 일반적으로는 RDBMS의 표준 데이터베이스 언어인 SQL을 의미
      • 데이터 언어는 사용목적에 따라 3가지 명령어 그룹으로 분류함
        • DDL(Data Definition Language)
          • 데이터베이스 구조를 새로 정의하거나 기존 데이터 베이스 구조를 변경하는 명령어 집합
          • 데이터 베이스 구조를 표현하는데 데이터 스키마를 define하기 위해 사용함
            • Create: 데이터베이스의 생성
            • Alter: 데이터베이스의 변경을 위한 명령어
            • Drop: 데이터베이스의 제거
            • Show: 데이터베이스의 구조, 생성문, 권한 등을 보여줌 → 메타데이터를 확인할 수 있음
            • Use: 데이터베이스의 사용
            • 일부 사용자들 중 DML을 사용할 수 있는 유저도 있음
          • DBA나 응용 프로그래머가 주로 사용함
        • DML(Data Manipulation Language)
          • 데이터베이스 안의 데이터를 실제 조작하는 명령어의 집합
          • DBMS에게 데이터의 입력, 수정, 삭제 및 검색을 요청하기 위해 사용함
            • Select A from B where C
            • Insert A into B
            • Update B Set A where C
            • Delete from B where C
          • 응용프로그래머, DBA, 일반 사용자 등이 모두 사용
          • SQL을 직접 입력하지 않고 Tool이나 자체 개발 프로그램을 쓰는 경우가 많아짐
        • DCL(Data Control Language)
          • 데이터베이스를 제어하고 통제하기 위해 사용하는 명령어 집합
          • 데이터베이스가 안전하게 오류 없이 동작하고 성능을 유지하도록 관리하는 명령어
          • 각종 허가, 제약, 옵션을 설정함으로서 DBMS가 데이터베이스를 올바르게 관리하도록 함
            • 동시성 제어(Currency Control)
            • 장애 회복(Recovery)
            • 데이터의 무결성(integrity)
            • 보안(Security)
          • 권한 부여, 회수, 트랜젝션 처리와 취소 등을 주로 수행
            • Grant A on B to C
            • Revoke A on B to C
            • Show Grants for C
            • Commit / Rollback : 앞서 진행된 명령의 실행을 최종 확인 및 허가, 취소하는 명
      • DB만을 위한 특수한 언어이며, Non-Procedural한 특성때문에 4세대 언어(객체지향)로 분류되기도 함
  • DBMS의 정의와 구성요소
    • Database Management System
      • 데이터베이스를 효율적으로 관리하고 데이터 요청을 처리하기 위한 소프트웨어, 시스템
      • 일종의 Middle Wear
    • DBMS의 핵심 구성 요소
      • 질의 처리기
      • 런타임 데이터베이스 처리기
      • 데이터 저장 관리
    • 필수 기능은 정의, 조작, 제어 기능으로 설명됨
      • 정의
        • 데이터를 저장하는 통합 데이터베이스 구조를 생성하거나 이미 생성된 구조를 삭제 또는 변경
      • 조작
        • 데이터베이스 안에 저장된 데이터에 접근하여 원하는 데이터를 조작할 수 있도록 함
        • 사용자의 다양한 입력, 수정, 삭제 및 검색 요청을 효율적으로 처리
      • 제어
        • 여러 사용자가 동시에 다양한 목적으로 접근하더라도 항상 데이터를 정확하고 안전하게 유지하도록 통제
        • 사용자 별 보안과 권한 설정, 데이터 조작 과정 중 동시성과 무결성을 유지, 백업 및 장애 시 회복 조치 제어
  • 데이터베이스 서버
    • 데이터베이스가 구동되는 서버의 역할을 하는 컴퓨터
    • 클라이언트/서버 컴퓨팅 환경
      • 시스템 부하가 매우 크기에 데이터베이스 시스템을 독립 서버로 운영하고 사용자나 응용 프로그래머는 클라이언트 컴퓨터를 통해 접근함
      • 최근에는 직접 구현하기보다는 클라우드나 호스팅 서버로 제공하는 경우가 많아짐
      • 데이터베이스 서버 안에는 데이터베이스가 물리적으로 저장되며, DBMS가 설치되어 다양한 요청이 처리됨
    • 전통적으로 데이터베이스 서브는 고성능 사양을 요구하지만, 최근에는 성능 개선과 가격 하락으로 상대적으로 저렴한 일반 컴퓨터를 데이터베이스 서버로 활용하는 것도 가능(한계 존재)
  • 데이터 모델
    • 데이터베이스에 대한 요구와 종류에 따라 다양한 저장 구조를 정의하기 위한 프레임워크
    • 데이터를 저장하기 위해서는 체계화된 구조가 필요
    • 데이터 모델의 종류
      • 계층형 데이터 모델
        • 데이터 사이의 연관 관계를 물리적 위치 정보인 포인터로 저장하는 방식
        • 트리 형태의 계층 구조를 가지며, 하나의 부모 아래에 복수의 자식 계층이 이어지는 구조
        • 검색 속도가 빠르기 때문에 일대다 관계를 갖는 대용량 데이터베이스 처리에 유리함
        • n:n 구조는 구현하기 어려움
        • NoSQL이나 RDBMS로 대체되고 있으며 데이터베이스 자체보다는 XML구조 등의 표현에서 활용
      • 네트워크형 데이터모델
        • 데이터 사이의 연관 관계를 포인터로 표현하는 저장방식
        • 계층형 모델의 단점을 보완하여 트리구조를 네트워크 형태로 변환한 모델
        • 검색속도가 빠르고 다대다 표현이 가능함
        • 데이터의 저장을 위한 물리적 구조를 이해해야 함
        • 구조 변경 시 응용 프로그램까지 변경해야 함
        • 데이터 구조가 매우 복잡해질 수 있어 NoSQL이나 RDBMS로 대체되고 있음
      • 관계형 데이터 모델
        • 테이블 형태의 저장구조를 가지며 데이터 사이의 연관 관계를 테이블의 키와 열을 통해 표현함
        • 연관된 데이터 사이에 기본키와 외래키를 통해 논리적 관련성을 표현함으로써 유연하고 이해하기 쉬움
        • 일반적으로 가장 많이 활용되는 데이터 모델링
      • 객체 지향형 데이터 모델
        • 객체 단위의 저장 구조를 가지며 연관된 데이터 사이의 관계를 객체 식별자(Object IDentifier)로 표현함
        • 클래스, 상속, 자료 추상화 등의 객체 지향 개념과 데이터베이스 개념을 통합하여 실제와 비슷하게 모형화
        • 구조적 측면에서 계층형 또는 네트워크형 데이터 모델과 비슷
        • 객체 지향 언어의 상속, 캡슐화 등의 개념을 저장구조에 도입
        • UML의 Class Diagram이 대표적인 구현 형태
        • RDBMS, NoSQL과 결합한 형태로도 구현
      • 객체 관계형 데이터모델
        • 관계형 데이터 모델을 기반으로 객체 데이터 모델의 객체 특성을 반영
        • RDBMS의 강자인 Oracle이 주도하였으며, 결과적으로 ORDBMS가 사실상 차세대 표준화 되고 있음
        • 범용적 관계형 데이터 모델을 기반으로 하고 필요할 경우, 객체 개념을 추가로 지원하는 방식
      • NoSQL
        • Not Only SQL, Non Relational SQL
        • DB의 구현을 문서, column, 그래프, Key-Value 등의 형태로 구현할 수 있음
        • Schema-less & Trade-Off(일관성을 포기하고 확장성을 늘림)
        • ODBMS와 개념적으로 유사점이 있음
    세대 데이터모델 데이터베이스 DBMS 예
    세대 데이터모델 데이터베이스 DBMS
    1세대 계층형(Hierachical) HDB HDBMS IMS
    네트워크형(Network) NDB NDBMS IDS, CODASYL
    2세대 관계형(Relational) RDB RDBMS System R, Ingres, POSTGRES, Sybase, Access, Informix, DB2, Oracle, MS SQL Server, MySQL
    3세대 객체지향형(Object) OODB OODBMS O2, ONTOS, GemStone, ObjectStore
    객체관계형(Oject-Relational) ORDB ORDBMS Informix Universal Server, UniSQL, Oracle
    4세대 Non-Relational NoSQL NoSQL DBMS mongoDB, CouchDB, Redis, Dynamo, Cassandra
  • Schema
    • 데이터베이스 중에서도 RDBMS 관점에서 강조되는 것
    • 데이터베이스 안에 저장되는 데이터 구조와 제약조건 등을 정의
    • 동일한 데이터베이스라도 접근 관점에 따라 스키마는 다를 수 있음
    • 주로 데이터 구조 위주로 표현하며, 스키마의 세부 제약조건보다는 relation 구조만 간략하게 표현함
    • ANSI에서 제시한 방법
      • ANSI/SPARK 3단계 아키텍쳐, 1978년
      • 데이터베이스를 보는 관점 3개의 단계로 분리하여 설명
      • 외부 단계(개별)
        • 사용자가 외부에서 바라보는 관점에서 데이터베이스 구조를 정의함
        • 일반 사용자나 응용 프로그래머 차원에서 접근하는 일부 논리적 부분을 표현
        • 일부만 대상으로 한정하여 명세한 구조, 서브 스키마라고도 부름
        • 각 사용자별 관점을 반영하기 때문에 여러 외부 스키마가 존재함
      • 개념 단계(통합)
        • 모든 사용자들의 관점을 통합하여 전체 관점에서 데이터베이스 구조를 정의
        • 데이터베이스 관리 차원에서 접근하는 통합된 데이터베이스의 논리적 부분을 표현
        • 일반적으로 스키마라고 불리는 것이 개념 스키마임
        • 조직이나 기관의 데이터베이스 전체를 define한 구조로 하나의 데이터베이스에는 하나의 개념 스키마가 존재함
      • 내부 단계(저장)
        • 저장장치의 관점에서 전체 데이터베이스의 내부 구조 정의
          • 개념 스키마의 시스템 내부 저장 방식
        • 내부 레코드의 형식이나 배치 방법, 인덱스 등에 대한 define을 포함
        • 실제 장치의 물리적 저장방식이나 구조를 define한 것은 아님
        • 내부 스키마도 데이터베이스 당 하나만 존재
    • 일반적으로 하나의 데이터베이스 안에는 여러개의 테이블 존재
    • 특정 테이블 구조를 define한 것을 테이블 스키마 라고 함
    • 테이블 스키마를 모으면 데이터베이스 스키마가 됨
  • 데이터 사전, 메타데이터, 데이터 디렉토리
    • DBMS는 스키마와 스키마 매핑정보를 데이터 사전이라는 별도의 저장소에 관리함
    • 데이터 사전에 저장된 데이터를 메타데이터라고 함
      • 일반 사용자도 검색할 수 있으나 변경은 DBMS만 가능
    • 시스템 데이터베이스 또는 시스템 카탈로그
      • 데이터 사전
        • 다양한 데이터베이스 객체(테이블, 열, 뷰, 인덱스, 사용자 권한 등)에 관한 모든 데이터를 포함함
        • DBMS가 스스로 생성하고 유지함
        • 사용자뿐만 아니라 시스템 관리를 위해서도 필요한 저장공간으로 그 자체가 하나의 데이터베이스임
      • 데이터 디렉토리
        • 사용자가 접근할 수 없음
        • 데이터 접근에 필요한 위치 정보를 저장하는 저장소
  • 데이터의 독립성
    • 3단계 데이터베이스 구조를 통해 응용프로그램과 데이터 사이의 독립성을 유지할 수 있음
    • 데이터 독립성은 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 직접 받지 않는 특성을 이야기함
      • 파일 시스템의 단점과 관련하여 생각해보기
    • 반대로 데이터베이스에 영향을 미치지 으면서 응용프로그램을 수정할 수 있어야 함
    • 각 단계의 스키마 사이에 적절한 내부 매핑을 하면 하위 스키마가 변경되더라도 상위 스키마에 영향을 주지 않도록 함
    • 외부/개념 mapping
      • 논리적 독립성을 제공함
      • 외부 스키마를 변경하더라도 전체 개념적 스키마는 변경되지 않거나 변경 내용을 최소화 함
      • 다른 응용 프로그램에 주는 영향을 없애거나 최소화
      • DBMS에 의해 수행되는 외부/개념 mapping = 하나의 개념 스키마를 여러 외부 스키마 형태로 매핑하여 구현
    • 개념/내부 mapping
      • 물리적 데이터 독립성 제공
      • 물리적 구조의 변경으로 내부 스키마가 수정되더라도 연관된 개념-내부 mapping 정보만 수정하고 상위 스키마에 대한 영향은 최소화 할 수 있음
      • 개념 스키마에 영향을 최소화 하면서 데이터베이스의 물리적 구조를 변경할 수 있음