2024. 9. 19. 23:34ㆍCS/Database System
1. Types of Database and Database Applications
초창기 데이터베이스에서는 정형화된 Numeric, Textual Data만 다루었다. 이를 바탕으로 만들어진 데이터 베이스 시스템이 잘 상용화되면서 규칙성이 없는 비정형 데이터까지 확장시키려 노력하고 있다. Multimedia, 지도 데이터 등등…
하지만 이 과목에서는 정형화된 Numeric, Textual Data에 초점을 맞출 예정이다.
2. Basic Definitions
Database
- 관련된 데이터들의 집합
Data
- 사실들
Mini-world
- 데이터베이스 시스템은 전체 세상이 아닌 일부만을 모델링 하게 된다. 특정 부분의 문제를 해결하기 위해 특정 부분만 떼어낸 것을 Mini-world라 한다.
DBMS
- 데이터베이스를 관리해주는 시스템으로 Database Management System이다. DBMS라 하면 소프트웨어를 말하는 것이다.
Database System
- DBMS + DB까지 해서 총칭해서 데이터베이스 시스템이라 한다.
Information
- data + value, data는 알려진 사실만을 담고 있고 information은 가치가 있는 데이터이다.
사용자가 Database System이라는 인터페이스를 통해 쿼리를 던지면 DBMS는 쿼리를 분석해서 데이터를 찾아서 리턴해 주게 된다.
사진을 보면 데이터베이스가 2개 존재한다. Meta-Data는 데이터베이스에 대한 설명을 담고 있는 DB이다.
3. DBMS의 필수 기능
- 데이터베이스를 정의할 수 있어야 한다.
- 초기 데이터들을 테이블에 다 삽입할 수 있어야 한다.
- 삽입된 데이터는 secondary storage에 존재한다.
- DBMS의 성능은 오로지 disk I/O 횟수로 결정된다. SQL을 만들 때는 disk I/O를 최대한 줄이는 것이 핵심이다.
- 데이터 검색, 수정, 접근 등 조작할 수 있어야 한다.
- 여러 명의 사용자가 동시에 사용할 수 있도록 처리가 되어야 하고 데이터가 공유되어야 한다.
- 공유되는 데이터에 대해 한 사용자가 데이터를 조작하면 Lock이 걸려야 한다. 그래야 모든 데이터를 valid하고 consistent하게 유지할 수 있다.
- 이 Lock을 거는 범위도 중요하다. 수강신청을 예로 들어서 특정 과목 전체를 범위로 하면 한 번에 한 명만 수강신청 할 수 있지만 과목별 학년별 테이블을 나눠놨다면 Lock을 학년별 테이블에만 걸어서 성능을 향상시킬 수 있다.
4. Example of a Database
데이터베이스를 만드는 과정은 다음과 같다.
- Mini-world를 정의한다.
- Part of a UNIVERSITY envrionment
- 엔티티를 추출한다. Mini-world의 객체가 된다.
- STUDENTs, COURESEs, SECTIONs, DEPARTMENTs, INSTRUCTORs
- 엔티티 간 관계를 추출한다. 인터뷰를 통해서 많이 이루어진다.
- SECTIONS are of specific COURSEs, STUDENTs take SECTIONS, …
- entities, relationships은 conceptual data model에서 주로 표현된다.
- 관계를 바탕으로 ERD 다이어그램을 그린다.
- 다이어그램을 바탕으로 테이블을 만든다.
5. Database의 주요 특징
Self-describing nature
- DBMS는 catalog라는 시스템을 가지고 있다. catalog는 데이터베이스의 테이블 대한 정보를 담고 있다.
- catalog는 다른 말로 meta-data 라고도 한다. 예를 들어 STUDENT 테이블의 row는 몇 개가 있고 등등의 정보를 가지고 있는 것이다.
- 테이블의 정보를 담고 있는 meta data 또한 테이블로 구성이 되어 있고, 이를 Self-describing nature 하다고 한다. 덕분에 meta data에도 일반적인 테이블처럼 SQL을 사용할 수 있다.
- meta data는 DBMS 소프트웨어가 다른 database 어플리케이션과 함께 동작할 수 있게 한다.
- 카탈로그의 예시를 보자. 여기서 RELATION은 Table을 말한다.
SELECT * FROM STUDENTS 과 같은 SQL에 대해 STUDENTS 테이블이 존재하지 않으면 에러가 발생한다. 이것이 가능한 이유는 메타데이터 테이블을 뒤져보고 STUDENTS가 없다는 것을 파악해서 의미론적 에러를 발생시키기 때문이다.
프로그램과 데이터가 독립적으로 관리된다.
- 데이터베이스에서 data 구조나 storage 조직, 데이터를 저장하는 방식이나 구조가 바뀌어도 데이터베이스 접근 프로그램을 수정할 필요가 없다.
- 예를 들어, 데이터베이스의 테이블 구조나 저장 방식이 바뀌어도 그 데이터에 접근하는 애플리케이션 코드는 수정하지 않아도 된다.
Data Abstraction
- data model은 storage details를 가리고 users에게 database의 conceptual view를 제공한다.
- 프로그래머는 DBMS 아래쪽에서 데이터가 어떻게 저장되는지 등 low level의 동작은 전혀 몰라도 잘 프로그래밍할 수 있다.
어떤 데이터에 대해 multi view를 제공한다.
- 예를 들어 학생이 보는 데이터와 조교가 보는 데이터는 달라야 한다. 그런데 이를 다른 테이블로 관리하면 데이터의 중복성이 발생하면서 관리가 어려워진다.
- 데이터의 중복성이 발생하면 하나의 데이터를 바꾸면 다른 데이터를 바꿔줘야 한다. 유효성에 문제가 생길 수 있기에 중복성은 최대한 제거를 해줘야 한다.
여러 사용자의 트랜잭션을 처리할 수 있어야 한다.
- 트랜잭션은 a set of operations 인데 all or nothing 하다. 이 operation의 집합 중 어느 하나라도 실패하면 원래대로 다시 돌아가야 한다.
- 계좌이체를 생각해보면 내 통장에서 -를 하고 친구 통장에 +를 해야 한다. 내 통장에서 -를 하고 친구 통장에 +를 하다가 오류가 발생하면 다시 처음으로 돌아가야 한다. 이를 트랜잭션이라 한다.
- Lock 이라던지 그런걸 제공해야 한다.
- Recovery 할 수 있어야 한다.
6. Advantages of using DBMS Approach
- redundancy를 control 할 수 있다.
이렇게 중복성이 존재하는 데이터에 변경이 있으면 Brown 데이터 4개를 모두 변경해야 하지만 DBMS를 쓰면 효과적으로 제어할 수 있다.
- 인증되지 않은 사용자가 데이터에 접근하는 것을 막을 수 있다.
- ODBMS를 사용하면 object로 된 데이터를 관리할 수 있다.
- 효율적인 쿼리 처리를 위해 인덱스와 같은 저장 구조를 제공한다. DBMS의 핵심은 굉장히 작은 메모리로 굉장히 방대한 데이터를 효과적으로 처리하는 시스템이라는 것이다.
- 쿼리 optimization 기능을 제공한다. relational algebra에 기반하여 최적화를 하게 되는데, 같은 기능을 하면서 disk I/O가 적어지게끔 쿼리를 최적화한다.
- backup, recovery를 제공한다.
- 다양한 인터페이스를 제공한다.
- 복잡한 relationships를 나타낼 수 있다.
- 제약사항을 걸어줄 수 있다.
- 데이터를 통해서 추론이 가능하다.
- 거의 모든 DBMS의 SQL이 똑같진 않지만 Standard SQL을 따른다.
- 어플리케이션 개발 시간이 줄어든다.
- 데이터를 바꾸기에도 수월하다. 유연하다.
- 항상 최신 정보를 유지한다.