데이터베이스 시스템 (1)

아현·2021년 3월 4일
0

Database

목록 보기
1/4

1. 데이터베이스와 데이터베이스 사용자

1.1 개요

  • 데이터베이스와 데이터베이스 기술은 컴퓨터의 보편화에 큰 영향을 준다. 컴퓨터가 사용되는 거의 모든 분야에서 중요한 역할을 하고 있다.

✔ 데이터베이스(database)

: 서로 연관이 있는 데이터들의 모임이다.

➕ 데이터(data)

: 알려진 사실로서 의미를 가지고 기록될 수 있다는 특성을 갖는다.


<데이터 베이스라는 용어를 다음과 같은 특성을 가지는 것으로 한정하여 사용>

- 데이터베이스는 작은세계 또는 논의세계(UoD: Universe of Discourse) 라고 부르는 실세계의 일부분을 표현한다.
- 데이터베이스는 어떤 특정한 의미를 가지는 데이터의 모임이다.
- 데이터베이스는 특정한 목적을 위해서 설계, 구축, 운용된다. 즉, 데이터베이스를 사용하는 사용자 그룹들과 이들이 원하는 응용들이 미리 정해져 있다.

⇨ 즉, 데이터베이스는 데이터가 생성되는 원천(source)를 가지며, 실세계의 사건들과 어느정도 상호작용을 가지고, 데이터베이스이ㅡ 내용에 능동적으로 관심을 갖는 사용자를 가진다.

⇨ 데이터베이스가 항상 정확하고 안정적이기 위해서는 그 데이터베이스가 표현하는 작은 세계에서 발생하는 변화들이 가능한 빨리 반영되어야한다.

⇨ 데이터베이스는 다양한 복잡도와 크기를 가진다.

⇨ 데이터베이스는 수동 또는 컴퓨터를 이용하여 생성 및 관리된다.

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

  • 사용자가 데이터베이스를 생성하고, 관리할 수 있도록하는 컴퓨터화된 시스템이다.
  • DBMS는 다양한 사용자와 응용들이 필요로하는 데이터베이스를 정의, 생성, 조작, 공유할 수 있도록 편리한 기능을 제공하는 범용 소프트웨어 시스템이다.

1. 데이터베이스 정의

  • 데이터베이스에 저장되는 데이터에 대한 데이터 타입, 구조, 제약조건(constraint)들을 명세하는 과정이다.
  • 데이터베이스의 정의 또는 데이터베이스를 설명하는 정보는 DBMS에 의해서 카탈로그나 사전의 형태로 저장되고 이를 메타데이터(meta-data)라고 부른다.

2. 데이터베이스 구축

  • DBMS가 관리하는 기억 장치(대부분 디스크)에 데이터를 저장하는 과정이다.

3. 데이터베이스 조작

  • 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 데이터로부터 리포트를 생성하는 기능 등을 포함한다.

➕ 데이터베이스 공유

  • 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능이다.

    ** 응용프로그램(application program)은 DBMS에 질의(query) 또는 데이터 요청을 보내서 데이터베이스에 접근한다.
    질의는 일반적으로 몇몇 데이터를 결과로 반환하며, 트랜잭션(transaction)은 데이터베이스로부터 몇몇 데이터를 읽고 몇몇 데이터를 쓴다.

➕ 데이터 보호, 유지보수

  • DBMS에 의해 제공되는 또 다른 주요 기능으로, 보호는 하드웨어 또는 소프트웨어 오동작(or 붕괴)으로부터 시스템을 보호하는 기능과 권한이 없는 또는 악의적인 접근을 하려는 보안 위협으로 보호하는 기능 포함.

  • 대규모 데이터베이스는 수년에 걸쳐 유지되기에, DBMS는 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 데이터베이스 시스템을 유지보수 할 수 있어야 한다.

✔ 데이터베이스 시스템(database system)

: 데이터베이스 + DBMS

