데이터베이스

데이터베이스_01.데이터베이스 시스템

강용민 2021. 9. 26. 16:13

들어가기 앞서

데이터와 정보는 서로 다르다는것을 이해하고 넘어간다.

데이터는 컴퓨터 디스크와 같은 매체에 저장된 사실을 말하며,

정보는 데이터를 처리해서 사람이 이해하기에 적합한 형태로 의미 있게 만든것이다.


데이터베이스의 정의

조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터(operational data)들이 구조적으로 통합된 모임이다. 데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정된다.

데이터베이스가 필요한 전형적인 환경은 데이터의 양이 방대하며, 데이터가 구조적이며, 많은 사용자들이 동시에 데이터를 접근하여 검색과 갱신을 수행하는 환경이다. 조직체들은 연속적인 운영, 높은 가용성, 최신의 정확한 정보, 데이터 내에서 복잡한 상호 관련성을 유지하기 위해 데이터베이스 기술이 필요하다.

 

데이터베이스의 특징

  • 데이터의 대규모 저장소로서, 여러 부서에 속하는 여러 사용자에 의해 동시에 사용된다. 조직체의 모든 구성원이 공유하는 자원이다.
  • 모든 데이터가 중복을 최소화하면서 통합된다.
  • 한 조직체의 운영 데이터뿐만 아니라 그 데이터에 관한 설명까지 포함한다. - 데이터베이스 스키마, 메타데이터
  • 프로그램과 데이터 간의 독립성이 제공된다.
  • 효율적으로 접근이 가능하고 질의를 할 수 있다.

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

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


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

데이터베이스 스키마와 상태

데이터베이스 스키마는 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지는 않는다.  또한 데이터베이스의 모든 가능한 상태를 미리 정의한다. 내포라고도 부른다.

데이터베이스 상태는 특정 시점의 데이터베이스의 내용을 의미하며, 시간이 지남에 따라 계속해서 바뀐다. 외연이라고 부른다.

데이터베이스 시스템의 구성요소

데이터베이스 시스템의 구성요소
시스템 카탈로그와 저장된 데이터베이스

  • 데이터베이스는 다음 그림과 같이 시스템 카탈로그(또는 데이터 사전)와 저장된 데이터베이스로 구분할 수 있다.
    시스템 카탈로그(System Catalog)는 저장된 데이터베이스의 스키마 정보를 유지한다.
  • DBMS는 사용자가 새로운 데이터베이스를 생성하고, 데이터베이스의 구조를 명시 할 수 있게 하고, 사용자가 데이터를 효율적으로 질의하고 수정할 수 있도록 하며, 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호하며, 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어하는 소프트웨어 패키지이다.
  • 사용자는 여러 부류로 나눌 수 있다. 자세한 내용은 1.5절에서 설명한다.
  • 하드웨어 - 데이터베이스는 디스크와 같은 보조 기억 장치에 저장되며, DBMS에서 원하는 정보를 찾기 위해서는 디스크의 블록들을 주기억 장치로 읽어들여야한다.
    DBMS자체도 주기억장치에 적재되어 실행되어야 하므로 하드웨어 자원들을 필요로 한다.
    더보기
    엔티티는 문제 영역에서 특정한 객체(예: 제품, 고객, 학생 등)를 나타낸다.

데이터베이스 시스템의 요구사항

  • 데이터 독립성 - 응용 프로그램이 데이터 표현의 상세한 내역과 데이터 저장으로부터 독립적이다.
  • 융통성 - 기존의 응용 프로그램들에 영향을 주지 않으면서 데이터베이스 구조를 변경할 수 있어야 한다.
  • 효율적인 데이터 접근
  • 데이터에 대한 동시 접근 - 공유정보이므로 여러 사용자가 동일한 데이터베이스를 동시에 접근한다. 하지만 각 사용자는 혼자서 데이터베이스를 접근하는 것처럼 인식하도록해야한다.
  • 백업과 회복
  • 일관성 유지 - 중복을 줄이거나 제어
  • 데이터 무결성
  • 데이터 보안
  • 쉬운 질의어
  • 다양한 사용자 인터페이스의 제공

