데이터베이스 시스템

데이터베이스 스키마

전체적인 데이터베이스 구조.

  • 자주 변경되지는 않는다.
  • 데이터베이스의 모든 가능한 상태를 미리 정의한다

데이터베이스 상태

특정 시점의 데이터베이스의 내용을 의미한다

  • 시간이 지남에 따라 계속해서 바뀐다

데이터베이스 구분

  • 시스템 카탈로그와 저장된 데이터베이스로 구분됨.
  • 시스템 카탈로그(system catalog)는 저장된 데이터베이스의 스키마 정보를 유지

파일 시스템

DBMS가 등장하지 않았을때인 1960년대부터 사용되어 온 데이터 저장 방식이다.

  • 정보를 운영체제의 파일에 저장한다.
  • 파일을 접근하는 방식이 응용 프로그램 내에 상세하게 표현되어 데이터에 대한 응용프로그램의 의존도가 높다.

장점

  • 벌도의 구입 비용을 지출하지 않고도 사용할 수 있고 속도가 빠르다.

단점

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

DBMS(Database Management System)

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

데이터 모델

  • 개념적 데이터 모델(conceptual data model): 사람이 인식하는 것과 유사하게 데이터베이스의 전체적인 논리적 구조를 명시한다.
    • 엔티티-관계(ER: Entity-Relationship) 데이터 모델, 객체 지향 데이터 모델
  • 표현 데이터 모델(representations data model): 최초 사용자가 이해하는 개념
    • 계층 데이터 모델(hierarchical data model)
    • 네트워크 데이터 모델(network data model)
    • 관계 데이터 모델(relational data model)
  • 물리적 데이터 모델(physical data model): 데이터베이스에 데이터가 어떻게 저장되는가를 기술.
    • Unifying, ISAM, VSAM 등

DBMS 발전 과정

응용과 DBMS 기능 사이의 갭을 줄이는 방향으로 DBMS가 발전하고 있다.

계층 DBMS

  • 1960년대 후반에 최초의 계층 DBMS 등장(IBM사의 IMS)
  • 트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS

장점

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

단점

  • 어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 한다
  • 데이터베이스가 생성될 때 각각의 관계를 명시적으로 정의해야 한다
  • 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어렵다

네트워크 DBMS

  • 1960년대 초에 Charles Bachman이 하니웰(Honeywell) 사에서 최초의 네트워크 DBMS인 IDS를 개발
  • 레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델을 사용한다
  • 네트워크 DBMS에서도 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어렵다

관계 DBMS

  • 1970년에 E.F. Codd가 IBM 연구소에서 관계 데이터 모델을 제안
  • 관계 데이터 모델을 사용한 DBMS를 구현하는 두 개의 프로젝트 진행
    • 미국 IBM 연구소에서 진행된 System R
    • 캘리포니아 버클리대에서 진행된 Ingres 프로젝트
  • 모델이 간단하여 이해하기 쉽다
  • 사용자는 자신이 원하는 것(what)만 명시하고, 데이터가 어디에 있는지, 어떻게 접근해야 하는지는 DBMS가 결정한다
    • Oracle, MS SQL Server, Sybase, DB2, Informix, MySQL 등

객체 지향 DBMS

  • 1980년대 후반 들어 새로운 데이터 모델인 객체 지향 데이터 모델이 등장
  • 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델
  • 데이터와 프로그램을 그룹화하고, 복잡한 객체들을 이해하기 쉬우며, 유지와 변경이 용이하다
    • ONTOS, OpenODB, GemStone, ObjectStore, Versant, O2 등

객체 관계 DBMS

  • 1990년대 후반에 관계 DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델 제안
    • Oracle, Informix Universal Server, UniSQL 등

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

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

기본적인 기능

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

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

  • 데이터베이스 내의 원하는 데이터를 검색하고, 수정하고, 삽입하고, 삭제한다
  • 절차적 언어(procedural language)
    • 어떤 데이터가 필요하고 어떻게 데이터를 찾을 것인가를 명시
  • 비절차적 언어(non-procedural language)
    • 어떤 데이터를 원하는가만 명시
    • 관계 DBMS에서 사용되는 SQL은 대표적인 비절차적 언어
  • 데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등의 고급 프로그래밍 언어로 작성된 프로그램에 내포되어 사용된다

기본적인 기능

  • 데이터의 검색 : SELECT
  • 데이터의 수정 : UPDATE
  • 데이터의 삭제 : DELETE
  • 데이터의 삽입 : INSERT

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

  • 트랜잭션과 권한 관리