1.2 데이터베이스의 예

  • 데이터 베이스는 다음과 같은 다섯개의 파일로 구성되며, 각 파일은 동일한 유형의 데이터 레코드(data record)들을 저장한다.

  • 데이터베이스를 정의하기 위해서는 각 파일의 레코드 구조를 명시해야한다.
    즉, 각 레코드에 저장되는 데이터 항목(data record)들을 저장한다.
    -> Course_name, Course_number 등

  • 각 데이터 항목에 대하여 데이터 타입도 명시해야 한다.


  • UNIVERSITY 데이터베이스를 생성하기 위하여 각 학생, 과목, 강좌, 성적, 선수과목을 나타내는 데이터를 해당되는 테이블에 한 레코드로 저장한다.
    여러 파일에 속하는 레코드들이 서로 연관을 가질 수 있음에 유의한다.
    -> 대부분의 중형, 대형 데이터베이스는 다양한 유형의 레코드와 레코드 사이의 관계(relationship)를 가진다.

  • 데이터베이스의 조작은 질의와 갱신을 포함한다.
    (비정형 형태의 질의와 갱신은 데이터베이스 시스템에서 처리되기 전에 DBMS의 질의어로 정확하게 명세해야 한다.



1.3 데이터베이스의 특징

✔ 파일처리 방식에 비하여 데이터베이스 방식이 갖는 특징

  • 데이터베이스 시스템의 자기 기술성
  • 프로그램과 데이터의 격리 및 데이터 추상화
  • 데이터에 대한 다중 뷰(view)의 제공
  • 데이터의 공유와 다수 사용자 트랜잭션 처리

** 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. [위키피디아]

1) 데이터베이스 시스템의 자기 기술성

  • 데이터베이스 방식의 주요 특징은 데이터베이스 시스템이 데이터베이스 자체뿐만 아니라 데이터베이스의 구조와 제약 조건에 대한 완전한 정의까지 가지고 있다는 점이다.

  • 데이터베이스에 대한 정의는 데이터베이스에 속하는 각 파일들의 구조, 각 데이터 항목의 타입과 저장 혁식, 데이터에 대한 다양한 제약 조건 등을 나타낸다. 이 정의는 DBMS 카탈로그에 저장된다. 카탈로그에 저장된 정보를 메타데이터라고 부르며, 기본 데이터베이스의 구조를 기술한다.

  • NOSQL 시스템은 메타데이터를 필요로하지 않는다. 이런 시스템에서는 데이터가 단일 구조 내에 데이터 항목 이름과 데이터 값을 함께 포함하는 자기 기술성 데이터로 저장된다.

  • 카탈로그는 DBMS가 사용한다. 데이터베이스 구조에 관한 정보를 원하는 사용자가 카탈로그를 이용

  • 범용 DBMS는 특정 데이터베이스에 저장된 파일들의 구조를 파악하기 위하여 데이터 타입이나 포맷과 같은 정보를 카탈로그로부터 얻는다.
    DBMS는 카탈로그에 데이터베이스 정의가 등록된 대학교 데이터베이스, 은행 데이터베이스, 회사 데이터베이스 등 모든 데이터베이스를 공평하게 취급한다.


  • 기존의 파일처리 방식에서는 데이터의 정의가 대개 응용프로그램의 일부로 표현된다.

  • 파일처리방식이 특정 데이터베이스만을 접근할 수 있음에 비하여, DBMS는 시스템 카탈로그로부터 데이터베이스에 대한 정의를 가져와서 데이터베이스를 접근하므로 다양한 데이터베이스들을 접근할 수 있다.

⇨ STUDENT의 Name에 대한 접근 요청이 들어오면 DBMS는 카탈로그로부터 STUDENT파일의 구조, STUDENT 레코드 내에서 Name 데이터 항목의 위치와 길이에 관한 정보를 파악한 후에 해당 데이터를 추출하게 된다.

⇨ 반면에, 파일처리 방식에서는 파일의 구조와 심지어 STUDENT 레코드 내에서 Name 데이터 항목의 정확한 위치까지 이 데이터 항목을 접근하는 각 응용 프로그램에 코딩해야 한다.

