leebaek

[데이터베이스] C1_2 | Introduction to Databases 본문

수업 정리/데이터베이스

[데이터베이스] C1_2 | Introduction to Databases

leebaek 2024. 3. 21. 15:03

1-4. DBMS Language

DDL ( Date Definition Language )

- 사용자는 DDL을 사용하여 데이터베이스 schema를 정의한다.

- DDL에서 지정한 문장이 입력되면, DBMS는 system catalog(=data dictionary)안에 사용자가 정의한 schema를 저장한다.

 

▶ DDL의 기본 기능

- 데이터 모델이 지원하는 데이터 구조 만들기

ex. SQL에서 테이블 create

 

- 데이터 구조 변경하기

ex. SQL에서 테이블 alert

 

- 데이터 구조 삭제하기

ex. SQL에서 테이블 drop

 

- 데이터 액세스를 위해 특정 속성에 대한 인덱스 정의

ex. SQL에서 인덱스 생성


DML ( Data Manipulation Language )

- 사용자는 DML을 사용하여 데이터베이스에서 원하는 데이터를 검색, 수정, 삭제, 삽입한다.

- 절차적 언어와 비절차적 언어이다.

- SQL은 관계형 DBMS를 사용한 대표적인 비절차적(논프로시저) 언어이다.

- 대부분의 DML에는 SUM, COUNT, AVG와 같은 내장 함수가 있다.

- 터미널을 통해 대화식으로 입력되거나 C, C++, COBOL과 같은 고급 언어로 작성된 프로그램으로 구축되어 사용되는 방식으로 수행된다.

 

▶ DML의 기본 기능

- 데이터 검색 : SQL에서 SELECT

- 데이터 수정 : SQL에서 UPDATE

- 데이터 삭제 : SQL에서 DELETE

- 데이터 삽입 : SQL에서 INSERT


DCL ( Data Control Language )

- 사용자는 DCL을 사용하여 데이터베이스에 트랜잭션을 지정하고, 권한을 부여하거나 취소한다.


1-5. DBMS Users

 

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

- 일관된 데이터베이스 Schema를 생성하고, 조직 내 다양한 부분의 다양한 요구사항을 만족하기 위해 그것을 유지한다.

 

▶ DBA의 역할

- 데이터베이스 Schema 생성 및 변경

- 무결성 제약 조건 지정

- 사용자 권한을 허용 또는 취소하고, 사용자의 역할을 관리한다.

- 저장 구조 및 접근 방식(물리적 schema)을 정의한다.

- 백업 및 복구

- 표준화 실시


□ Application programmer

- 특정 어플리케이션(ex. 고객관리, 사람 자원 관리, 재고 관리 등) 구현 또는 데이터베이스 인터페이스

- C, C++, COBOL과 같은 고급 프로그래밍 언어를 사용하는 어플리케이션을 개발하는 동안 데이터베이스 액세스를 위해 내장된 DML을 사용한다.

- 어플리케이션 프로그래머가 작성한 프로그램은 최종 사용자가 반복 사용하기 때문에 "canned transactions"이라고 부른다.

cf ) canned transactions : 데이터베이스 시스템에서 사전 프로그래밍되고 사전 정의된 작업 또는 단계 집합
transaction은 task 하나라고 보면 됨

End user | 최종 사용자

- 데이터베이스를 사용하여 쿼리, 업데이트 또는 보고서를 생성한다.

- 쿼리 언어를 사용하여 각자의 시간에 서로 다른 정보를 검색하는 사람들을 '일반 사용자(casual users)'라고 한다.

- canned transactions(미리 준비된 거래)을 반복적으로 하는 사람들을 '초보 사용자(novice users)'라고 한다.


Database desinger

- ERwin과 같은 CASE tool을 사용하여 데이터베이스를 설계한다.

- 데이터베이스 일관성을 유지하기 위해 정규화를 수행한다.


Operator | 운영자

- DBMS를 운영하는 전산 시스템 및 센터를 관리한다.


1-6. ANSI/SPARC Architecture and Data Independence | 아키텍처 및 데이터 독립성

ANSI/SPARC 아키텍쳐

- 최신 상업용 개발에 사용되는 일반적인 아키텍쳐는 1987년에 제안된 ANSI/SPARC 아키텍쳐이다.

- 세가지 레벨로 구성된다

External Level : 각 사용자의 뷰

Conceptual Level : 커뮤니티 사용자 뷰

Internal Level : 물리적 또는 저장소 뷰


External Level

- 데이터베이스의 각 사용자에 대한 보기

- 다양한 종류의 사용자를 위한 동일한 개념에서 여러가지 다른 뷰를 제공할 수 있다.

- 일반적으로 최종 사용자와 어플리케이션 프로그램은 오직 데이터베이스의 일부에만 관심을 가진다.

- 동일한 데이터에 대해 다른 표현을 제공할 수 있다.

사용자/프로그램은 전체 데이터에 관심 X -> 필요한 일부분에만 관심 O