DBMS 사용자

  • 데이터베이스 관리자(DBA: Database Administrator) : 조직의 여러 부분의 상이한 요구를 만족시키기 위해서 일관성 있는 데이터베이스 스키마를 생성하고 유지
  • 응용 프로그래머 : 데이터베이스 위에서 특정 응용이나 인터페이스를 구현
    • 고급 프로그래밍 언어로 응용 프로그램 개발
    • 데이터베이스 접근은 내포된 데이터 조작어 사용
  • 최종 사용자(end user) : 질의, 갱신, 보고서 생성을 위해 데이터베이스 사용
  • 초보 사용자 : 기작성 트랜잭션을 주로 반복해서 수행
  • 데이터베이스 설계자(database designer) : ERWin 등 CASE 도구를 이용해서 데이터베이스 설계 담당
    • 데이터베이스의 일관성을 유지하기 위해서 정규화 수행
  • 오퍼레이터(operator) : DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리

ANSI/SPARC 아키텍처

대부분 상용 DBMS에서 사용하는 일반적인 아키텍처이다.

  • 외부 단계(external level): 각 사용자가 갖는 뷰
    • 여러 부류의 사용자를 위해 동일한 개념 단계로부터 다수의 서로 다른 뷰가 제공될 수 있다
    • 최종 사용자와 응용 프로그래머들은 데이터베이스의 일부분에만 관심을 가진다
  • 개념 단계(conceptual level): 사용자 공동체의 뷰
    • 물리적인 구현은 고려하지 않고 전체에 관한 스키마를 포함
    • 데이터베이스에 어떤 데이터가 저장되어 있으며, 데이터 간에는 어떤 관계가 존재하고, 어떤 무결성 제약조건들이 명시되어 있는가를 기술
    • 조직체의 정보 모델로 데이터베이스마다 오직 한 개의 개념 스키마가 존재
  • 내부 단계(internal level): 물리적 또는 저장 뷰
    • 실제의 물리적인 데이터 구조에 관한 스키마
    • 데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가를 기술
    • 인덱스, 해싱 등과 같은 접근 경로, 데이터 압축 등

데이터 독립성

ANSI/SPARC 아키텍처의 주요 목적은 데이터 독립성(상위 단계의 스키마 정의에 영향을 주지 않으면서 어떤 단계의 스키마 정의를 변경할 수 있음)을 제공하는 것이다.

논리적인 데이터 독립성(logical data independence)

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

물리적인 데이터 독립성(physical data independence)

  • 내부 스키마의 변화가 개념적 스키마, 외부 스키마(또는 응용 프로그램)에 영향을 미치지 않음을 의미한다
  • 내부 스키마의 변화의 예: 파일의 저장 구조를 바꾸거나 인덱스를 생성 및 삭제

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

데이터 베이스 시스템 자체의 아키텍처가 있다.

데이터베이스 API

  • 공통적으로 사용되는 데이터베이스 접근 유형을 위한 라이브러리 함수들의 모임
  • 데이터베이스에 대한 접근을 간단하게 하며, 데이터베이스 간의 차이점을 숨긴다
  • 대표적인 데이터베이스 API 표준
    • ODBC(Open Database Connectivity) : 마이크로소프트 사가 주도적으로 개발한 데이터베이스 API
    • JDBC(Java Database Connectivity) : 자바를 위한 드라이버로서 자바가 운영되는 모든 플랫폼에서 지원

유형

  • 중앙 집중식 데이터베이스 시스템 : 데이터베이스 시스템이 하나의 컴퓨터 시스템에서 운영된다
    • 단점 : 다른 지역의 네트워크도 하나의 서버에 접근해야한다.
  • 분산 데이터베이스 시스템
    • 네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영된다
    • 사용자는 다른 사이트에 저장된 데이터베이스도 접근할 수 있다
  • 클라이언트-서버 데이터베이스 시스템 : PC 또는 워크스테이션처럼 자체 컴퓨팅 능력을 가진 클라이언트를 통해 데이터베이스 서버를 접근한다
    • 데이터베이스가 하나의 데이터베이스 서버에 저장되어 있다
    • 데이터베이스 시스템의 기능이 서버와 클라이언트에 분산된다
  • 클라이언트-서버 아키텍처
    • 2층 모델(2-tier model) : 클라이언트와 데이터베이스 서버가 직접 연결됨
    • 3층 모델(3-tier model) : 클라이언트와 데이터베이스 서버 사이에 응용 서버가 추가됨
김땡땡's blog

김땡땡's blog

김땡땡