본문 바로가기

데이터베이스설계

[데이타베이스설계] 데이타베이스

  • 1-1) DBMS
  • 1-2) View of Data
  • 1-3) 데이터베이스에서의 Language
  • 1-4) 데이터베이스 엔진
  • 1-5) 데이터베이스 구조

 

  • 1-1) DBMS (Database Management System)

DBMS는 database를 create하고 manage 하기위한 software이다.

DBMS는 user와 프로그래머에게 data를 create(생성), retrieve(검색), update(수정), manage(관리) 하기 위한 체계적인 방법을 제공한다.

DBMS는 end user (application 프로그래머) 에게 database에서 data를 CRUD 할 수 있게한다.

* CRUD : create, read, update, delete (생성, 읽기, 수정, 삭제)

DBMS는 end user와 DB 사이에서 data를 지속적으로 조직화시키고 접근가능하도록 인터페이스를 제공한다.

DBMS는 os가 하드웨어 resource를 관리하는 것처럼 data resource를 관리한다.

DBMS는 3가지 중요한 것들을 관리한다.

        - Data

        - Database engine (data에 접근하고 data를 lock하고 수정할 수 있게한다.)

        - Schema (database의 논리구조를 정의한다.)

DBMS는 monitoring(모니터) / tuning(수정, 개선) / backup / recovery(복구) 기능도 제공한다.

        - 자동으로 rollback(=undo, 되돌리기), restart, recovery 기능

 

  • DB System의 목적

옛날엔 database application이 파일 system위에 직접 구축되어서 아래의 문제를 야기시켰다.

1) Data redundancy and inconsistency (데이터 중복과 불일치)

        - 데이터가 여러 파일형식으로 저장돼서 다른 파일에 데이터가 중복됨

2) data에 접근하는데에 어려움

        - data를 이용해서 각각의 새로운 작업을 수행하기 위해 새로운 프로그램을 작성해야한다.

3) Data isolation (데이터 고립)

        - 다양한 파일과 형식이 존재하기에 Data가 그 형식에 맞춰져있어서 고립된다.

4) Integrity problems (무결성 문제) (* Integrity : 데이터베이스에 저장된 데이터의 정확성과 일관성)

        - (계좌잔액 > 0) 같은 데이터의 Integrity Constraint (데이터의 정확성을 위한 제약) 가 명시적으로 언급되지 않고 code레벨에서만 묻혀있다.

        - 존재하는 constraint를 변경하거나 새로운 contraint를 추가하기 어렵다.

5) Atomicity of updates (일부분만 업데이트)

        - 부분적인 update로 인해 데이터베이스가 일관성을 유지하지 못한 상태로 남아있을 수 있다.

        - ex) 계좌에서 이체는 완전히 이뤄지던가 아예 안 일어나야한다. -> 부분적으로만 update해서 한쪽은 돈 보냈는데 다른 한쪽이 돈을 못받으면 안된다.

6) Concurrent access by multiple users (여러 사용자들의 동시접근)

        - 성능을 위해 동시 접근이 필요하다.

        - 제어되지 않는 동시접근은 불일치성을 야기시킨다. ex) 두 사람이 잔액(100)을 읽고 동시에 50을 인출한다.

        - Security Problems : 사용자에게 접근을 제공하기 어렵다.

 

 

 


 

  • 1-2) View of data

 

database의 주된 목적은 사용자에게 data에 대한 추상적인 view를 제공하는 것이다.

1) Data models

        - data, data의 관계, data의 의미, consistency(일관성) constraint 를 설명하는 기능들의 집합이다.

2) Data abstraction

        - data 구조의 복잡성을 숨기고 data 추상화의 몇가지 단계를 통해서 data를 표현하는 database를 제공한다.

 

  • Data models

Data model은 다음 네 가지를 설명하기 위한 기능들의 집합이다.

        - Data

        - Data relationships

        - Data semantics

        - Data constraints

 

Relational model

 

data를 table형태로 modeling 한다.

columns 과 rows로 구성된 구조에서 data의 관계를 이용하는 방법이다.

 

1) Entity-Relationship data model

        - high level의 data 모델이다.

        - data의 element와 관계를 정의하기 위한 모델이다.

        - database의 개념적인 design을 한 것이다.

        - data에 대한 view를 더 쉽고 간단하게 만든다.

2) Object-based data model (object-oriented and object-relational)

3) Semi-structured data model (ex. XML)

 

  • Levels of Abstraction

1) Physical Level : record가 어떻게 저장되어있는지 설명한다. (ex. instructor)

2) Logical Level : database에 저장된 data와 그들의 관계를 설명한다.

3) View Level : application에서는 data의 세부사항은 숨긴다. View level에서는 data 자체도 보안 목적으로 숨긴다.

View of Data : Levels of Abstraction

 

 

 


 

  • 1-3) 데이터베이스에서의 Language

Instances and Schemas

Logical Schemas : 데이터베이스의 전체적인 논리 구조이다. (프로그램에서 변수의 type 정보)

Physical Schemas : 데이터베이스의 전체적인 physical 구조이다.

Instances : 데이터베이스의 실제 instances. (변수의 value)

 

Language 종류

        - DDL (Data Definition Language) : ALTER / CREATE / DROP / RENAME / TRUNCATE

        - DML (Data Manipulation Language) : DELETE / INSERT / UPDATE / SELECT

        - DCL (Data Control Language) : GRANT / REVOKE

        - TCL (Transaction Control Language) : COMMIT / ROLLBACK / SAVEPOINT

 

  • DDL (Data Definition Language)

