서울대학교 이상구 교수님의 SNUON 강의 데이타베이스: 빅데이터 시대의 필수 정보관리 개론와 Database System Concepts 7th Edition의 내용을 바탕으로 정리한 내용입니다.
1. What is a Database?
데이터 (Data)
A formal description of an entity, event, phenomena, or idea that is worth recording
데이터베이스(Database)
- An integrated collection of persistent data, representing the information of interest for various programs that compose the computerized information system of an organization.
- 데이터는 그 데이터를 사용하는 프로그램에 종속되어서는 안 된다.
2. 데이터베이스 관리 시스템 (DBMS)
70년대 중반까지의 응용프로그램은 OS가 제공하는 파일 시스템 위에 DB 레코드를 어떻게 저장하고 관리할 것인지, 시스템에 이상이 생겼을 때 어떻게 데이터를 복원할지, 둘 이상의 응용 프로그램이 같은 레코드를 수정하려할 때 어떻게 처리할 것인지를 직접 처리해줬어야 했다.
여러 응용 프로그램들에서 각기 처리하던 데이터와 관련한 공통 기능들을 하나의 패키지로 묶어 프로그램으로 만든 게 데이터베이스 관리 시스템(Database Management System, DBMS) 이다.
- A collection of program modules that store, process, and manage data
DBMS는 데이터베이스를 사용하는 응용 프로그램들이 데이터베이스를 쉽게 사용하고 관리할 수 있도록 돕는 프로그램이으로, 데이터베이스에 대한 추상화를 제공하고 정확하고 전문적인 관리 기능들을 제공한다.
- Set of programs to manage/access the data
- DBMS provides an environment that is both convenient and efficient to use.
- DB Apps
- Databases touch all aspects of our lives.
- Commercial Systems
+ DB2, Oracle, MySQL, ...
3. 파일 시스템 (File Systems)
DBMS가 만들어지기 전에 응용 프로그램을 만드는 사람들은 OS가 제공하는 파일 시스템을 이용해서 데이터를 저장, 관리했다.
파일 시스템은 OS의 서브 시스템으로, 프로그램, 데이터, 문서 등 모든 것을 저장할 수 있게 한다. 파일 시스템은 이런 데이터 저장을 위한 최소한의 기능만을 제공하므로 활용에 따라 무궁무진하기는 하지만, 데이터 관리의 측면에서는 여러 단점들을 가지고 있다.
- 데이터 중복과 비일관성
+ 파일에는 다양한 포맷이 있고, 정보들 또한 서로 다른 파일들 사이에서 중복될 수 있다.
- 데이터 접근의 어려움
+ 각 새 작업을 수행하기 위해서는 새로운 프로그램을 작성해야 한다.
- 무결성 문제
+ 무결성 문제을 다루는 것이 응용 프로그램 코드의 문제가 된다.
+ 이미 존재하는 것들에 새로운 제약 사항을 추가하거나 하는 작업이 어려워진다.
- 갱신의 원자성 보장 문제
+ 시스템의 장애는 데이터를 부분적으로만 갱신해, 데이터베이스를 비일관적인 상태로 만들 수 있다.
- 동시 접근 문제
+ 성능을 위해서는 여러 사용자들이 동시에 접근하는 것이 가능해야 한다.
+ 제어되지 않은 동시 접근은 비일관성으로 이어진다.
- 보안 문제
DBMS는 위의 모든 문제들에 대한 해결법들을 제공해준다.
4. 추상화 (Abstraction)
DB 시스템은 데이터 조회를 효율적으로 수행해야한다. 이 효율성은 DB 시스템 개발자들이 DB의 데이터를 표현하기 위해 복잡한 자료 구조들을 사용하게 했지만, 많은 DB 사용자들이 컴퓨터에 대해 잘 아는 것은 아니니, 개발자들은 여러 추상화 레벨들을 통해 복잡성을 숨겨 사용자의 시스템과의 상호작용을 단순화한다.
추상화 레벨
- 물리 레벨 (Physical level)
+ 추상화의 가장 낮은 레벨로, 어떻게 데이터가 물리적 장치에 저장되어야 하는지를 설명한다.
- 논리 레벨 (Logical level, conceptual level)
+ 논리 레벨은 DB에 저장된 데이터 및 데이터 간의 관계에 대해 설명한다.
- 뷰 레벨 (View level)
+ 응용 프로그램들에 데이터 타입에 대한 상세 정보를 숨겨 제공한다.
+ 응용 프로그램의 관심의 대상이 되는 정보들만을 보이기 위해 사용할 수도 있고, 보안의 목적으로 사용할 수도 있다.
DBMS는 이와 같이 여러 개의 추상화 계층으로 이루어져, 각 레벨에서는 그 레벨에서 관심있는 것들에만 집중할 수 있도록 한다.
데이터 독립성 (Data independence)
데이터 독립성이란 한 레벨의 스키마를 다음 상위 레벨의 스키마 정의에 영향을 주지 않고 수정할 수 있게 하는 것이다. 예를 들어 물리 레벨에서의 스키마 변화는 다음 상위 레벨인 논리 레벨의 스키마에 영향을 주지 않아야 하고(physical level data independence), 논리 레벨의 스키마의 변화는 뷰 레벨의 스키마에 영향을 주지 않아야 한다(logical level data independence).
5. Instances and Schemas
인스턴스와 스키마의 관계는 프로그래밍 언어에서 타입과 변수의 관계와 같다.
스키마 - 데이터베이스의 논리적 구조
프로그램에서의 변수의 타입에 비유할 수 있다.
- Physical schema : 데이터베이스의 전체적인 물리적 구조
- Logical schema : 데이터베이스의 전체적인 논리적 구조
인스턴스
특정 시점에 데이터베이스에 담긴 실제 내용이다. 변수의 값에 비유할 수 있다.
6. Data Models
데이터 모델이란 데이터, 데이터의 관계, 데이터 의미론, 데이터 제약 사항 등을 설명하기 위한 도구들을 모아둔 것이다.
- Entity-Relationship model
- Relational model
- Other models:
+ Object-oriented model
+ Semi-structured data models
+ Older models: network model and hierarchical model
Entity-Relationship Model
객체, 그리고 객체 간의 관계로 모든 것을 표현할 수 있다고 가정한다. 이 모델은 다음의 구성 요소들로 이루어져있다. 이는 데이터베이스 디자인에서 가장 널리 쓰이는 모델이며, E-R 모델의 데이터베이스 디자인은 저장 및 처리를 위해 관계형 모델의 디자인으로 변환된다.
Relational Model
객체나 관계 등 모든 정보를 표의 형태로 나타내는 모델. 각 테이블은 여러 열로 이루어져 있고 고유의 이름을 가진다. 이 표를 가리켜 관계(relation) 라고도 부른다.
7. Database Languages
Data Definition Language(DDL)
- DB의 스키마를 정의하기 위해 사용하는 언어.
+ 테이블 생성
+ 컬럼 삭제 등
Data Manipulation Language(DML)
- DB 내에서의 데이터 연산을 위해서 사용하는 언어.
+ 조회, 삽입, 삭제, 수정의 연산이 있다.
Query
- 좁게는 정보 조회를 요청하는 명령문이지만, 넓게는 DML을 모두 포함한다.
8. Database Users
DB 사용자는 시스템과 상호 작용하는 방식에 따라 구분된다.
- Application programmers : DML을 통해 시스템과 상호작용한다.
- Sophisticated users : 프로그램을 개발하지 않고 시스템과 상호작용하는 사용자
- Specialized users : 전통적인 데이터 처리 프레임워크에 맞지 않는 데이터베이스 응용 프로그램을 작성하는 사용자
- Naive users : 응용 프로그램을 이용해서 데이터베이스에 접근하는 일반적인 사용자
Database Administrator(DBA)
데이터 베이스의 모든 활동들을 다루는 사람으로, 다음의 작업들을 해야 한다.
- 스키마 정의
- 저장 구조 및 접근 방법에 대한 정의
- 스키마와 물리적 조직에 대한 수정
- 사용자에게 데이터베이스에 접근하기 위한 권한을 부여
- 무결성 제약 사항들에 대한 명세
- Acting as liaison with users
- 성능을 모니터링하고 요구되는 변경 사항에 대한 응답을 제공
9. Overall System Structure
데이터베이스 시스템은 여러 모듈들로 분할되어있다. DB 시스템의 기능적인 요소들은 흔히 storage manager, query processor, transaction management component로 나뉜다. 이때 데이터와 그 부가 정보들은 디스크에 저장된다는 사실을 잊지 말자.
storage manager
DB 시스템의 구성요소로 DB에 저장된 데이터와 응용 프로그램, 시스템에 제출된 쿼리 사이의 인터페이스를 제공한다. 여러 DML 명령문들을 낮은 수준의 파일 시스템 명령어로 변환하며, 다음의 요소들을 포함한다.
- File manager : 디스크 스토리지의 공간 할당과 디스크에 저장된 정보를 표현하기 위한 자료 구조를 관리한다.
- Buffer manager : 디스크 스토리지로부터 메인 메모리로 데이터를 가져오고, 어떤 데이터를 메인 메모리에 캐싱할지를 결정한다.
- Transaction manager : 시스템 오류가 있더라도 DB가 일관성 있는 상태를 유지할 수 있게 보장한다. 동시에 일어나는 트랜잭션 실행이 충돌없이 일어나도록 한다.
- Authorization and integrity manager : 무결성 제약과 데이터에 접근하기 위한 사용자 권한을 확인한다.
query processor
쿼리 프로세스는 다음을 포함한다.
- DDL interpreter : DDL문을 번역하고 데이터 딕셔너리에 그 정의를 기록한다.
- DML compiler : DML문을 query-evaluation engine이 이해할 수 있는 저수준의 명령어로 변환한다.
- Query evaluation engine: DML 컴파일러에 의해 생성된 저수준 명령어를 실행한다.