2.2 파일 시스템과 DBMS

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

파일의 기본적인 구성요소는 순차적인 레코드들이다. 한 레코드는 연관된 필드들의 모임이다. 화일 시스템에서는 정보를 운영 체제의 파일에 저장한다.

파일을 접근하는 방식이 응용 프로그램 내에 상세하게 표현되므로 데이터에 대한 응용 프로그램의 의존도가 높아 응용 프로그램마다 하나 이상의 파일과 대응되고, 파일 내의 데이터 구조가 으용 프로그램에 반영된다.

파일 시스템의 단점

파일 시스템은 별도의 구입 비용을 지출하지 않고도 사용할 수 있고 속도가 빠르다는 장점이 있지만 단점도 존재한다.

  • 데이터가 많은 파일에 중복해서 저장된다.
  • 다수 사용자들을 위한 동시성 제어가 제공되지 않는다.
  • 질의어가 제공되지 않는다.
  • 보안 조치가 미흡하다.
  • 회복 기능이 없다.
  • 독립성이 없으므로 유지보수 비용이 크다.
  • 데이터 모델링 개념이 부족하다.
  • 무결성을 유지하기 어렵다.
  • 생산성이 낮다.
  • 데이터의 공유가 부족하다.
  • 융통성이 부족하다. - 여러 파일로부터 원하는 데이터를 검색하는 것이 어렵다.

DBMS를 사용한 데이터베이스 관리

파일 기반 방식의 단점은 데이터의 정의가 프로그램에 내포되어 있다는 것과 프로그램에서 데이터를 접근하고 조작하는 것 이외에 별도의 제어가 없다는 두 가지 요인 떄문에 발생한다.

DBMS방식은 여러 사용자/ 응용 프로그램이 공유하며, 조직체의 정보 요구에 부응하기 위하여 설계된다.

특징

  • 여러 사용자/응용 프로그램들이 데이터베이스를 공유한다.
  • 사용자의 질의를 빠르게 수행할 수 있는 인덱스 등의 접근 경로를 DBMS가 자동적으로 선택하여 수행한다.
  • 권한이 없는 사용자로부터 데이터 베이스를 보호한다.
  • 여러 사용자에 적합한 다양한 인터페이스를 제공하고, 데이터 간의 복잡한 관계를 표현하며, 무결성 제약조건을 DBMS가 자동적으로 유지한다.
  • 시스템이 고장나면 데이터베이스를 고장 전의 일관된 상태로 회복시킨다.

데이터베이스의 테이블과 파일 시스템의 파일의 차이점은 DBMS는 데이블에 입력되는 데이터를 최종적으로 파일에 저장하게 된다는 것이다. 하나의 테이블에 속한 데이터가 여러 개의 파일에 걸쳐 있을 수 있고, 여러 개의 테이블의 데이터가 하나의 파일에 저장될 수 있다.(프로그램-데이터 독립성이기 때문이다.)

 

DBMS의 장점

  • 중복성과 불일치가 감소된다.
  • 사용자에게 보다 나은 서비스가 제공된다.
  • 프로그램-데이터 독립성이 향상된다.
  • 시스템을 개발하고 유지하는 비용이 감소된다.표준화를 시행하기가 용이하다.
  • 보안이 향상된다.
  • 무결성이 향상된다.
  • 조직체의 요구사항을 식별할 수 있다.
  • 다양한 유형의 고장으로부터 데이터베이스를 회복할 수 있다.
  • 데이터베이스의 공유와 동시 접근이 가능하다.