2) 프로그램과 데이터의 격리 및 데이터 추상화

  • 프로그램-데이터 독립성(program-data independence)
    : DBMS의 경우 데이터 파일의 구조가 응용 프로그램과 분리되어 DBMS 카탈로그에 저장된다. 따라서 데이터 파일의 구조가 변경되어도 응용 프로그램은 거의 변하지 않게 된다.
    -> 기존의 파일처리 방식에서는 데이터 파일의 구조에 대한 정보가 데이터 파일을 접근하는 응용 프로그램 내에 표현되므로 파일의 구조가 변경되면 그 데이터 파일을 접근하는 모든 응용 프로그램도 변경해야 한다.

  • 프로그램-연산 독립성
    : 연산의 구현이 변경되어도 인터페이스가 유지되는 한 응용프로그램은 변경할 필요가 없다.

    • 객체지향 데이터베이스객체관계 데이터베이스와 같은 몇몇 형태의 데이터베이스 시스템에서는 사용자가 데이터에 대한 연사까지 데이터베이스 정의의 일부로 나타낼 수 있다.
    • 연산(operation)(함수 or 메소드로 불림)은 인터페이스와 구현의 두 부분으로 구성된다.
      → 연산의 인터페이스(시그니처) 는 연산의 이름, 매개변수들의 데이터 타입을 포함한다.
      → 연산의 구현(메소드)은 인터페이스와는 별도로 명시되며, 인터페이스에 영향을 미치지 않고 변경될 수 있다.
  • 데이터 추상화(data abstraction)
    : 프로그램-데이터 독립성, 프로그램-연산 독립성을 제공하는 성질

    • DBMS는 데이터가 어떻게 저장되었고 연산들이 어떻게 구현되었는가에 대한 상세한 정보보다는 사용자에게 데이터에 대한 개념적인(conceptual representation)을 제공한다.

    • 데이터 모델
      : 추상화의 한 종류로 볼 수 있으며,
      컴퓨터 기억장소의 개념보다 대부분의 사용자가 더 이해하기 쉬운 객체, 성질, 객체들 간의 관련성과 같은 논리적인 개념을 사용한다.
      즉, 데이터 모델은 대부분의 데이터베이스 사용자가 관심을 갖지 앟는 기억 장소와 구현에 관한 상세 정보를 숨기는 역할을 한다.

+데이터베이스에서는 각 파일의 구조에 관한 상세한 정보가 카탈로그에 저장된다. 데이터베이스 사용자와 응용프로그램은 데이터 모델이 제공하는 파일의 개념적이 표현을 참조하며, 필요하면 DBMS가 카탈로그로부터 파일의 상세 정보를 추출하여 이용한다.

3) 데이터에 대한 다중 뷰의 제공


  • : 데이터베이스의 일부이거나 데이터베이스로부터 유도되는 가상 데이터(virtual data)이지만 뷰의 데이터는 실제로 데이터베이스에 저장되지 않는다.
    어떤 사용자는 자신이 사용하는 데이터가 데이터베이스에 저장된 실제 데이터인지 또는 유도된 데이터인지 구분할 필요가 없다.
    다수의 사용자용 DBMS는 여러 사용자들이 자신의 뷰를 정의할 수 있도록하는 기능을 제공해야 한다.

4) 데이터의 공유와 다수 사용자 트랜잭션 처리

  • 다수 사용자용 DBMS
    : 여러 사용자가 동시에 데이터베이스를 접근할 수 있는 DBMS

    • 다수 사용자용 DBMS에는 동시성 제어(concurrency control) 소프트웨어가 내장되어 다수 사용자가 동일한 데이터를 동시에 변경하는 경우에도 데이터의 일관성(consistency)를 보장한다.
      -> 온라인 트랜잭션 처리(OLTP: On-Line Transaction Processing) 응용: 좌석 예약과 같은 응용
  • 다수 사용자용 DBMS의 기본적인 기능은 동시에 수행되는 트랜잭션들이 상호방해를 받지 않고 정확하고 효율적으로 수행되도록 보장하는 데 있다.

    • 트랜잭션 : 데이터베이스 레코드를 읽거나 갱신하는 것과 같이 한 번 이상의 데이터 베이스 접근을 포함하는 프로그램, 혹은 프로세스를 수행하는 것이다.

      • 각 트랜잭션은 다른 트랜잭션의 간섭 없이 완전히 수행되면 논리적으로 올바르게 데이터베이스 접근을 실행하는 것으로 여겨진다.

      • DBMS는 트랜잭션의 몇 가지 성질들을 강제적으로부터 강제적으로 지키도록 해야한다.

        • 고립성(isolation): 각 트랜잭션이 다른 트랜재션들로부터 고립되어 수행되는 것처럼 보이도록 보장한다.
        • 원자성(atomicity): 트랜잭션 내의 모든 데이터베이스 연산들이 수행 완료되거나, 아니면 아무 연산도 수행됮 않음을 보장한다.


