DB 구조와 유형

김나영·2023년 7월 5일
0

CS

목록 보기
1/12

컴퓨터와 데이터베이스

데이터베이스 이해

  • 데이터를 구조화하고 연결시키는 기능 제공

  • 테이블, 레코드, 필드 등의 개념을 사용하여 데이터를 구성하고, 데이터를 효율적으로 관리하고 검색 가능

  • 데이터베이스 시스템을 사용하면 데이터의 일관성, 무결성, 안전성을 유지하며 복잡한 데이터 조작 작업을 간편하게 수행 가능

    • ex) 도서관리 시스템

데이터베이스란?

  • 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합됨

  • 데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정됨

    • ex) 카카오톡 메세지(메세지의 구성요소들이 다름)
  • 데이터의 대규모 저장소로서, 여러 사용자에 의해 동시에 사용됨

  • 모든 데이터가 중복을 최소화하면서 통합됨

  • 운영 데이터뿐만 아니라 그 데이터에 관한 설명까지 포함

    • 데이터베이스 스키마(데이터베이스의 구성 방식이나 구성 요소들) or 메타데이터(metadata)
  • 프로그램과 데이터 간의 독립성이 제공됨

    • 프로그램 메모리가 아닌 개별적인 저장공간에 저장되고 개별적인 프로세스에 의해 동작되기 때문에
  • 효율적으로 접근이 가능하고 질의를 할 수 있음

    • 질의는 엑셀의 수식 기능과 비슷하다고 생각하면 됨
    • ex) a열의 1열 ~ a열의 20열까지 값들 중 가장 최고 값을 구해라, Query, 최대값이나 어떤 값을 조회할때 조건절을 통해서 조회할 수 있는 것

데이터베이스 관리 시스템(DBMS : Database Management System)

  • 데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 소프트웨어

  • ex) DB : MongoDB, DBMS : MongoDB 컴퍼스(질의 생성, 리포트 생성하는 등 데이터를 정의할 수 있는 동작을 하는 관리시스템)

데이터베이스 스키마

  • 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않음

  • 데이터베이스의 모든 가능한 상태를 미리 정의

  • ex) 사람 데이터는 이름, 키, 몸무게, MBTI 필드를 가짐

  • ex) DEPARTMENT 데이터는 DEPTNO, DEPTNAME, FLOOR 필드를 가짐

  • ex) EMPLOYEE 데이터는 EMPNO, EMPNAME, TITLE, DNO, SALARY 필드를 가짐

  • 데이터베이스의 상태

    • 특정 시점의 데이터베이스의 내용을 의미하며, 시간이 지남에 따라 계속해서 바뀜

    • 데이터베이스에 수정이 일어날 때마다 상태가 바뀜

  • 개발팀의 층수가 변하거나 없어졌을 때 수정이나 삭제가 발생할 것이고 그럴때마다 데이터베이스의 상태가 바뀌게 됨

  • ###데이터베이스 시스템(DBS : Database System)

    • DB, DBMS, USER를 포함한 가장 큰 범위

  • 데이터베이스

    • 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임

      • 하나의 데이터베이스 서버는 데이터베이스를 통해서 여러 응용 시스템들이 공유해서 사용할 수 있는 저장소로서의 역할을 할 수 있음
    • 시스템 카탈로그(또는 데이터 사전, data dictionary)와 저장된 데이터베이스로 구분할 수 있음

    • 시스템 카탈로그(System Catalog)는 저장된 데이터베이스의 스키마 정보를 유지

  • DBMS

    • 데이터베이스 언어라고 부르는 특별한 프로그래밍 언어를 한 개 이상 제공

    • SQL은 여러 DBMS에서 제공되는 사실상의 표준 데이터베이스 언어

    • 기능

      • 사용자가 새로운 데이터베이스를 생성
      • 데이터베이스의 구조를 명시
      • 사용자가 데이터를 효율적으로 질의하고 수정할수 있도록 함
      • 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호
      • 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어

  • 하드웨어

    • 디스크와 같은 보조 기억 장치에 저장되며, DBMS에서 원하는 정보를 찾기 위해서는 디스크의 블록들을 주기억 장치로 읽어들여야 함

    • 계산이나 조합 및 비교 연산들을 수행하기 위해 중앙 처리 장치가 사용됨

    • DBMS 자체도 주기억 장치에 적재되어 실행되어야 함

      • 하나의 응용 프로그램이랑 비슷한 단위
  • 데이터베이스 시스템의 요구사항

    • 데이터 독립성
    • 효율적인 데이터 접근
    • 데이터에 대한 동시 접근
    • 백업과 회복
    • 중복을 줄이거나 제어하며 일관성 유지
    • 데이터 무결성
    • 데이터 보안
    • 쉬운 질의어
    • 다양한 사용자 인터페이스