DBMS의 단점

  • 소프트웨어의 규모가 크고 복잡해서 파일 방식보다 많은 하드웨어 자원을 필요로 하므로 추가적인 하드웨어 구입 비용이 들고, DBMS 자체의 구입 비용도 비싸다.
  • 데이터베이스 분야의 기술에 대한 교육비용도 많이 든다.
  • DBMS가 자동적으로 데이터베이스의 일관성을 유지하기 위해서 컴퓨터의 자원을 많이 필요로 하므로 응답 시간이 많이 걸릴 수 있다.

1.3 DBMS 발전 과정

데이터 모델

데이터 모델은 데이터베이스의 구조를 기술하는 데 사용되는 개념들의 집합인 구조(데이터 타입과 관계), 이 구조 위에서 동작하는 연산자들, 무결성 제약조건들로 이루어진다.

 

각 데이터 모델은 공통된 목적을 갖고있는데, 사용자에게 내부 저장 방식의 세세한 사항은 숨기면서 데이터에 대한 직관적인 뷰를 제공하는 동시에 이들 간의 사상을 제공하는 것이다.

 

데이터 모델은 여러 가지로 분류할 수 있다.

개념적 데이터 모델 - 사람이 인식하는 것과 유사하게 데이터베이스의 전체적인 논리적인 구조를 명시

  • Entity-Relationship 데이터 모델
  • 객체 지향 데이터 모델

물리적 데이터 모델 - 데이터베이스에 데이터가 어떻게 저장되는가를 기술

  • Unifying, ISAM, VSAM

표현(구현) 데이터 모델  - 최종 사용자가 이해하는 개념이면서 컴퓨터 내에서 데이터가 조직되는 방식과 멀리 떨어져 있지는 않다.

  • 계층 데이터 모델
  • 네트워크 데이터 모델
  • 관계 데이터 모델
  • 객체 데이터 모델
  • 객체-관계 데이터 모델

DBMS의 발정과정

60~70년대 - 계층 및 네트워크 DBMS

80년대 초반 이후 - 관계 DBMS

80년대 후반 - 객체 지향 DBMS

90년대 후반 - 객체 관계 DBMS

 

계층 DBMS

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

장점

  • 데이터가 트리 형태로 모델링될 수 있을 때 계층 데이터 모델은 훌륭한 선택

단점

  • 어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 함.
  • 데이터베이스가 생성될 때 각각의 관계가 명시적으로 정의되어야 함.
  • 레코드들이 링크로 연결되어 있으므로 레코드구조를 변경하기 어려움
  • 응용 프로그램을 수정하는 것도 어려움.
  • 데이터 독립성이 매우 제한됨.
  • 질의어는 절차적이므로 한 번에 한 개의 레코드를 검색 할 수 있음

네트워크 DBMS

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

특징

  • 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움
  • 응용 프로그램을 수정하는 것도 어려움
  • 독립성이 매우 제한됨
  • 질의어는 절차적이므로 한 번에 한 개의 레코드를 검색할 수 있음.

 

관계 DBMS

테이블을 기반으로 하는 데이터 모델(관계 데이터 모델)을 사용한 DBMS

장점

  • 모델이 간단하여 이해하기 쉬우며, 사용자는 자신이 원하는 것(what)만 명시하고, 데이터가 어디에 있는지, 어떻게 접근해야 하는지는 DBMS가 결정

 

객체 지향 DBMS

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

장점

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

객체 관계 DBMS

관계 DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델을 사용한 DBMS

 

1.4 DBMS 언어

데이터베이스를 구축하기 위해서 사용자는 먼저 데이터베이스 스키마를 정의한 후에  DBMS에서 제공하는 연산자들을 사용하여 데이터를 저장, 검색, 수정, 삭제하게 된다.

 

데이터 정의어(DDL: Data Definition Language)

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

 

데이터 조작어(DBL: Data Manipulation Language)

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

  • 절차적 언어 - 어떤 데이터가 필요하고 어떻게 데이터를 찾을 것인가를 명시
  • 비절차적 언어 - 어떤 데이터를 원하는가만 명시하고 데이터를 검색하는 방법은 명시하지 않음.

데이터 제어어(DCL: Data Cofntrol Language)

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

 

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

