데이터베이스시스템

[Lecture 01] DB 기본 개념 및 용어

jueunni 2024. 9. 28. 00:02

Objectives

  • Database / DBMS / Database system의 차이
  • DB의 특징
  • Users of DB
  • DBMS의 특징

Overview

Data

  • 의미있는 사실이 저장된 것
  • ex) names, addresses, phone numbers, ...

Database

  • 관련된 데이터의 집합
  • ex) phone book for a company

Mini-world

  • 실제 world의 일부 (not all aspect)
  • ex) 한양대의 DB안에 OOO교수가 있지만, 그 교수가 안경을 썼다는 정보는 없다. 즉, 한양대 DB는 학교를 운용하기 위한 관점에서 building된 DB인 것이다.

DBMS(Database Management System)

  • 사용자가 매우 쉽게 DB를 만들고 관리하게 해주는 소프트웨어 

Database System

  • DBMS + DB

Structure of Database System

DB

  • User-Data 
  • Meta-Data: 사용자 데이터를 관리하기 위해서 DBMS가 필요로 하는 정보

DBMS 

  • Software to Access Stored Data(Storage Engine) : DB를 잘 관리하기 위해 짜여진 파트
  • Software to Process Queries/Programs (Query/SQL Engine): 간단한 인터페이스로 사용자가 DBMS를 다루도록 하는 소수의 명령어 제공

앞서 Database System이란, DBMS + DB라고 얘기했다. 다만, 혹자는 Database System을 DBMS + DB + Application Programs/Queries 라고 하기도 한다. 이 부분은 뭐가 정답이라기 보다는 논란의 여지가 있는 부분이다.

 

Application Programs / Queries

  • Application Programs: 자기 고유의 코드
  • Queries : DBMS를 부르는 코드

Example of a DB

  • Table로 관리된다. 
  • ex) student table을 보면 Name, Student_Number, Class, Major라는 항목들이 있는데 이것을 attribute라고 부른다.
  • 그 아래에는 실제 정보들이 들어가게 된다.

Characteristics of the DB

  1. Self-describing nature of a database system
    • Meta-data
      • 앞에서 사용자의 데이터를 관리하기 위해 DBMS가 필요로 하는 데이터라고 설명했다.
      • table이 몇 개인지, 각 table마다 attribute가 몇 개인지, attribute길이는 얼마나 되는지 등을 나타낸다.
      • ex) name이라는 attribute에 smith라는 value가 있으면, 그 길이는 5이다. 이런 길이 정보가 Meta-data 형태로 저장되어 관리된다.
    • System Catalog
      • Meta-data가 저장되는 곳이다.
    • DB System은 user data 뿐만 아니라 meta data도 함께 저장하고 관리한다.
      • 이게 아주 중요한 특징이다.
      • 프로그램 안에서도 관리할 수 있지만, DB System은 프로그램이 아닌 DB 내에 메타 데이터 형태로 자신의 구조를 관리한다.
  2. Insulation between programs and data 
    • 프로그램이 데이터에 큰 영향을 받지 않는다.
    • 즉, 주소 크기를 30에서 50으로 변경하고 싶을 때, 데이터 레벨에서 해결 가능하냐 vs 코드를 수정해야 하냐 를 생각해보자.
    • DB 내에서 메타 데이터를 저장하는 경우, 코드를 수정할 필요 없이 데이터 레벨에서 해결 가능하지만, 프로그램 내에 메타 데이터를 저장하는 경우, 코드를 수정해야 한다.
    • 이런 이유로, application 프로그램 관리가 매우 쉬워지는 것이다.
  3. Data abstraction
    • data structure의 detail을 숨긴다.
    • Data model: conceptusl view 를 제공해서 사용자가 DB를 쉽게 관리할 수 있도록 해준다. 
      • 데이터 모델에 대해서는 Lecture 02에서 자세히 다룰 것이다.
  4. Support of multiple views of the data
    • View: virtual data derived from the (actual) database
      • 실제로 이렇게 저장되어 있는 건 아니지만 실제 저장된 데이터로 부터 유추해 끄집어 낸 데이터를 의미한다.
      • 같은 database에 대해 다른 관점을 제공한다.
  5. Sharing of data
    • multiple users가 동시에 database에 접근이 가능하게 한다.
    • 일관성 문제가 생길 . 수있는데, 그런 문제를 막아주는 메커니즘을 제공한다.

