티스토리 뷰

1. Database System Concepts

1.1 Introduction

1.1.1 Database의 정의

우선, 데이터베이스란 무엇인지 정의할 필요가 있다. 이 때 데이터와 데이터베이스 모두를 다음과 같이 정의한다.

  • data: 기록 가능한 fact
  • DB: 관계가 있는 data들의 모음

1.1.2 DBMS(DataBase Management System)의 정의

DBMS란 다음 system을 말한다.

  • user에게 DB를 만들고 유지할 수 있게 해주는 모든 프로그램들
  • user와application에게 DB를 정의하고, 구성하고, 조작하고, 공유하고, 유지보수할 수 있게 해주는 일반적인 목적의 software system

DBMS는 DB가 아니다. DB를 다룰 수 있게 해주는 software system이 DBMS다.

따라서 DB system = DB + DBMS로 구성된다고 볼 수 있다.

1.1.3 DB의 종류와 응용

DB에도 들어갈 수 있는 자료와 운용방식에 따라 여러가지 분류가 존재한다. 아래는 대표적인 DB들이다.

  • traditional DBs: 숫자와 글자가 들어감
  • multimedia DBs: 영상, 사진이 들어갈 수 있는 DB
  • online analytical processing(OLAP)
  • real-time DBs: 실시간 반응이 필요한 DB
  • active DB: 어떤 조건을 만족할 시 trigger 되는 DB
  • web DBs: web상에 존재하는 DB

1.2 Characteristics of DB Approach

전통적인 file processing은 다음과 같은 특징을 갖고있다.

  • 각 user가 특정한 software application을 위해 필요한 파일을 정의하고 보유하고 있다.
  • 또한, 각 user가 이런 나누어져 있는 data와 program을 갖고 있다.

그러나 DB approach는 various user가 접근 하는 data가 한 군데 다 있는 것으로 보이는 특징을 갖는다. 또한, 다음의 특징들을 갖는다.

  • DB system의 설명만 읽어봐도 어떤 DB인지 알 수 있다.(self-describing nature)
  • 프로그램과 데이터 데이터 추상화 간에 독립성이 존재한다.(insulation)
  • data를 다양하게 볼 수 있는 views를 제공한다.
  • data의 공유와 multi-user transaction processing을 지원한다.

이제 이 특징들이 무엇을 말하는지 조금 더 디테일하게 살펴보자.

1.2.1 Self-describing nature of DB system

DB는 metadata를 갖고 있기 때문에 self-describing 한 특징을 갖는다.

catalog(a.k.a metadata): data about data

-파일의 구조, 타입, storage format, data에 대한 제한 등이 담겨 있는 정보

ex) 다음 표1

<표1: meta-data의 예시>

1.2.2 Insulation between program & data

전통적인 파일 실행에서는, program이 data의 구조에 대한 정보를 포함하고 있었다.

->이것은 데이터를 바꾸면 프로그램을 다시 짜야함을 의미한다.

따라서 program과 data간의 independence를 위해 Data abstraction을 사용했다.

Data Abstraction: allows independence

-데이터에 대한 개념적 표현으로써 data가 어떻게 stored 되어있고 operation이 어떻게 구현되어 있는지에 대한 정보를 많이 포함하지 않는다.

이는 내가 짠 program에 data에 대한 정보가 embedded되는 것을 최대한 줄인다.

1.2.3 Support of multiple views of data

DB에는 View라는 개념이 존재하는데 다음과 같이 설명할 수 있다.

DB에 있는 Data를 보여주는 방법. DB에 없는 정보더라도 derived될 수 있는 정보들을 포함하여 사용자가 보기 좋은 형태로 보여준다.

예를 들어 주민등록번호 DB가 있다면 View에서는 그로부터 유도될 수 있는 정보인 나이와 성별을 보여줄 수 있을 것이다.

1.2.4 sharing of data & multi-user transaction processing