1.4 데이터베이스 사용자의 분류

  • 데이터베이스 관리자

    • 데이터베이스 주요 자원을 관리하고 감독한다.

    • 데이터베이스에 대한 접근을 감독하며, 자원의 사용을 모니터링하고 조정한다.

  • 데이터베이스 설계자

    • 데이터베이스에 저장될 데이터를 선정하고, 데이터를 나타내고 저장하는 구조를 정의하는 역할을 담당한다.
  • 최종 사용자
    : 데이터베이스에 대하여 질의하고, 변경하고, 보고서를 작성하는 사람

    • 캐주얼 사용자 : 데이터베이스를 가끔 접근하지만 매번 다른 정보를 찾는다. 이드른 정교한 데이터 베이스 질의어를 사용하여 데이터를 요구하며, 대개 중상급의 관리자이다.

    • 초보사용자 : 기작성 트랜잭션들을 사용하여 데이터베이스를 검색하고 변경하는 사용자이다. Ex) 은행직원, 예약접수, 우편물 수신확인

    • 전문 사용자 : 복잡한 요구사항을 가진 이들의 복잡한 요구사항을 만족시키도록 DBMS의 고급기능 을 이용하여 응용 프로그램을 구현

    • 독자적인 사용자 : 메뉴나 그래픽 사용자 인터페이스를 제공하는 편리한 패키지를 사용하여 개인 데이터베이스를 유지하는 사용자이다. Ex) 세금 계산을 목적으로 개인의 다양한 재정 데이터를 저장하는 세금패키지의 사용자

  • 시스템 분석가 및 응용 프로그래머(소프트웨어 공학자)

    • 시스템 분석가 : 사용자의 요구사항을 분석한 다음에 이를 만족시키는 미리 작성된 표준 트랜잭션 들의 명세를 설계한다.

    • 응용프로그래머 : 트랜잭션들의 명세를 프로그램으로 구현하며, 테스트, 에러 수정, 문서화 등의 작업을 수행하고, 이와 같은 미리 작성된 트랜잭션들을 유지 관리한다.

1.5 무대 뒤의 사람들

  • DBMS 소프트웨어와 시스템 환경을 설계하고 개발하는 사람들

    • DBMS의 설계자 및 구현자 : DBMS 모듈들과 인터페이스들을 소프트웨어 패키지로 설계하고 구현하 는 사람

    • 도구 개발자 : 데이터베아스 모델링과 설계, 데이터베이스 시스템의 설계, 성능 개설 등에 이용되는 소프트웨어 패키지인 도구를 설계하고 구현하는 사람

    • 운영자와 유지보수 직원 : 데이터베이스 시스템을 위한 하드웨어 및 소프트웨어 환경의 운영 및 유지를 담당하는 사람

1.6 DBMS의 장점

1) 중복성의 제어

✔ 중복성(redundancy)이 야기하는 여러가지 문제점

① 논리적으로 한 번의 변경이지만 데이터가 중복된 횟수만큼 반복해서 변경해야 한다.

② 메모리 낭비를 초래한다.

③ 동일한 데이터를 포함하는 파일들에서 데이터의 불일치(inconsistency)가 발생할 수 있다.

⇨ 데이터베이스를 사용하는 경우에는 데이터에 대한 각 사용자 그룹의 뷰들이 데이터베이스설계 과정에서 하나로 통합된다.
각 논리적 데이터는 데이터베이스 내에 오직 한번만 저장되는 것이 가장 이상적이다.

  • 데이터 정규화(normalization)
    : 데이터베이스 내에 오직 한번만 저장하는 것
    -> 데이터 정규화는 일관성을 유지하고, 저장공간도 절약한다.

  • 반정규화(denormalization)
    - 제어된 중복성(controlled redundancy)이 질의 성능을 개선하는 데 유용한 경우

    • 예) GRADE_REPORT 레코드에 접근할 때마다 Student_name, Course_number를 함께 접근하는 응용이 빈번하다면 두개를 GRADE_REPORT 파일에 중복 저장하는 것이 바람직하다.

    • 중복의 허용은 이런 경우 유용하지만, DBMS는 데이터 불일치가 초래하지 않도록 제어해야 한다.

  • 중복의 제어는 GRADE_REPORT 파일의 각 레코드에 나타는 Student_name-Student_number의 값이 반드시 STUDENT파일에 포함된 어떤 레코드의 Student_name-student_number의 값과 일치하도록 함으로써 자동화할 수 있다.

    • 데이터베이스를 설계할 때 이러한 값의 일치 여부에 대한 검사 규정을 한 번 설정해 둠으로써 GRADE_REPORT 파일이 변겨오딜 때마다 DBMS가 자동으로 일치하는 레코드의 존재 여부를 검사하게 된다.
      즉, 데이터의 중복을 DBMS가 자동으로 제어하게 된다.