데이터베이스 schema를 정의하기 위한 언어이다.

DDL 컴파일러는 Data Dictionary 에 저장되어 있는 table 템플릿들을 생성한다.

* Data Dictionary : metadata(data about data) 를 포함한다.

        - Database schema

        - Integrity constraints (Primary key)

        - Authorization (누가 access할 수 있느지)

 

  • DML (Data Manipulation Language)

Data model에 의해 조직화된 data에 접근하고 조작하기 위한 언어이다. (known as query language)

        - insert

        - delete

        - update

        - select

대표적인 DML언어로 SQL(Structured Query Language)가 있다.

 

Structured Query Language(SQL)

        - database에서 query를 실행할 수 있다.

        - database에서 data를 검색할 수 있다.

        - database에 레코드를 삽입 / 수정 / 삭제 (insert / update / delete) 할 수 있다.

        - 새로운 database를 생성할 수 있다.

        - database에 새로운 table을 생성할 수 있다.

        - database의 view를 생성할 수 있다.

 

 

 


 

  • 1-4) 데이터베이스 엔진

데이터베이스 시스템은 전체 시스템을 처리하기 위해 여러 모듈로 분할된다.

        - Storage manager (저장관리)

        - query processor component (query 처리)

        - transaction management componenet (transaction 관리)

 

  • Storage Manager

low level 데이터와 응용프로그램 그리고 query 사이의 interface를 제공하는 프로그램 모듈이다.

하는일 : OS file manager와 상호작용한다. data를 저장하고, 검색하고, 수정한다.

Storage Manager는 다음 요소들을 포함한다.

        - Authorization and integrity manager (권한과 무결성 관리자)

        - Transaction manager (트랜잭션 관리자)

        - File manager (파일 관리자)

        - Buffer manager (버퍼 관리자)

다음과같은 물리적 시스템인 data 구조들을 구현한다.

        - Data files

        - Data dictionary (데이터베이스 구조에 대한 metadata를 저장하고 있고 schema또한 저장하고 있다.)

        - Indices (index를 통해 data item에 빠른 접근을 제공한다.)

 

  • Query Processor

Query Processor는 다음 요소들을 포함한다.

        - DDL interpreter: 데이터베이스에서 테이블, indexes, 사용자와 같은 객체들을 정의한다.

        - DML compiler: query lang에 있는 DM statement를 query 평가 엔진이 이해하는 하위 수준의 명령들로 번역

        - Query evaluation engine : DML 컴파일러에 의해 생성된 저수준의 명령들을 실행한다.

Query Processor

 

  • Transaction Management

Transaction : 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 집합

Transaction-management componenet

system failure와 transaction failure에도 불구하고 데이터베이스가 정확한 데이터를 갖고 있도록 한다.

Concurrency-control manager

transaction의 동시성을 제어하여 데이터베이스의 일관성을 유지시킨다.

(transaction이 동시에 일어나도 이들을 제어하여 데이터베이스에서 데이터의 integrity, consistency를 유지한다.)

 

트랜잭션의 상태

        - Active : transaction이 실행되는 중이다. transaction의 초기 state이다. 

        - Partially Committed : transaction이 마지막 연산까지 실행했지만, Commit연산이 실행되기 직전의 상태이다.

        - Failed : 데이터베이스 복구 system에서 fail로 인해 transaction이 fail함

        - Aborted : transaction이 Failed상태가 되면 recovery manager는 다음 두 가지 중 하나의 행동을 취한다.                  (1) transaction 재시작 / (2) 부분적으로 수행된 transaction kill(취소)

        - Committed : transaction이 operation을 모두 성공적으로 실행하면 영구적으로 database 시스템에 저장된다. 

 

 

 


 

  • 1-5) 데이터베이스 구조

        - Centralized databases : 하나의 컴퓨터 시스템에서 여러개의 core들이 memory를 공유한다. (한 컴퓨터에서만)

        - Client-Server : 하나의 server machine이 다수의 client machine 위에서 작업을 수행한다.

          하나의 데이터베이스 서버에 db가 저장되고 클라이언트가 이 서버에 접근한다.

        - Parallel databases : 다수의 core가 memory를 공유한다. 병렬로 여러개의 서버가 클러스터로 묶임.

Parallel database

 

        - Distributed databases : 네트워크 상에 여러대의 서버가 연결되어 있다.

 

2-tier 구조 : application이 client machine에 상주하고 server machine에 직접 연결된다.

3-tier 구조 : client machine이 front end같은 역할이고 직접적인 database call이 불가능하다.

client - application server - database 형태로 응용서버가 database system으로의 data접근을 이어준다.

 

 

 


 

  • 1-6) 데이터베이스 유저

4종류의 데이터베이스 시스템 유저가 존재한다.

Naive users

이전에 작성된 application program을 불러와서 system과 상호작용하는 유저

Application Programmers

application program을 작성하는 컴퓨터 전문가

Sophiticated users

프로그램을 개발하지 않고 시스템과 상호작용하는 유저 (database query문을 사용하고 data analysis sw를 사용)

Specialized users

전통적인 data-processing framwork에 맞지 않는 database application을 사용하는 유저(graphic data, audio, video)