multi-user DBMS는 여러명의 사용자가 동시에 DB에 접근하는 것을 허용해야 한다.

concurrency control-동시성 제어

여러 사람이 data를 조작해도 그 순서와 방법이 정해져 있기 때문에 update의 결과가 정확한 것을 보장하는 것

ex) 비행기 예매

또한 transaction은 다음과 같은 행동을 말한다.

transaction

one or more DB access를 포함하는 실행중인 program.

DB records를 읽거나 업데이트 하는 것이 그 예가 될 수 있다. 이 때 transaction이 가져야할 바람직한 성질 4가지를 앞글자만 따서 ACID properties라 한다.

  • Atomicity: 쪼개지면 안됨. 즉 transaction은 전부 수행되든지 안 되든지로 결과가 나와야.
  • Consistency: 결과가 consistent해야함
  • Isolation: 하나의 transaction이 다른 transaction에 영향을 줄 수 없다.
  • Durability: 결과가 permanently recorded

1.3 Actors On the Scene

DB system은 매우 크다보니 관여하는 사람들도 매우 많다. 대표적인 종류들만 적어보면 다음과 같다.

1.3.1 DB Admin(DBA)

DB를 책임지는 사람. DB의 HW&SW적 환경을 구성하고 그 사용을 관리함. 한 번 DB를 구성하고 나면 할 일은 나머지 직업들에 비해 적다.

1.3.2 DB Designer

DB에 저장되는 data들을 어떻게 identify할 것인지 결정하고 data를 저장할 structure와 file system도 결정하는 직업

1.3.3 SW Analysis

end user의 필요를 분석하는 직업

1.3.4 Application programmers

실제로 DB를 사용하는 응용 프로그램을 개발하는 사람

1.3.5 End-Users

SQL query문을 이용해 실제로 data를 이용하는 사람. 업데이트를 할 수도 있다.

이 때 이 최종 사용자들을 요구에 따라 분류할 수 있다.

(1) casual: 그냥 평범하게 필요하면 DB에 때때로 접근하는 사람

(2) naive or parametric: 정형화된 작업을 자주 쓰는 user

-> end-users 대다수를 차지한다. 따라서 이런 정형화된 transaction을 어떻게 빠르게 처리할 것인지가 DB에서 중요해진다.

(3) sophiscated: 복잡한/진상 users

1.4 Advange of using DB Approach

  • controlling redundancy: Data를 여러군데 저장하는 정도를 control할 수 있음
  • restricting unautorized access: security, authorization
  • providing permanent storage for program object
  • providing storage structures for efficient processing: 자료를 효율적인 방법으로 저장 ex) tree, hash, array
  • providing backup & recovery
  • providing multiple user interface: query language, APIs, ...
  • representing & managing complex relationship among data

-controlling redundancy에 대해

같은 data를 여러번 불필요하게 저장하는 것을 data redundancy라 하는데 무조건 안 좋은 건 아니고 속도 등의 문제로 여러번 저장해야 하는 경우도 있다. 단순한 wasting으로 볼 문제는 아닌듯

또한 완전히 같은 data를 여러 번 저장하는게 아니라 derived 될 수 있는 정보가 저장되는 것도 redundancy문제로 볼 수 있다. 이런 측면에서 redundancy를 줄이는 것은 단순히 storage에만 관련된 문제가 아닌데, 예를 들어 (학번, 이름, 듣는 강의)의 sequences를 저장하는 DB를 생각해보면 학번과 이름은 사실상 같은 정보인데, 괜히 쓸 데 없는 정보를 추가로 저장함으로써 학번,이름이 대응되지 않는 잘못된 정보가 들어갈 확률을 준다. 이런 문제를 inconsistency와 관련된 문제로 본다.

'데이터 관리 및 분석' 카테고리의 다른 글

[DMA] 0. 개요-Data Management & Analysis  (0) 2020.03.22
댓글