□ Conceptual Level

- 물리적 구현을 고려하는 것 없이, 조직 전체에 대한 schema를 포함하는 조직의 정보 모델을 말한다.

- 어떤 데이터가 저장되어있는지, 데이터 간의 관계가 어떤지, 어떤 무결성 제약 조건이 지정되어 있는지 설명한다.

- 데이터베이스 구조 전체의 논리적 구조를 설명한다.

- 각각의 데이터베이스에 대해 하나의 개념적 schema만 존재한다.

- 데이터베이스에 대한 사용자 커뮤니티 뷰를 나타낸다.

- 저장 구조로부터 독립성을 가진다.


Internal Level

- 실제 물리적 데이터 구조를 설명하는 Schema이다.

- 데이터가 데이터베이스에 저장되는 내용과 방법을 설명한다.

- 인덱스 및 해싱, 데이터 압축 등의 접근 경로에 대해 설명한다.

- conceptual schema에 영향을 주지 않고, 성능 향상을 위해 internal schema 변경이 가능하다. (독립성)

- 물리적 저장 장치를 직접 운영하지 않는다.

- physical level은 internal level보다 아래에 있다.

- physical level은 DBMS의 지시에 따라 OS에 의해 운영된다.


Mapping between schemas

 

- DBMS는 세가지 유형의 Schema간의 맵핑을 담당한다.

 

External / Conceptual mapping

- External level의 View에 입력된 사용자 쿼리를 Conceptual level의 Schema를 사용한 쿼리로 변형시킨다.

 

Conceptual / Internal mapping

- Conceptual schema다시 internal level의 schema로 변형시켜 디스크의 데이터베이스에 접근한다.


□ 데이터 독립성

: 특정 수준의 schema 정의를 상위 수준의 schema 정의에 영향을 주지않고 변경 가능한 것을 의미한다.

- Logical data independence | 논리적 데이터 독립성

- Physical data independence | 물리적 데이터 독립성

 


Logical data independence | 논리적 데이터 독립성

- conceptual schema를 변경해도 external schema는 아무런 영향을 받지 않는다.

- 어플리케이션 및 이전  external schema를 재작성하지 않고 conceptual schema를 변경할 수 있어야 한다.

 

▶ Physical data independence | 물리적 데이터 독립성

- internal schema를 변경해도 conceptual schema은 아무런 영향을 받지 않는다. 따라서 external schema도 영향을 받지 않는다.

ex. 변경예시 ) 저장소 구조 변경, 파일 생성, 인덱스 생성 및 삭제


1-7. Database system Architecture

 

DDL Compiler module

- DDL을 사용하여 table 생성을 요청하는 경우,

이 모듈은 데이터베이스에서 테이블을 파일로 만들고 테이블 사양을 system catalog에 저장한다.

 

 Query processor module

- DML을 수행하기 위한 최적화 방법을 찾는 모듈을 통해 쿼리를 기계어로 변환시킨다.

 

 Run-time database manager module

- 디스크에 저장된 데이터베이스에 액세스합니다.

 

 Transaction management module

- 동시성 제어

- 복규 모듈


Application Program Interface ( API ) | 응용 프로그램 인터페이스

- ODBC ( Open Database Connectivity )는 마이크로 소프트에서 개발된 database API이다.

- ODBC를 지원하는 DBMS간에는 상대방의 데이터베이스 액세스가 가능하다.


Centralized database system | 중앙 집중식 데이터베이스 시스템

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


Distributed database system | 분산 데이터베이스 시스템

- 데이터베이스는 네트워크를 통해 연결된 여러 사이트에 분산되어있고, 여러 컴퓨터 시스템에서 운영된다.

- 사용자는 다른 사이트에 저장된 데이터베이스에 액세스 할 수 있다.


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

- PC 또는 워크스테이션과 같은 자체 컴퓨팅 기능을 가진 클라이언트를 통해 데이터베이스 서버에 액세스한다.

- 데이터베이스는 하나의 데이터베이스 서버에 저장된다.

- 데이터베이스 서버의 기능은 서버와 클라이언트에 분산되어 있다.

- 서버는 데이터베이스 저장, DBMS 운영, 클라이언트로부터 쿼리를 최적화, 권한 검사 수행, 동시성 제어 및 복구 수행, 데이터베이스 무결성 유지, 데이터베이스 액세스 관리 기능을 가진다.

- 클라이언트는 사용자 인터페이스를 관리하고 어플리케이션을 수행한다.

 

 2 - tier model 

- 클라이언트와 데이터베이스 서버는 직접 연결된다.

3 - tier model 

- 클라이언트와 데이터베이스 서버 사이에 어플리케이션 서버가 추가되었다.

▷ 장점

- 더 넓은 영역에서 데이터베이스에 접근 가능

- 하드웨어 비용 절감

- 다양한 컴퓨터 시스템을 사용할 수 있다.

 

▷ 단점

- 보안에 다소 취약하다.