파일 시스템 Vs DBMS

  • 파일 시스템을 사용한 기존의 데이터 관리

    • 파일을 접근하는 방식이 응용 프로그램 내에 상세하게 표현되므로 데이터에 대한 응용 프로그램의 의존도가 높음

  • 파일 시스템의 단점

    • 데이터가 많은 파일에 중복해서 저장됨

    • 다수의 사용자들을 위한 동시성 제어가 제공되지 않음

    • 검색하려는 데이터를 쉽게 명시하려는 질의어가 제공되지 않음

    • 보안 조치가 미흡

    • 회복 기능이 없음

      • 수정(덮어쓰기) 시 증발
    • 프로그램-데이터 독립성이 없으므로 유지보수 비용이 많이 소요됨

    • 파일을 검색하거나 갱신하는 절차가 상대적으로 복잡하기 때문에 프로그래머의 생산성이 낮음

  • 기업의 인사 관리 응용 프로그램에 사용되는 EMPLOYEE 화일과 사원 교육 관리 응용 프로그램에서 사용되는 EMPLOYEE 화일에 DEPARTMENT가 중복되어 나타날 수 있음

  • 어떤 사원의 DEPARTMENT 필드 값이 바뀔 때 두 화일에서 모두 수정하지 않으면 동일한 사원의 소속 부서가 화일마다 다르게 되어 데이터의 불일치 발생

  • DBMS 장점

  1. 스키마 정의를 통해

    • 중복성과 불일치가 감소

    • 표준화를 시행하기가 용이

      • 미리 필드들을 명시하기 때문에
    • 조직체의 요구사항을 식별 가능

  2. 관리도구를 통해

    • 시스템을 개발하고 유지하는 비용이 감소됨

    • 보안이 향상됨

      • 관리도구 안에서 유저 단위로 권한을 할당하거나 세부화된 권한 체계를 운영할 수 있기 때문에
    • 무결성이 향상됨

      • 하나의 작업을 트랜젝션이라는 이름으로 관리를 하도록 하고 거기에서 무결성 정책을 정의하기 때문에
    • 다양한 유형의 고장으로부터 데이터베이스를 회복할 수 있음

    • 데이터베이스의 공유와 동시 접근이 가능

  • DBMS 단점

    • 추가적인 하드웨어 구입 비용이 들고, DBMS 자체의 구입 비용도 상당히 비쌈

    • 직원들의 관리도구 사용법 교육 비용 많이 소요됨

    • 비밀과 프라이버시 노출 등의 단점이 존재할 수 있음

⚠️ DBMS를 적용하면 안되는 경우

  • 초기의 투자 비용이 너무 클 때
  • 오버헤드가 너무 클 때
  • 응용이 단순하고 잘 정의되었으며 변경되지 않을 것으로 예상될 때
  • 엄격한 실시간 처리 요구사항이 있을 때
  • 데이터에 대한 다수 사용자의 접근이 필요하지 않을 때

계층 DBMS 구조

  • 트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS

  • 계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례

    • 장점

      • 어떤 유형의 응용에 대해서는 빠른 속도와 높은 효율성을 제공
    • 단점

      • 어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 함

      • 데이터베이스가 생성될 때 각각의 관계를 명시적으로 정의해야 함

      • 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움

네트워크 DBMS 구조

  • 네트워크 구조 형태 같은 거미줄 형태의 데이터베이스 구성

  • 레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델을 사용

  • 네트워크 DBMS에서도 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움