ANSI/SPACRC 아케텍처

DBMS의 주요 목적은 사용자에게 데이터에 대한 추상적인 뷰를 제공하는 것이다.

현재의 대부분의 상용 DBMS 구현에서 사용되는 일반적인 아키텍처는 ANSI/SPARC 아키텍처로 물리적, 개념적, 외부 단계로 3단계로 이루어져 있다.

  • 외부 단계 : 각 사용자의 뷰 , 여러 부류의 사용자를 위해 동일한 개념 단계로부터 다수의 서로 다른 뷰가 제공될 수 있다.
  • 개념 단계 : 사용자 공동체의 뷰 , 조직체의 정보 모델로서, 물리적인 구현은 고려하지 않으면서 조직체 전체에 관한 스키마를 포함한다. 
    데이터베이스에 어떤 데이터가 저장되어 있으며, 데이터 간에는 어떤 관계가 존재하고, 어떤 무결성 제약조건들이 명시되어 있는가를 기술
  • 내부 단계 : 물리적 또는 저장 뷰 , 실제의 물리적인 데이터 구조에 관한 스키마
    데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가를 기술
  • 스키마 간의 사상
    • 외부/개념사상 : 외부 단게의 뷰를 사용해서 입력된 사용자의 질의를 개념 단계의 스키마를 사용한 질의로 변환
    • 개념/내부사상 : 다시 내부 단계의 스키마로 변환하여 디스크의 데이터베이스를 접근

데이터 독립성

ANSI/SPARC 아키텍처의 주요 목적은 데이터 독립성을 제공하는 것이다.

데이터 독립성은 상위 단계의 스키마 정의에 영향을 주지 않으면서 어떤 단계의 스키마 정의를 변경할 수 있음을 의미

  • 논리적 데이터 독립성 - 개념 스키마의 변화로부터 외부 스키마가 영향을 받지 않음
  • 물리적 데이터 독립성 - 내부 스키마의 변화가 개념 스키마에 영향을 미치지 않으며, 따라서 외부 스키마에도 영향을 미치지 않음을 의미

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

시스템 카탈로그와 저장된 데이터베이스

 

  • 데이터 정의어 컴파일러 :데이터 정의어를 사용하여 테이블 생성을 요청하면, 번역하여 테이블이 파일 형태로 데이터베이스에 만들어지고 이 테이블에 대한 명세가 시스템 카탈로그에 저장 됨.
  • 질의 처리기 : 데이터 조작어를 수행하는 최적의 방법을 찾는 모듈
  • 런타임 데이터베이스 관리기 : 디스크에 저장된 데이터베이스를 접근하는 모듈

데이터베이스 시스템을 운영하는 역할에 따라 데이터베이스 시스템의 아키텍처를 몇 가지 유형으로 구분할 수 있다.

중앙 집중식 데이터베이스 시스템

데이터베이스 시스템이 하나의 컴퓨터 시스템에서 운영된다.

중앙의 컴퓨터에 저장된  데이터베이스를 여러 단말기에서 접근한다.

 

분산 데이터베이스 시스템

네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영된다.

 

클라이언트-서버 데이터베이스 시스템

중앙 집중식 데이터베이스 시스템에서는 자체 처리 능력이 없는 단말기를 통해 중앙의 데이터베이스를 접근하지만 클라이언트-서버 데이터베이스 시스템에서는 pc 또는 워크스테이이션처럼 자체 컴퓨팅 능력을 가직 클라이언트를 통해 데이터베이스서버를 접근한다.

  • 2층 모델 - 클라이언트와 데이터베이스 서버가 직접 연결
  • 3층 모델 - 클라이언트와 데이터베이스 서버 사이에 응용 서버가 추가됨.

데이터베이스를 보다 ㅇ넓은 지역에서 접근할 수 있고, 성능이 향상되며, 하드웨어 비용이 절감된다는 장점과 보안이 취약하다는 단점이 있다.