1장. 데이터베이스 시스템

HEEJOON MOON·2022년 3월 8일
0

데이터베이스

목록 보기
1/3
  • 정보와 데이터는 서로 다른 개념으로서, 데이터는 사람이 이해불가하지만 정보는 사람이 이해가능합니다. 데이터는 프로그램과 질의에 의해 정보로 변환됩니다.

데이터베이스의 정의는 아래와 같습니다.

데이터베이스 정의
데이터베이스는 조직체의 응용시스템들이 공유(여러부서 간의)해서 사용하는 운영 데이터들이 구조적(효율적이고 좋은 구조 필요)으로 통합된(중복을 제거후 논리적 통합) 모임이다.

  • 관계형 DBMS의 경우 관계 데이터 모델을 사용합니다

데이터베이스의 특징
1. DB는 데이터의 대규모 저장소로서, 여러 부서에 속하는 여러 사용자에 의해 동시에 사용됩니다. -> 여러부서에서 사용하므로 질서가 필요하게 됩니다.
2. 모든 데이터는 중복을 최소화하며 통합됩니다.
3. DB는 운영 데이터뿐만 아니라, 데이터에 관한 설명(메타데이터 or 스키마)까지 포함합니다.
4. 프로그램과 데이터 간의 독립성이 제공됩니다
5. 효율적으로 접근이 가능하며, 질의가 가능합니다

DBMS(데이터베이스 관리 시스템)
: 데이터베이스를 정의하고, 질의어를 지원하며, 리포트를 생성하는 등의 작업을 수행하는 sw입니다.

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

데이터베이스 스키마

  • 전체적인 데이터베이스 구조를 뜻하며, 자주 변경되지는 않는다
  • 모든 가능한 상태를 미리 정의합니다
  • 내포(intension)이라고도 불림)

데이처베이스 상태

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

데이터 베이스 시스템은 시스템 카탈로그와 저장된 데이터 베이스로 구분할 수 있습니다. 시스템 카탈로그는 저장된 데이터 베이스의 스키마 정보를 유지합니다.

DBMS
사용자가 새로운 데이터베이스를 생성하고, 데이터베이스 구조를 명시할 수 있게 하고, 사용자가 데이터를 효율적으로 질의하고 수정할 수 있도록 하며, 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호하며, 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어(race condition 해결)하는 소프트웨어 패키지입니다.

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

    <DBMS 시스템의 요구사항>
  • data 독립성
  • 효율적인 데이터 접근
  • 백업과 회복
  • 데이터에 대한 동시 접근
  • 데이터 무결성 (조건 부합성)
  • 중복을 줄이거나 제어하며, 일관성을 유지

1.2 File System vs DBMS

  • File system : DBMS이전 OS가 기본제공하는 데이터 관리 시스템으로서, file의 구성요소는 순차적인 레코드로 구성되며, 레코드는 연관된 필드의 모임으로 구성됩니다. File System의 문제점으로는 File access가 응용 프로그램들에 의존적이라는 문제점이 있었으며, data file을 변경시 응용 프로그램의 변경이 필요하다는 문제점이 있었습니다. 만약 위의 그림에서 Cell-Phone을 추가하기 위해서는 프로그램 수정을 통해 파일을 수정 후 다시 저장해야 합니다.

File System의 또다른 단점으로는 데이터가 많은 파일에 중복되어 저장된다는 점입니다.

이 외에도 File system의 단점들로는 아래와 같습니다

  • 다수 사용자를 위한 동시성 제어가 제공되지 않음
  • 데이터를 쉽게 명시하는 질의어가 제공되지 않음
  • 보안 x, 회복 기능 x
  • 프로그램-데이터 간의 독립성이 없어서 유지보수 비용이 많이 소요
  • 데이터의 공유 및 융퉁성이 부족
  • File 검색 및 갱신 절차가 복잡 -> 생산성이 떨어짐

DBMS

  • 여러 사용자와 응용 프로그램들이 데이터를 공유 -> 동시성 제어 제공
  • 사용자가 질의를 빠르게 수행할 수 있도로고 DBMS가 접근 경로를 자동적으로 선택하여 수행
  • 보호 O, 회복성 O
  • 여러 사용자에 적합한 다양한 인터페이스 제공
  • 프로그램-데이터 독립성 -> 프로그램에 영향을 주지 않고서 데이터 베이스 구조 변경이 가능

1.3 DBMS 발전 과정