2) 권한이 없는 접근의 통제

  • 다수의 사용자가 대용량의 데이터베이스를 공유하는 경우에 대부부의 사용자는 전체 데이터베이스를 볼 필요가 없거나 보아서는 안 될 것이다.
  • DBMS는 이를 위해 보안(security) 권한(authorization) 서브시스템을 가진다.
    • 데이터베이스 관리자는 이 서브시스템을 사용하여 데이터베이스 사용자에게 계정을 부여하며 접근의 통제를 명시한다.
    • DBMS는 데이터가 접근되기 전에 지정된 접근 통제를 시행함으로싸 권한이 없는 사용자의 접근을 방지한다.
    • 데이터에 대한 접근 통제와 더불어 DBMS 자체의 실행을 제한할 수도 있다
  • 특권 소프트웨어(privileged software) 패키지 (새 계정을 만드는 등)는 데이터베이스 관리자만 실행할 수 있도록 할 수 있으며, 초보 사용자는 미리 작성된 앱이나 트랜잭션만 사용하여 데이터베이스를 접근할 수 있도록 제한할 수 있다.

3) 프로그램 객체를 위한 지속성 기억 공간 제공

  • 데이터베이스는 프로그램 객체와 자료구조를 위한 지속성 기억 공간을 제공하는 데 사용될 수 있다.
    (객체지향 데이터베이스 시스템의 쥬요 목적 중 하나가 이러한 요구에 부응하기 위한 것이다.)
  • 객체지향 데이터베이스 시스템은 C++과 Java등과 같은 프로그래밍 언어와 호환성을 가지며 필요한 포맷의 변환을 DBMS가 자동으로 수행한다.
    -> C++의 복잡한 객체는 객체지향 DBMS에 지속적으로 저장되거나 검색될 수 있다.
  • 지속성 객체(persistent object)
    :데이터베이스에 저장된 객체
    • 이들은 프로그램의 수행이 끝난 후에도 데이터베이스에 영구적으로 남아 있으며 필요하면 언제든지 다른 프로그램들에서 접근할 수 있다.
  • 객체지향 데이터베이스 시스템에서는 하나 이상의 객체지향 언어와 호환성이 있는 자료구조를 제공하므로 원래 데이터베이스에서 발생하던 프로그래밍 언어에서의 자료구조와 데이터베이스 시스템의 자료구조의 불일치(임피던스 불일치, impedance mismatch) 문제는 발생하지 않는다.

4) 효율적인 질의 처리를 위한 저장 구조와 탐색 기법의 제공

  • 데이터베이스 시스템은 질의와 갱신을 효율적으로 수행하는 기능을 제공해야 한다.

  • DBMS는 원하는 레코드를 디스크에서 검색하는 시간을 줄이기 위해 특수한 자료구조와 탐색 기법을 제공해야 한다.

    • 인덱스(보조 자료파일) : 대체적으로 트리 자료 구조 또는 디스크 검색을 위해 적절하게 변형된 해시 자료 구조에 기반

    • 데이터베이스 레코드를 처리하기 위해서는, 그러한 레코드들을 디스크에서 주기억 장치로 복사해야 한다. 그래서 DBMS는 종종 주기억 장치 버퍼에 데이터베이스의 일부분을 관리하는 별도의 버퍼링 또는 캐싱 모듈을 가진다.
      -> 일반적으로는 운영체제가 담당하지만, 데이터 버퍼링이 DBMS의 성능에 매우 중요하기 때문에 대부분의 DBMS는 자체적으로 데이터 버퍼링을 한다.

  • DBMS의 질의 처리와 최적화 모듈은 존재하는 저장구조를 기반으로 각 질의에 대한 효율적인 실행계획을 선택할 책임이 있다.
    -> 어떤 인덱스를 만들고 유지하는가의 선택은 데이터베이스 관리자의 책임 중에 하나인 물리적 데이터베이스 설계와 튜닝의 일부분이다.

