DBMS

9yur1·2022년 5월 4일
0

🌳 DB

목록 보기
2/2

✅ DBMS 발전 과정

🔶 데이터 모델

  • 데이터베이스의 구조를 기술하는데 사용되는 개념들의 집합인 구조 (데이터 타입과 관계), 이 구조 위에서 동작하는 연산자들, 무결성 제약조건들
  • 사용자에게 내부 저장 방식의 세세한 사항은 숨기면서 데이터에 대한 직관적인 뷰를 제공하는 동시에 이들 간의 사상을 제공

데이터 모델의 분류

고수준 또는 개념적 데이터 모델 (conceptual data model)

  • 사람이 인식하는 것과 유사하게 DB의 전체적인 논리적 구조 명시
  • 예 : 엔티티-관계(ER:Entity-Relationship) 데이터 모델객체 지향 데이터 모델

표현(구현) 데이터 모델 ( representation(implementation) data model)

  • 최종 사용자가 이해하는 개념이면서 컴퓨터 내에서 데이터가 조직되는 방식과 멀리 떨어져 있지는 않음.
  • 예 : 계층 데이터 모델(hierachical data model), 네트워크 데이터 모델(network data model), 관계 데이터 모델(relational data model)

저수준 또는 물리적인 데이터모델(physical data model)

  • DB에 데이터가 어떻게 저장되는가를 기술
  • 예 : Unifying, ISAM, VSAM

🔶 계층 DBMS

  • 1960년대 후반에 최초의 계층 DBMS가 등장 (예: IBM 사의 IMS)
  • 트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS
  • 계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례
  • one-to-many 관계는 잘 처리하나 many-to-many 관계는 그렇지 못 함.

Advantages

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

Disadvantages

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

🔶 네트워크 DBMS

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

🔶 관계 DBMS

  • 1970년에 E.F. Codd가 IBM 연구소에서 관계 데이터 모델을 제안
  • 미국 IBM 연구소에서 진행된 System R과 캘리포니아 버클리대에서 진행된 Ingres 프로젝트
  • 예 : 오라클, MS SQL Server, Sybase, DB2, Informix

Advantages

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

🔶 객체지향 DBMS

  • 1980년대 후반 들어 새로운 데이터 모델인 객체 지향 데이터 모델이 등장
  • 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델
  • 예 : ONTOS, OpenODB, GemStone, ObjectStore, Versant, O2

Advantages

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

🔶 객체관계 DBMS

  • 1990년대 후반에 관계 DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안됨.
  • 예 : 오라클, Informix Universal Server

✅ DBMS 언어

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

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

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

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

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

  • 사용자는 데이터 조작어를 사용하여 데이터 베이스 내의 원하는 데이터를 검색하고 수정하고 삽입하고 삭제
  • 절차적 언어 (procedure language)와 비절차적 언어(non-procedure language)
  • 관계 DBMS에서 사용되는 SQL은 대표적인 비절차적 언어
  • 대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 갖고 있음.
  • 데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등의 고급 프로그래밍 언어로 작성된 프로그램에 내포 되어 사용됨.

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

    1. 데이터의 검색
      예 : SQL에서 SELECT
    2. 데이터의 수정
      예 : SQL에서 UPDATE
    3. 데이터의 삭제
      예 : SQL에서 DELETE
    4. 데이터의 삽입
      예 : SQL에서 INSERT

🔶 데이터 제어어 (DDL : Data Control Language)

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

✅ DBMS 사용자

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

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

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

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

🔶 응용 프로그래머

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

🔶 최종 사용자 (end user)

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

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

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

🔶 오퍼레이터

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

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

🔶 ANSI/SPARC 아키텍처

  • 현재의 대부분의 상용 DBMS 구현에서 사용되는 일반적인 아키텍처는 1978년에 제안된 ANSI/SPARC 아키텍처
  • ANSI/SPARC 아키텍처의 3단계는 물리적, 개념적, 외부 단계로 이루어짐.
    • 외부 단계 (external level) : 각 사용자의 뷰
    • 개념 단계 (conceptual level) : 사용자 공동체의 뷰
    • 내부 단계 (internal level) : 물리적 또는 저장 뷰