데이터 모델

  • 정의 : 데이터베이스 구조를 기술하는데 사용되는 개념들의 집합. 구조(데이터 타입과 관계), 구조위에서 작동하는 연산자들, 무결성 제약조건들을 포함

데이터 모델의 분류

1) 고수준 또는 개념적 데이터 모델 : 사람이 인식하는 것과 유사하게 데이터베이스의 전체적인 논리적 구조를 명시. Ex) ER 데이터모델, 객체 지향 데이터 모델

2) 표현(구현) 데이터 모델 : 최종 사용자가 이해하는 개념이면서, 컴퓨터 내에서 데이터가 조직되는 방식도 유사. Ex) 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델

3) 저수준 혹은 물리적 데이터 모델 : 데이터베이스에 데이터가 어떻게 저장되는지를 기술

DBMS 발전 과정


1) 계층 DBMS

  • 최초의 DBMS로, 트리 구조 기반의 DBMS.
  • 계층 DBMS는 네트워크 데이터 모델의 특별한 사례
  • 어떤 유형에 대해서는 빠른 속도와 높은 효율성을 제공하나, 유형이 다양하지 않다.
  • 데이터 접근 방식을 응용프로그램서 미리 정의해야 하며, 데이터베이스 생성시 각각의 관계를 명시적 정의 필요.
  • 레코드들이 링크로 연결되어 있으므로 레코드 구조 변경이 어려움
  • one-to-Many 관계는 잘 처리하나 Many-to-Many 관계가 어렵다

    2) 네트워크 DBMS
  • 레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 모델을 사용
  • 레코드들이 링크(포인터)로 연결되어 있으므로 레코드 구조를 변경하기 어려움

    3) 관계 DBMS
  • 링크를 대신하여 어떤 것을 사용할까? -> 외래키를 사용하여 관계를 표현한다
  • 모델이 간단하여 이해하기 쉬움
  • 사용자는 원하는 것만 명시하고, 접근방법, 데이터 위치등은 DBMS가 결정

4) 객체 지향 DBMS

  • 객체 지향 프로그래밍 패러다임을 기반

5) 객체 관계 DBMS

  • 관계 DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델
  • Programming 분량이 감소하여 적은 코딩으로도 구현이 가능하다

1.4 DBMS 언어

데이터 정의어 (Data Definition Language)

  • 사용자는 데이터 정의어를 통해 데이터베이스 스키마를 정의
  • 시스템 카탈로그 또는 데이터 사전에 사용자가 정의한 스키마를 저장

DDL 기본적인 기능

  • 데이터 모델에서 지원하는 데이터 구조 생성
  • 데이터 구조의 변경
  • 데이터 구조의 삭제
  • 데이터 접근을 위해 특정 attribute위에 인덱스를 정의

데이터 조작어 (Data Manipulation Language)

  • 사용자는 데이터 조작어를 이용하여 데이터베이스 내의 원하는 데이터를 검색, 수정, 삽입, 삭제
  • 절차적 언어(SQL)와 비절차적 언어로 구분
  • SUM, Average, Count와 같은 내장 함수들을 가지고 있음

데이터 제어어 (Data Control Language)

  • DBMS 운영을 위한 트랜잭션을 정의(명시)하고 권한을 부여하거나 취소

1.5 DBMS 사용자


1) 데이터 베이스 관리자(DBA: Database Administrator)

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

DBA의 역할

  • 데이터 베이스 스키마의 생성과 변경
  • 무결성 제약조건을 명시
  • 사용자의 권한을 허용/취소, 역할을 관리
  • 저장 구조와 접근방법(물리적 스키마) 정의
  • 백업과 회복
  • 표준화 시행

2) 응용 프로그래머

  • 데이터 베이스 위에서 특정 응용이나 인터페이스를 구현하는 사람
  • 데이터 조작어를 통해 DB 접근
  • 이들이 작성한 프로그램은 최종 사용자들이 반복해서 수행하므로 기작성 트랜잭션(canned transaction)이라 부름

3) 최종 사용자

  • 데이터 베이스 질의어를 사용하여 매번 다른 정보를 찾는 캐주얼 사용자와 기작성 트랜잭션을 주로 반복해서 수행하는 초보 사용자로 구분

4) 데이터 베이스 설계자(database designer)

  • Case 도구들을 이용해서 데이터베이스 설계를 담당
  • 데이터 베이스 일관성을 유지하기 위해서 정규화를 수행

5) 오퍼레이터

  • DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람

1.6 ANSI/SPARC 아키텍쳐와 데이터 독립성

  • 대부분의 상용 DBMS 구현에서 ANSI/SAPRC 아키텍쳐를 사용
  • 크게 외부 단계, 개념 단계, 내부 단계로 이루어짐