5) 백업과 회복 제공

  • DBMS는 하드웨어와 소프트웨어의 고장으로부터 복구할 수 있는 기능을 가져야 한다.
  • 백업(backup)과 회복(recovery) 서브시스템의 회복 담당
    • 예: 복잡한 갱신을 담당하는 트랜잭션 수행 도중에 컴퓨터 시스템이 고장나면 DBMS는 갱신 트랜잭션이 수행됙 전의 상태로 데이터베이스를 되돌리거나 고장난 시점부터 나머지를 실행하여 갱신 트랜잭션의 수행 결과가 완전히 데이터베이스에 반영되도록 한다.
    • 재해적인 디스크 고장을 대비하여 디스크 백업도 필요하다.

6) 다수의 사용자 인터페이스 제공

  • 데이터베이스 사용자들은 기술적인 지식의 보유 정도에 따라서 다양한 그룹으로 나누어지므로 DBMS도 이들 각각에 적합한 인터페이스를 제공해야 한다.

  • 모바일 사용자에게는 앱을, 캐주얼 사용자에게는 질의어를, 응용프로그래머에게는 프로그래밍 언어 인터페이스를, 초보 사용자에게는 폼이나 명령어 인터페이스를, 독자적인 사용자에게는 메뉴 기반 인터페이스나 자연언어 인터페이스를 제공해야 한다.

    • 그래픽 사용자 인터페이스(GUI: Graphical User Interface)
      :폼 형태의 인터페이스와 메뉴 방식의 인터페이스



7) 데이터 간의 복잡한 관계의 표현

  • 데이터베이스에는 다양한 형태로 연관된 데이터가 저장된다.

  • DBMS는 새로운 관계가 나타날 때 그 관계를 정의하고 연관된 데이터를 쉽고 효율적으로 검색하고 변경할 수 있는 기능을 제공하기 위해 데이터 간의 복잡하고 다양한 관련성을 표시할 수 있어야 한다.



8) 무결성 제약 조건의 시행

  • 대부분의 데이터베이스 응용은 데이터에 대한 무결성 제약 조건(integrity constraint)들을 가진다.

    • DBMS는 무결성 제약 조건들을 정의하고 검사하는 기능을 가져야 한다.

      • 가장 간단한 무결성 제약 조건은 각 데이터 항목에 대한 데이터 타입이다.

      • 참고 무결성(referential integrity) 제약 조건 : 좀 더 복잡한 무결성 제약 조건으로는 한 파일의 레코드가 반드시 다른 파일의 레코드들과 연관성을 가져야 한다는 것이다.

      • 키(key) 제약 조건: 데이터 항목의 값드링 유일해야 한다는 것이다.

    • 이러한 제약 조건들은 실세계의 의미로부터 발생하는 것이며, 데이터베이스 설계자가 데이터베이스를 설계할 때 무결성 제약 조건도 명시하게 된다.
      무결성 제약 조건들 중에서 일부는 DBMS가 자동으로 검사하며, 나머지는 데이터베이스를 변경하는 프로그램이나 데이터베이스를 변경하는 프로그램이나 데이터 입력 프로그램에서 검사한다.

    • 전형적인 대형 응용 프로그램에서는 이런 제약 조건을 일반적으로 비즈니스 규칙(business rules)이라 부른다.

    • 특정 데이터 모델과 관련된 규칙들을 그 데이터 모델의 고유한 규칙(inherent rule)이라 부른다.
      -> 예: 개체-관계 모델에서는 관계는 최소한 두 개체를 포함해야한다. 등