앞의 database example과 비교해보면, 실제로 이런 형태로 저장된 건 아니지만 그 데이터들로부터 유추해낼 수 있다는 것을 알 수 있다.


Users of DB System

  • System analyst
    • end users의 요구사항을 분석한다.
    • 어떤 데이터가 관리되어야 하는지 파악한다.
    • 프로그래밍 입장에서 어떤 기능이 제공되어야 하는지 파악한다.
  • DB Designer
    • System analyst가 분석한 결과를 보고 관리되어야 하는 데이터 후보를 선정한다.
    • 그 집합을 어떻게 구조화 할 것인지 결정한다. (논리적으로 / 물리적으로)
    • DB design process에 대해서는 Lecture 03에서 자세히 다룰 예정이다.
  • Application programmer
    • DB 구조가 확정된 후, 사용자에게 어떻게 기능을 제공할지 결정한다.
    • 실제 어플리케이션이 구축되는 단계이다.
    • 여기까지는 개발업체 소속
  • Database administrator (DBA)
    • 여기서부터는 개발업체 소속이 아니다.
    • DBA는 어플리케이션을 모니터링하고, 문제가 생기면 해결하는 역할을 한다.
  • End Users
    • 자신도 모르게 DB를 사용하는 사람들이다.

DBMS Features

  • Controlling redundancy
    • Redundancy : 같은 데이터가 두 개 이상의 location에 저장되는 것
    • Problem
      • 저장공간 낭비
      • 데이터의 일관성이 없어짐
  • Restricting unauthorized access
    • 보안상
  • Persistent storage for program objects
    • 데이터를 메인 메모리가 아니라 디스크에 저장하니까
  • Multiple user interfaces
    • 사용자의 지식 수준에 따라 다르게 제공
    • Query language, programming interface, GUI, ...
  • Representing complex relationships among data
    • Entity 간의 관계를 표현하는 다양한 방식 제공
  • Enforcing integrity constraints
    • Integrity: 무결성, 결함이 없다.
    • DBMS
      • 무결성 조건을 정의할 수 있어야 한다.
      • 무결성을 만족하는 지 점검할 수 있어야 한다.
  • Backup and recovery
    • 문제가 생겼을 때를 대비해서 copy본을 만들어놓고, 실제로 문제가 발생하면 최신의 copy본을 가져오는 것
    • 개념은 쉬워도 실제로 수행하는 것은 굉장히 어렵다.

Advantages of Using the DBMS

  • Application development time reduced
    • 프로그래밍 할 필요 없이 간단한 명령어 만으로 가능하다.
  • Availability of up-to-date information
    • 시간 차가 발생하지 않는다. DB update는 즉각적으로 반영된다.
  • Economy of scale
    • 사용자가 많아질수록 DBMS 사용 부담이 줄어든다.

When Not to Use a DBMS

DBMS를 사용하지 않는 것을 권하는 경우도 있다.

  • Overheads of DBMS
    • 높은 초기 비용(HW, SW, Education, ...)
    • 비교적 시간이 오래걸림 (보안, 일관성 문제, 무결성 조건 등 복잡하니까)
  • More desirable to use redular files (not DBMS)
    • 간단하고, 바뀔 가능성이 거의 없을 때
    • 마감시간이 정해진 경우 즉, 그 뒤부터는 의미가 없어질 때 ex) 미사일
    • multiple user가 DB에 access하는 경우가 없을 때 혹은 access하더라도 read-only인 경우 ex) 검색 엔진

해당 게시물은 한양대학교 컴퓨터소프트웨어학부 김상욱 교수님의 데이터베이스시스템및응용 강의를 바탕으로 정리한 자료입니다.