관계 DBMS

  • 가장 많이 사용

  • 모델이 간단하여 이해하기 쉬움

  • 사용자는 자신이 원하는 것(what)만 명시하고, 데이터가 어디있는지, 어떻게 접근해야 하는지는 DBMS가 결정

  • ex) MS SQL Server, Oracle, Sybase, DB2, MySQL

객체 지향 DBMS

  • 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델

  • 데이터와 프로그램을 그룹화하고, 복잡한 객체들을 이해하기 쉬우며, 유지와 변경이 용이

  • ex) ONTOS, OpenODB, GemStone, ObjectStore, O2 등

객체 관계 DBMS

  • DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안됨

  • ex) 오라클, Informix, Universal Server 등

  • 관계 DBMS에 가까워질수록 실제 프로그램에서는 Query만 작성하면 DBMS가 알아서 수정, 삭제, 업데이트 작업을 대신 해주는 단계

DBMS 언어

데이터 정의어(DDL)

  • Data Definition Language

  • 사용자는 데이터 정의어를 사용하여 데이터베이스 스키마를 정의

  • 데이터 정의어로 명시된 문장이 입력되면  DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 또는 데이터 사전에 저장

데이터 정의어의 기본적 기능

  • 데이터 모델에서 지원하는 데이터 구조를 생성
    • ex) SQL에서 CREATE TABLE
  • 데이터 구조의 변경
    • ex) SQL에서 ALTER TABLE
  • 데이터 구조의 삭제
    • ex) SQL에서 DROP TABLE
  • 데이터 접근을 위해 특정 애트리뷰트 위에 인덱스를 정의
    • ex) SQL에서 CREATE INDEX

데이터 조작어(DML)

  • Data Manipulation Language

  • 사용자는 데이터 조작어를 사용하여 데이터베이스 내의 원하는 데이터를 검색하고, 수정하고, 삽입하고, 삭제

  • 절차적 언어(procedural language)와 비절차적 언어(non-procedural language)

  • 관계 DBMS에서 사용되는 SQL은 대표적인 비절차적 언어

  • 대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 갖고 있음

  • 데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등의 고급 프로그래밍 언어로 작성된 프로그램에 내포되어 사용됨

데이터 조작어의 기본적 기능

  • 데이터의 검색
    • ex) SQL에서 SELECT
  • 데이터의 수정
    • ex) SQL에서 UPDATE
  • 데이터의 삭제 (
    • ex) SQL에서 DELETE
  • 데이터의 삽입
    • ex) SQL에서 INSERT

데이터 제어어(DCL)

  • Data Control Language

  • 용자는 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소


DBMS 사용자

  • 응용 프로그래머 (우리!)

    • 데이터베이스 위에서 특정 응용(예, 고객 관리, 인사 관리, 재고 관리 등)이나 인터페이스를 구현하는 사람
    • 프로그래밍 언어로 응용 프로그램을 개발하면서 데이터베이스를 접근하는 부분은 내포된 데이터 조작어를 사용
    • 이들이 작성한 프로그램은 최종 사용자(유저)들이 반복해서 수행하므로 기작성 트랜잭션(canned transaction) 또는 프로그램이라고 부름
  • 데이터베이스 관리자(DBA : Database Administrator)

    • 조직의 여러 부분의 상이한 요구를 만족시키기 위해서 일관성 있는 데이터베이스 스키마를 생성하고 유지하는 사람(팀)

    • 데이터베이스 관리자의 역할

      • 리얼 DB 변경이 필요할때 DBA님에게 요청
    • 데이터베이스 스키마의 생성과 변경

      • 무결성 제약조건을 명시
      • 사용자의 권한을 허용하거나 취소하고, 사용자의 역할을 관리
      • 저장 구조와 접근 방법(물리적 스키마) 정의
      • 백업과 회복
      • 표준화 시행
  • 오퍼레이터 (인프라팀)

    • DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람
    • 즉, 서버가 죽지 않도록 잘 관리해주는 사람
  • 최종 사용자 (유저)

    • 질의하거나 갱신하거나 보고서를 생성하기 위해서 데이터베이스를 사용하는 사람
    • 최종 사용자는 다시 데이터베이스 질의어를 사용하여 매번 다른 정보를 찾는 캐주얼 사요자와 기작성 트랜잭션을 주로 반복해서 수행하는 초보 사용자로 구분

0개의 댓글