9) 규칙을 사용한 추론과 수행

  • 연역 데이터베이스 시스템(deductive database system)
    : 어떤 데이터베이스 시스템에서는 데이터베이스에 저장되어 있는 사실로부터 새로운 정보를 추론하는 연역적 규칙을 정의할 수 있는데 이러한 기능을 가진 시스템

    • 예: 어떤 학생이 언제 시험을 볼 것인가를 결정하는 데는 복잡한 규칙이 수반된다. 연역 데이터베이스에서는 이들을 규칙으로 데이터베이스에 명시한다.
      규칙들은 DBMS에서 컴파일되어 유지될 때 모든 학생에 대하여 시험을 보는 시기를 쉽게 결정할 수 있다.
  • 오늘날의 관계 데이터베이스 시스템들은 테이블을 트리거(trigger)와 연관시킬 수 있다.

    • 트리거는 테이블의 업데이트에 의해 활성화되는 규칙의 한 형태로 다른 테이블에 추가적인 동작을 수행하거나 메시지를 보내는 등의 일을 수행한다.

    • 저장된 절차(stored procedure)
      : 규칙이 지켜지도록 하는 좀 더 복잡한 절차를 의미하다.
      이것은 전체 데이터베이스 정의의 일부분이 되며 어떤 조건이 만족되면 호출된다.

      • 어떤 이벤트나 조건이 일어났을 때, 자동을 수행되는 능동 규칙을 제공하는 능동 데이터베이스시스템(active database system)은 보다 강력한 기능을 제공한다.



10) 데이터베이스 사용에 함축된 또 다른 의미

표준 강화
: 데이터베이스를 사용하면, 큰 조직에서 데이터베이스 관리자가 데이터베이스 사용자들 사이에서 표준을 정의하고 지행할 수 있다.

응용 개발 시간의 단축
: 데이터베이스를 사용하면, 새로운 보고서를 출력하기 위해 데이터베이스에서 데이터를 검색하는 것과 같은 새로운 응용을 개발하는 데 걸리는 시간을 단축할 수 있다.

  • 처음부터 대규모의 다수 사용자용 데이터베이스를 설계하고 구현하는 것은 특수한 파일 응요프로그램을 개발하는 것보다 시간이 더 많이 걸릴지도 모르지만 일단 데이터베이스가 구축되어 완성된 후에는 DBMS에서 제공하는 기능을 이용하여 새로운 응용을 빠르게 개발할 수 있다.
  • DBMS를 사용할 때의 개발 시간은 파일 시스템을 사용할 때보다 1/4에서 1/6 정도로 적게 걸리는 것으로 추정된다.

융통성
: 요구사항이 변하면 데이터베이스 구조가 바뀔 수도 있다.
현대의 DBMS들에서는 저장된 데이터나 현재 사용하는 응용 프로그램에 영향을 미치지 않으면서 데이터베이스의 구조를 조금씩 변경하는 것이 가능하다.

최신 정보의 가용성
: DBMS는 모든 사용자들에게 데이터베이스를 이용할 수 있게 해준다. 한 사용자가 데이터베이스를 변경하는 즉시 다른 사용자들은 곧바로 변경된 데이터를 확인할 수 있다. 이와 같이 최신 정보를 바로 볼 수 있는 기능은 예약 시스템이나 은행 데이터베이스와 같은 트랜잭션 처리 시스템에서 필수적인 기능이다.
이러한 기능은 DBMS가 제공하는 동시성 제어와 회복 서브시스템에 의해 구현된다.

규모의 경제성
: DBMS를 사용하면 조직 내의 데이터와 응용이 통합되어 관리되므로 응용 프로그램들 사이의 중복뿐만 아니라 서로 다른 프로젝트나 부서의 업무가 불필요하게 중복되는 것을 상당 부분 줄여줄 수 있다.



1.7 데이터베이스 응용의 간략한 역사

1) 계층 시스템과 네트워크 시스템을 이용한 초기의 데이터베이스 응용

  • 초기 시스템의 주요 형태는 세 가지 주요 패러다임,
    즉 계층 시스템, 네트워크 모델에 기초한 시스템, 역파일 시스템에 기초를 두었다.

2) 관계 데이터베이스를 통한 데이터 추상화와 응용의 유연성 제공

  • 관계 데이터베이스는 원래 데이터의 물리적 저장 공간과 그 개념적인 표현을 분리하고 데이터 표현과 질의에 대한 수학적 근거를 제공하기 위해 제안되엇다.
  • 관계 시스템은 그 이전 시스템들의 응용과 똑같은 응용을 목표로 하였지만, 요구사항이 바뀌었을 때 새로운 질의들을 빨리 개발하고 데이터베이스를 빨리 재구성할 수 있는 유연성을 제공하였다.

