Database Systems
DBMS (Database Management System)은 다음과 같은 정보를 포함하고 있다.
1. Collection of interrelated data (서로 관계있는 데이터들의 모임)
2. Set of programs to access the data (데이터에 접근하기 위한 프로그램의 집합)
그리고 데이터 베이스는 이러한 데이터들의 모임을 뜻하며, 특히 특정 조직과 관련된 정보들을 포함한다.
DBMS의 주 목적은 An environment that is both convenient and efficient to use (사용하기 편리하고 효율적인 환경)을 제공하는 데에 있다.
또한, 데이터베이스시스템은 귀중하거나 복잡하거나 여러 사람이 동시에 접근하는 데이터들을 관리하기 위해 사용된다. 특히 현대의 데이터베이스시스템은 크고 복잡한 데이터 집합을 관리한다. 데이터베이스는 우리 삶의 모든 측면과 관련되어 있기 때문에 매우 중요하다.
Databse Applications Examples
데이터베이스는 광범위하게 사용되는데, 다음은 적용 예시이다.
- Enterprise Information (기업 정보)
- Sales (판매): customers, products, purchases
- Accounting (회계): payments, receipts, assets
- Human Recsources(인적 자원): Information about employees, salaries, patroll taxes
- Manufacturing(제조업)
- Banking and finance (은행 업무 및 재무)
- Universities (대학)
- Airlines (항공)
- Telecommunication (통신)
- Web-based services (웹 서비스)
- Document databases
- Navigation systems : 정확한 길, 도로, 버스, 기차 시스템과 관련된 장소들의 위치 유지
Purpose of Database Systems
초기에는(DBMS가 등장하기 이전까지는), database application이 파일 시스템에 직접적으로 작성되었다. 하지만 이렇게 파일 시스템에 정보를 저장할 경우 다음과 같은 문제가 발생한다.
1. Data redundancy and inconsistency (데이터 중복과 비일관성) : 보통 여러 프로그래머들에 의해 개발되므로 파일들이 서로 다른 형식과 언어로 저장될 수 있다. 또한, 동일한 정보가 여러 파일에 중복 저장될 수 있다. 예를 들면 철학과 컴퓨터공학을 복수전공하는 학생이 있을 때, 그 학생의 정보는 철학을 전공하는 학생들의 파일에도 저장되고 첨공을 전공하는 학생들의 파일에도 저장될 것이다. 이러한 중복은 저장 공간의 낭비를 초래하고, 데이터 비일관성이 발생하기 쉽다. 왜냐하면 만약 학생의 전화번호가 바뀌었을 때 이것이 철학 파일에만 반영이 되고 컴공 파일에는 반영이 안될 수 있기 때문이다.
2. Difficalty in accessing data (데이터 엑세스 시의 난점) : 새로운 작업을 할 때마다 새로운 프로그램이 필요해진다. 예를 들어 같은 학생 데이터들을 가지고 특정 지역의 학생들의 정보만 필요할 때, 혹은 특정 학점 이상의 학생들의 정보만 필요할 때 등 새로운 조건에서의 정보가 필요할 때마다 그 정보를 추출하는 프로그램을 새로 만들어야 할 것이다. 즉, 파일 시스템에서는 필요한 데이터를 편리하고 효율적으로 검색하기가 힘들다.
3. Data isolation (데이터 고립) : 데이터가 서로 형식도 다르고 여러 파일에 흩어져 있으므로 고립 현상이 발생한다. 즉, 원하는 데이터를 검색하는 프로그램을 작성하기 어렵다.
4. Integrity problems (무결성 문제) : 데이터 베이스 내의 데이터값들은 일정 Integrity constraints(일관성 제약 조건)을 만족해야 한다. 예를 들어 계좌 잔고는 항상 0 이상이어야 한다와 같은 조건을 말한다. 그리고 개발자들은 적절한 코드를 통해 이 조건이 잘 지켜지도록 해야한다. 그러나 파일 시스템 안에서는 새로운 제약 조건이 추가되거나 기존 제약 조건을 변경해야 할 때 기존 프로그램을 일일이 변경하여 제약 조건을 만족시켜야 하기 때문에 쉽지 않다.
5. Atomicity of updates (업데이트에 대한 원자성 문제) : 시스템이 고장/손상이 났을 때 비일관적인 상태가 될 수 있다. 예를 들어 A 계좌에서 B 계좌로 돈을 전송하다가 실패했을 경우, A는 돈이 빠져나갔는데, B에 제대로 돈이 입금되지 않는 상황이 발생할 수 있다. 이러한 일이 발생하지 않으려면 출금과 입금이 원자적으로 이루어져야 하는데, 기존 파일 시스템에서는 이러한 원자성을 보장하기가 어렵다.
6. Concurrent access by multiple users(동시 액세스 문제): 동일한 데이터가 여러 사용자에 의해 갱신될 떄, 동시성 제어가 이루어지지 않을 경우 데이터의 비일관성이 발생할 수 있다. 따라서 동시에 접근하더라도 순서를 지정하여 sequence하게 처리되어야 한다.
7. Security problems (보안 문제) : 사용자에 따라 데이터의 접근 권한을 다르게 하기가 쉽지 않다.
=> 이러한 파일 시스템에서의 문제를 해결하기 위해 DBMS가 고안되었다.
View of Data
DBMS의 목적은 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것이다. 따라서 정확히 데이터가 어떻게 저장되는지에 관한 세부 상항은 사용자에게 알리지 않고, 추상화를 통해 사용자의 이해와 편의를 돕는다.
데이터 추상화의 3가지 단계
physical level(물리적 단계): 데이터가 실제로 어떻게 저장되는지
logical level (논리적 단계) : 어떤 데이터가 저장되어있고 데이터들 사이에 어떤 관계가 있는지. 논리적 단계의 사용자들은 물리적 단계를 알 필요가 없다. 어떤 정보다 데이터베이스의 저장되어야하는지 결정하는 데이터베이스 관리자가 이 단계에서 작업한다.
view level (뷰 단계) : 대부분의 사용자들은 데이터베이스의 모든 데이터가 아닌 자신이 필요한 일부분의 데이터에만 관심이 있다. 따라서 사용자마다 뷰가 다르다.
Instances and Schemas
프로그래밍 언어에서의 변수의 의미와 대응된다.
Instance: 데이터베이스에 저장되어 있는 실제 정보들
Schema: 데이터베이스의 전체적인 설계
logical schema: 논리적 단계에서의 데이터베이스 설계
physical schema: 물리적 단계에서의 데이터베이스 설계
physical data independence: 물리적 스키마(파일 정보)를 바꾸어도 논리적 스키마를 바꿀 필요가 없는 것을 말한다. (서로 독립적이다) 이는 응용프로그램이 직접 물리적 스키마에 의존하지 않고, 논리적 스키마의 단계를 거치기 때문에 가능한 일이다.
Data Model
데이터 모델은 데이터베이스 구조의 기반으로서 데이터, 데이터들 사이 관계, 데이터의 의미, 데이터 제약조건들을 기술하기 위한 집합이다. 데이터 모델은 물리적, 논리적, 뷰 단계에서의 데이터베이스를 설계하는 방법을 제공한다.
1. Relational Model (관계형 모델) : 데이터와 데이터 사이의 관계를 나타내기 위한 테이블들의 모임을 사용한다. 각 테이블은 여러개의 열로 구성된다. 가장 널리 쓰이는 데이터 모델이며 이후 과제에서 사용할 모델이기도 하다. 테이블을 Relation (릴레이션)이라고 한다.
2. Entity-Relationship data model (ER model, 개체-관계 모델) : 건물 설계도와 같이 주로 데이터베이스를 설계하는 데에 사용한다.
3. Object-based data model (객체 기반 데이터 모델) : 관계형 모델에 비해 데이터 검색이 어렵다는 점이 있으나 새로운 객체를 정의할 수 있다.
4. Object relation data model (객체 관계형 모델) : 1번 모델과 3번 모델의 특성을 합친 것이다. 요즘 주로 사용한다고 한다.
5. XML(반구조형 데이터 모델) : 비정형 데이터 모델이다.
6. 다른 오레된 모델들: Network model, Hierarchical model => 관계형 모델 이전 모델들이다. 지금은 거의 사용되지 않는다.
Database Language
Data Definition Language (DDL) : 데이터의 스키마를 기술하는 언어이다. DDL의 결과는 Data dictionary에 meta data (데이터를 위한 데이터)로서 저장된다.
Data Manipulation Language (DML) : 사용자가 적절한 데이터 모델로 구성된 데이터를 접근 / 조작할 수 있도록 하는 언어이다. query language라고도 한다. DML 종류는 다음과 같이 있다.
- Procedural DML (절차식 DML) : 어떤 데이터가 필요하며 어떻게 그 데이터를 구할지 지정할 것을 요구한다.
- Declarative DML (선언적/비절차식 DML) : 어떻게 구할지는 요구하지않으며 어떤 데이터가 필요한지만 요구한다.
보통 선언적 DML이 더 배우기도 쉽고 사용하기도 쉽다.
SQL Query Language
SQL은 비절차적 언어이다. 한개 이상의 테이블을 입력으로 받고, 항상 한개의 테이블을 리턴한다. 조건만 제시하고 세부적인 사항은 작성하지 않아도 된다. 다음은 SQL 사용 예시이다.
그러나 SQL은 Turing machine equivalent language (범용 튜링 머신)이 아니다. 즉 프로그래밍 언어로는 가능하지만 SQL로는 가능하지 않은 계산이 있다. (범용성이 떨어진다.) 보통 복잡한 계산을 하기 위해 다른 프로그래밍 언어 (host langague: c, c++, java ..)에 내장된 형태로 작성된다. Application programs (응용프로그램)은 보통 SQL가 내장된 언어나 ODBC / JDBC와 같은 응용 프로그램 인터페이스를 통해 데이터베이스에 접근한다.
Database Design
Logical design : database schema를 결정한다. Database design은 적합한 관계의 스키마를 요구한다. 예를 들면 다음과 같다.
- Business decision : 데이터베이스에 저장하길 원하는 table을 물어보며 파악한다. (what)
- Computer Science decision : 서로 연관된 속성이 table에 들어가있는가? 최대한 중복 방지하여 DB 설계 (how 그룹화) ← 우리가 해야하는 것이다.
Physical Design : 데이터베이스의 physical layout을 결정한다.
Database Engine
데이터베이스 시스템은 여러 모듈로 구성되며, 각 모듈이 데이터베이스의 여러 책무를 나누어 맡는다. 기능적인 관점에서 보았을 때, 데이터베이스는 크게 Storage manager (저장장치 관리자)와 The query processor component (질의 처리기)로 나뉜다.
storage manager (저장 장치 관리자)
데이터베이스에 저장된 하위 단계의 데이터 (low level data)와 응용프로그램/쿼리 사이의 인터페이스를 제공한다. 저장 장치 관리자는 다음과 같은 임무를 맡는다.
- OS의 파일 관리자와 상호작용해야 한다. 상호작용하여 원시 데이트를 디스크에 저장한다.
- 다양한 DML문을 하위 파일 시스템 명령으로 변환한다. 따라서 저장 장치 관리자는 데이터베이스 내의 데이터를 저장하고, 검색하며, 갱신해야 한다.
구성요소는 다음과 같다.
- Authorization and integrity manager (권한과 무결성에 관한 관리자) : 무결성 제약 조건을 만족하는지 검사
- Transaction manager : 시스템이 고장나도 일관성 있는 상태를 유지하는지 확인. 동시에 일어나는 Transaction에서 충돌은 안일어나는지 확인
- File manager : 자료구조 관리
- Buffer manager : 디스크 -> 메인메모리로 데이터 이동. 메인메모리 -> 캐시로 보낼 데이터 결정. 버퍼 관리자는 메인 메모리보다 훨씬 큰 데이터베이스의 데이터를 메인 메모리에서 처리 가능하게 하기 때문에 매우 중요하다.
또한, 저장 장치 관리자는 다음과 가틍ㄴ 데이터 구조를 구현한다.
- Data files : 데이터베이스 자체 저장
- Data dictionary: 메타 데이터 저장. 특히 데이터베이스 스키마 저장
- Indices (색인) : 특정 값을 가지고 있는 데이터 항목에 빠르게 접근하기 위한 것이다. 검색 능력 향상을 위해 주로 많이 검색하는 속성에 대해서 인덱싱한다.
Query Processor (질의 처리기)
다음과 같은 구성요소를 가진다.
- DDL interpreter - DDL문을 해독해서 data dictionary 내에 기록한다.
- DML compiler - DML문을 엔진이 이해할 수 있는 하위 단계의 명령어로 변환한다. DML compiler는 query optimization(쿼리 최적화)를 수행한다. 여러 쿼리 계획 중 가장 낮은 비용의 계획을 선택한다.
- Query evaluation engine - DML 컴파일러에 의해 생성된 하위 단계의 명령어들을 실행한다.
Transaction Management
Transaction이란 데이터베이스 응용 프로그램에서 하나의 논리적 기능을 수행하는 연산들의 모임이다. 그리고 이러한 Transaction은 원자성과 일관성 모두를 지니고 있어야 한다.
Transaction management component: system/transaction fail을 시키는 한이 있더라도 일관성 (consistent)을 유지해야 한다.
concurrency control manager : 동시 접근할 떼 일관성 유지하도록 해야 한다.
Database Architexture
데이터베이스 시스템의 구조는 데이터베이스 시스템이 동작하는 컴퓨터 시스템에 의해 영향을 받는다. 다음과 같은 구조가 있다. (초기에서 점점 더 발전하는 형태)
- Centralized databases (중앙집중 방식) : 공유 메모리
- Client-server
- 실제 시스템에서 작업하는 것 - 서버
- 원격으로 데이터베이스에 접속하여 작업하는 것 - 클라이언트
- Parallel databases
- 어디까지 공유하느냐에 따라 여러 종류가 있다.
- 모든 CPU가 메모리를 공유하는 경우
- disk만 공유하는 경우
- 공유하는 것이 없는 경우
- Distributed databases
- Geographical distribution: 지역별로 분산되어있는 곳에서도 작업
- Schema/data heterogeneity
=> 이후 장에서 더 자세히 설명할 것이다.
Database Applications
데이터베이스 응용 프로그램은 두부분이나 세부분으로 나뉜다.
- two-tier architecture (2계층 구조) : 응용 프로그램이 클라이언트 상에 존재한다. 질의문을 보냄으로써 서버에 있는 데이터베이스 시스템의 기능을 불러온다.
- three-tire architecture (3계층 구조) : 클라이언트는 데이터베이스 호출을 직접적으로 하지 않는다. 대신 클라이언트와 응용 프로그램 서버 간 통신은 form interface를 통해 이루어진다. 그리고 응용 프로그램 서버가 데이터에 접근하기 위해 데이터베이스 시스템과 통신한다. 이러한 구조는 대규모의 응용 프로그램에 적합하다. (교수님은 이 방법이 더 효율적이라고 하셨다.)
DBA (database administrator)
중앙 제어 (central control)를 하는 관리자를 의미한다. DBA는 스키마 정의, 저장 구조와 액세스 방법의 정의, 스키마 및 물리 구조의 수정, 데이터 접근 권한의 인정, 루틴 유지 및 관리, 데이터베이스의 주기적인 백업, 충분한 디스크 공간 보장, 데이터베이스 작업 모니터링 등의 일을 수행한다.
참고자료
학교 데이터베이스 수업 강의노트
데이터베이스 시스템, Abraham Sillberschatz Henry F.Korth S.Sudarshan 1장
'데이터베이스시스템' 카테고리의 다른 글
[데이터베이스시스템] Chapter 4 : Intermediate SQL (0) | 2023.04.24 |
---|---|
[데이터베이스시스템] Chapter 3: Introduction to SQL (0) | 2023.04.22 |
[데이터베이스시스템] Chapter 6: Database Design Using the E-RModel (0) | 2023.04.21 |
[데이터베이스시스템] Chapter 2: Introduction to Relational Model (1) | 2023.04.11 |