외부단계

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

개념단계

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

내부단계

  • 실제의 물리적인 데이터 구조에 관한 스키마
  • 데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가를 기술함.
  • 인덱스, 해싱 등과 같은 접근 경로, 데이터 압축 등을 기술함.
  • 데이터베이스의 개념 스키마에는 영향을 미치지 않으면서 성능을 향상시키기 위해 내부 스키마를 변경하는 것이 바람직
  • 내부 단계 아래는 물리적 단계
  • 물리적 단계는 DBMS의 지시에 따라 운영 체제가 관리함.

🔶 스키마 간의 사상

  • DBMS는 3가지 유형의 스키마 간의 사상을 책임짐
  • 외부/개념 사상
    • 외부 단계의 뷰를 사용해서 입력된 사용자의 질의를 개념 단계의 스키마를 사용한 질의로 변환
  • 개념/내부 사상
    • 이를 다시 내부 단계의 스키마로 변환하여 디스크의 데이터베이스에 접근

🔶 데이터 독립성(⭐⭐⭐)

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

  • 논리적인 데이터 독립성 ( logical data independence ) : 외부단계와 개념단계 사이
  • 물리적인 데이터 독립성 ( physical data independence ) : 개념단계와 내부단계 사이

논리적 데이터 독립성

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

물리적 데이터 독립성

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

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

🔶 Module

1. 데이터 정의어 컴파일러 (DDL compiler) 모듈

  • 데이터 정의어를 사용하여 테이블 생성을 요청하면 테이블을 파일 형태로 데이터베이스에 만들고, 이 테이블에 대한 명세를 시스템 카탈로그에 저장

2. 질의 처리기 (query processor) 모듈

  • 데이터 조작어를 수행하는 최적의 방법을 찾는 모듈을 통해서 기계어 코드로 번역

3. 런타임 데이터베이스 관리기 (run-time database manager) 모듈

  • 디스크에 저장된 데이터베이스에 접근

4. 트랜잭션 관리 (transaction management) 모듈

  • 동시성 제어 (concurrency control) 모듈
  • 회복 (recovery) 모듈

🔶 데이터베이스 API (Application Program Interface)

  • ODBC (Open Database Connectivity)는 마이크로 소프트사가 주도적으로 개발한 DB API
  • ODBC를 지원하는 DBMS 간에는 서로 상대방의 DB를 접근할 수 있음.
  • bridge : 서로 다른 API 제공하는 것을 연결

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

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

🔶 분산 데이터베이스 시스템

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

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

  • PC 또는 워크스테이션처럼 자체 컴퓨팅 능력을 가진 클라이언트를 통해 DB 서버에 접근.
  • DB가 하나의 DB 서버에 저장되어 있음.
  • DB 시스템의 기능이 서버클라이언트분산됨.
  • 서버는 DB를 저장하고 DBMS를 운영하면서 여러 클라이언트에서 온 질의를 최적화하고, 권한 검사를 수행하고, 동시성 제어회복기능을 수행하고, DB의 무결성을 유지하고, DB 접근을 관리
  • 클라이언트는 사용자 인터페이스를 관리하고 응용들을 수행

2층모델 ( 2-tier model )

  • 클라이언트와 데이터베이스 서버가 직접 연결됨.

3층모델 ( 3-tier model )

  • 클라이언트와 데이터베이스 서버 사이에 응용서버가 추가됨.

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

  • 데이터 베이스를 보다 넓은 지역에서 접근 가능.
  • 다양한 컴퓨터 시스템을 사용할 수 있음.

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

  • 보안이 다소 취약할 수 있음.
profile
Best results with extreme efficiency

0개의 댓글