3) 객체지향 응용과 더욱 복잡한 데이터베이스에 대한 요구

  • 객체지향 데이터베이스의 전체적인 보급률은 낮은 상태에 머물러 있다. 더욱이 다수의 객체지향 개념들이 관계 DBMS의 새로운 버전에 통합되어 객체-관계 시스템(ORDBMS)이 등장하였다.

4) 전자 상거래(E-Commerce)를 위해 XML을 사용하여 웹에서 데이터 교환

  • 웹상에서 웹 페이지들을 보여주기 위해 동적으로 추출된 데이터의 교환을 허용하기 위해 다양한 기술이 개발되엇다.
  • 확장성 마크업 언어(XML: eXtended Markup Language)는 다양한 유형의 데이터베이스와 웹 페이지 사이에 데이터를 상호교환하는 주요 표준의 하나이다.
    • XML은 문서 시스템에서 사용된 모델의 개념과 데이터베이스 모델의 개념을 병합한다.

5) 새로운 응용을 위한 데이터베이스 능력 확장

  • 전통적인 응용에서 관계 데이터베이스 시스템의 성공은 새로운 응용 개발을 촉진시켰다.

  • 데이터베이스 시스템은 이런 응용들이 특별한 요구사항들을 좀 더 잘 지워하기 위해서 새로운 확장들을 제공한다.

    <기본적인 관계 시스템은 새로운 응용을 지원에 적합하지 않은 이유>

    • 모델링을 위해서는 더욱 복잡한 자료구조가 필요하다
    • 새로운 데이터 타입이 필요하다
    • 새로운 데이터 타입을 다루기 위해서는 새로운 연산과 질의어 구조가 필요하다
    • 새로운 데이터 타입들을 효율적으로 탐색하기 위해서 새로운 저장 공간과 인덱스 구조가 필요하다
  • 이로 인해 DBMS 개발자들은 그들의 시스템에 새로운 응용을 지우너하기 위한 기능을 추가하게 되었다.

    • 객체지향 데이터베이스를 관계 데이터베이스에 통합하는 형태의 범용 기능
    • 특정 응용에서 사용할 수 있게 만들어진 부가적인 모튤 형태의 특수 목적의 기능

6) 빅 데이터 저장 시스템과 NOSQL 데이터베이스의 등장

  • 21세기의 첫 10년 동안 소셜 미디어 웹사이트, 대규모 전자 상거래 기업, 웹검색 인덱스, 클라우드저장소 등의 응용과 플랫폼들이 확산함에 따라 대용량 데이터베이스와 대규모 서버에 저장되는 데이터가 폭발적으로 증가하였다.
  • 종래와 다른 유형의 데이터를 빠르게 탐색하고, 안전하게 저장할 수 있는 새로운 유형의 데이터베이스 시스테밍 필요하게 되었다.
  • SQL 관계 DBMS들은 이런 기능을 제공하는데 부족하다.

NOSQL : SQL만이 아니라는 의미로, 대규모 데이터를 관리하는 시스템에서, 응용의 요구사항에 따라 일부 데이터는 SQL 시스템을 사용하여 저장하고, 일부 데이터는 NOSQL 시스템을 사용하여 저장한다.



1.8 데이터베이스를 사용하지 않아도 좋은 이유

  • DBMS를 사용하면 비용이 높아짐 : 높은 초기 투자 비용과 추가적인 하드웨어가 필요하다.

  • 데이터의 보안, 동시성 제어, 회복, 무결성 조건등의 기능이 필요하지 않은 응용 -> 오버헤드가 됨

  • 맞춤형 데이터베이스 응용을 개발하는 것이 더 적합한 경우

    • 데이터베이스와 응용이 단순하고 잘 정의되어 있으며, 변경될 가능성이 적을 경우
    • DBMS 오버헤드로 인하여 엄격한 실시간 데이터 처리 요구사항을 만족시키기 힘든 경우 (최근 들어 이러한 경우 실시간 DBMS 활용 가능)
    • 다 사용자 데이터 접근이 필요하지 않은 경우
profile
Studying Computer Science

0개의 댓글