본문 바로가기

ComputerScience/Database

DB - 1. Introduction

728x90

1. DBMS

- 서로 관련된 데이터의 집합

- data에 접근하기 위한 프로그램 집합 

- data를 사용하기에 편리하고 효율적인 환경

- 위 세가지 조건을 제공하는 시스템을 DBMS라고 한다. Data Base Management System, 즉 Oracle, SQL Server, DB2, MySQL과 같이 DB를 관리하는 소프트웨어이다.

- 가치있는 대용량의 데이터를 관리할 수 있어야 한다. 또한 이 공유자원을 여러 사용자가 접근할 수 있도록 해야한다.

- DB를 사용하지 않는 서비스는 없다!

2. Old concept before DB system

- DB시스템 출현 이전에는 file system에 데이터를 저장하고 이를 불러와 사용하였다

- business상황 에서 업무마다 각자 필요한 데이터 collection의 분리가 어렵다.

- 따라서 데이터의 중복과 그로 인한 불일치 발생 가능

- 새로운 서비스가 생기면 그에 따른 DB를 새롭게 구축해야함

- 저장된 데이터가 무결성을 만족하도록 하기 어렵다. 예를들면 은행 잔고가 항상 0보다 크거나 같아야 하는데 음수가 저장되는 상황을 막기가 어렵다. 이를 구현하기 위해 프로그램에 해당 조건을 코드로 삽입해야 하는데 이는 좋은 방식이 아니다.

- a가 b에게 100만원을 송금하면 한쪽은 -100 다른 한쪽은 100의 작업이 이루어져야한다. 이 서로 다른 동작을 atomic하게 수행할 수 있도록 보장해 주어야 한다.

- 한 데이터에 접근하는 여러 사용자에게 데이터의 concurrency를 control할 수 있어야 한다.

- 데이터의 접근 권한등을 응용프로그램이 아니라 DBMS가 통제해 주어야 한다.

- 즉 예를 들어 은행 application은  송금의 동작만 수행하면된다. 잔고가 0이 되면 안되고, 동시에 송수신을 처리해야하고, DB고장에 대처하고 등의 코드를 구현할 필요가 없이 DBMS에게 이를 맡기면 된다.

- application은 DBMS를 통해 통합 관리되는 데이터를 가져와서 응용의 로직만 수행하면 된다.

- application은 data에 대한 자세한, 복잡한 내용을 알 필요 없이 추상적(abstract, high level)으로 data를 이해할 수 있다. 즉 파일이 어떤 형식이고 어떤 자료구조로 저장되어 있고를 알 필요가 없다.(Hide the complexity of data structures)

3. Database Example

- University database를 구상한다고 가정하고 데이터 베이스의 구조(schema)를 살펴보자.

- 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 DB를 relational DB라고 한다

- 데이터들이 실세계의 모습을 반영하도록 하기위한 다양한 DB model이 존재한다. relational DB가 그 중 하나이다.

- 각 테이블은 이렇게 표로 관리 된다. 테이블의 한 줄은 record, tuple, row라고 부른다.

- 이렇게 구축된 데이터베이스 위에서 신입생 등록, 성적표 산출 등의 다양한 서비스를 구축할 수 있다.

4. Relational Model

키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 DB를 relational DB라고 한다

- rows = record = tuple = instance

- column = attribute

- table = relation

- locigal schema : 테이블이 어떤 column으로 구성되어있고, table간의 관계는 어떻고, 각 table에서 제약사항은 무엇이 있고 등의 high level관점으로 바라봤을 때 구조를 말한다.

- physical schema : storage level에서의 DB의 구조를 말한다. 물리적으로 실제 disk의 block에 어떤 file 구조하에 organize되어 있는지를 말한다.

5. Data Definition Language(DDL)

- DB schema를 정의하는데 사용하는 언어(SQL의 한 카테고리에 해당하는 notation이다)

- char, varchar, numeric등이 SQL DataType이라고 한다. 괄호 안은 크기를 나타낸다.

- instructor table을 생성하고 이는 4개의 columns를 갖게 된다. 

- 처음 create하면 instance 없는 empty table이 생성된다.

- DDL compiler가 instructor table의 schema정보를 data dictionary(system catalog)에 저장한다.

- data dictionary는 meta data를 포함한다. (meta data는 데이터에 대한 데이터이다. 예를 들면 ID가 유일한지, 테이블은 어떤 column을 지녀야 하는지, 접근 권한 등의 정보이다.)

6. Data Manipulation Language(DML)

- data 검색, 변경, 삽입, 삭제, 수정을 위한 질의어(query language)

- SQL은 선언적 DML을 사용한다. 즉 어떤 data를 찾을지 알려주면 알아서 가져다 준다는 것이다.

- "instructor" table에서 "name"을 찾는데 조건은 "dept_name = 'Comp.Sci.'"를 만족해야 한다. 

- 위 방식 처럼 검색하고 싶은 내용만 선언하여 사용하는 방식을 선언적이다 라고 한다.

7. DB Application programing

- Java같은 host language로 프로그램 로직을 짠다. 하지만 db에 접근할 때는 sub language로 SQL을 사용할 것이다.

- SQL은 db에 접근하기 위한 선언적 질의어 이다. (non-procedural query language)

- 하지만 SQL만으로는 사용자에게 input을 받고 화면에 결과를 보여주고 등의 action은 수행할 수 없다.

- 따라서 host language를 사용하여 프로그램을 구현하되 db에 접근할 때 SQL을 통해 DBMS와 소통한다.

- 이때 program과 DBMS 사이의 interfacing을 가능하게 해주는 녀석이 DB API이다.

- 예를들어 java로 만든 program에서 sql 질의를 통해 dbms와 소통할 수 있는 이유는 JDBC db api덕분이다.

8. Database Engine

- DBMS는 크게 두가지 layers로 나누어진다.

1. storage manager

- disk에 데이터를 불러오거나 disk로 저장하는 등의 역할을 한다.

- 요청한 query를 처리해준다.

2. query processor component

- DDL interpreter : DDL구문을 해석해서 schema정보를 data dictionary에 저장

- DML compiler : DML 문장을 해석해서 최적의 방식으로 query evaluation engine에게 요청

- query evaluation engine : low-level instructions으로 변환된 명령을 수행한다. (query동작 수행)

 

728x90
반응형

'ComputerScience > Database' 카테고리의 다른 글

DB - 6. More SQL statements(1)  (0) 2021.09.29
DB - 5. Schema Diagram, Relational Algebra  (0) 2021.09.15
DB - 4. Keys (at relational DB)  (0) 2021.09.15
DB - 3. Relational Database  (0) 2021.09.08
DB - 2. Basic SQL statements  (0) 2021.09.08