외부 단계

  • 데이터베이스의 각 사용자가 갖는 뷰
  • 여러 사용자에 따라 동일한 개념 단계로부터 다수의 서로 다른 뷰가 제공될 수 있다
  • 일반적으로 최종 사용자와 응용 프로그래머들은 DB의 일부분에만 관심을 가짐

개념 단계

  • 조직체의 정보 모델로서, 물리적인 구현은 고려하지 않으면서 조직체 전체에 관한 스키마를 포함
  • DB에 어떤 데이터가 저장되어 있으며, 데이터 간에는 어떤 관계가 존재하고, 어떤 무결성 제약조건들이 명시되어 있는가를 기술함
  • 데이터 베이스에 대한 사용자 공동체의 뷰를 나타냄
  • 데이터 베이스마다 오직 한 개의 개념 스키마가 존재

내부 단계

  • 실제의 물리적인 데이터 구조에 관한 스키마
  • DB에 어떤 데이터가 어떻게 저장되어 있는가를 기술함
  • 물리적 단계는 DBMS의 지시에 따라 운영체제가 관리함
  • Index, Hashing, path, compression 등을 기술
  • 개념 스키마에는 영향을 미치지 않으면서, 성능을 향상시키기 위해 내부 스키마를 변경하는 것이 바람직

스키마 간의 사상

  • 외부/개념 사상(external/conceptual mapping)
    : 외부 단계의 뷰를 사용해서 입력된 사용자의 질의를 개념 단계의 스키마를 사용한 질의로 변환
  • 개념/내부 사상(conceptual/internal mapping)
    : 이를 다시 내부단계의 스키마로 변환하여 디스크의 데이터베이스를 접근

데이터 독립성

  • 상위 단계의 스키마 정의에 영향을 주지 않으면서 어떤 단계의 스키마 정의를 변경할 수 있음을 의미 -> 유지 보수 운영의 이점이 있다

1) 논리적 데이터 독립성

  • 개념 스키마의 변화로부터 외부 스키마가 영향을 받지 않음을 의미
  • 기존의 외부 스키마에 영향 없이, 응용 프로그램을 다시 작성할 필요 없이 개념 스키마에 대한 변화가 가능해야 함

2) 물리적 데이터 독립성

  • 내부 스키마의 변화로부터 개념 스키마가 영향을 받지 않으며, 외부 스키마(응용 프로그램)에도 영향을 미치지 않음을 의미

1.7 데이터베이스 시스템 아키텍쳐

모듈

데이터 베이스 API

  • ODBC: MS가 개발한 데이터 베이스 API. 같은 ODBC를 지원하는 DBMS간에는 서로 상대방의 DB를 접근할 수 있음
  • JDBC: Java 기반의 데이터 베이스 API

시스테 아키텍쳐

1) 중앙 집중식 데이터베이스 시스템(centralized database system)

  • 데이터베이스 시스템이 아래와 같이 하나의 컴퓨터 시스템에서 운영됨

2) 분산 데이터베이스 시스템(distributed database system)

  • 네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영됨 + 이들이 서로 협력하여 운영
  • 사용자는 다른 사이트에 저장된 데이터베이스도 접근할 수 있음

3) 클라이언트-서버 데이터베이스 시스템(Client-Server database system)

  • 자체 컴퓨팅 능력을 가진 클라이언트를 통해 데이터베이스 서버에 접근
  • 데이터베이스가 하나의 데이터베이스 서버에 저장
  • 데이터베이스 시스템 기능이 서버와 클라이언트에 분산됨

서버는 데이터베이스를 저장하고 DBMS를 운영하면서, 여러 클라이언트에 온 질의를 최적화하고, 권한 검사를 수행하고, 동시성 제어 및 회복 기능의 수행, 데이터베이스의 무결성을 유지, 데이터베이스 접근을 관리

클라이언트는 사용자 인터페이스를 관리하고 응용들을 수행

또한 아래와 같이 2층(2-tier) model과 3층(3-tier) 모델로 분리되어 있다. 2층모델은 client-server가 직접 연결된 것이며, 3층모델은 응용서버(GUI, Network등의 통신 sw, 응용 논리를 포함)가 중간에 삽입되어 있어서 서비스 요청-응답에서 성능이 향상되며 구현 및 유지보수가 간단하다는 이점이 있다

profile
Robotics, 3D-Vision, Deep-Learning에 관심이 있습니다

0개의 댓글