I. Introduction to DBMS

Bard·3일 전
0

데이터베이스개론

목록 보기
1/8

교재: https://www.db-book.com

Database vs Database Management Systems

데이터베이스: 데이터의 모음
DBMS: 데이터베이스를 관리하는 시스템 소프트웨어

Database

대학 관리 시스템을 개발하기 위해 어떤게 필요할까?

요구사항 분석

  • Stakeholder 정의
    • Students
    • Courses
    • Faculty
    • Departments
  • 각 이해관계자의 행동
    • 학생은 강의를 들음
    • 교수는 강의를 가르침
    • 교수는 학생을 가르침

기본적으로, 이런 작업이 'Data Abstraction'이다.

Data Abstraction의 세가지 단계

Conceptual level

struct employee {
	string name;
	string street;
    integer salary;
}

이는 각 employee 레코드가 어떻게 생겼는지 묘사함

  • 특정 타입의 세 개 필드를 포함함
  • 하지만 각 레코드가 어떻게 저장될 지를 명시하지는 않음

Physical level

어떻게 employee 레코드가 저장될지를 묘사함

  • Eg. B-tree, Hash Table, etc

View level

데이터베이스가 유저에게 보이는 부분만을 의미함
예를 들어 각 employee들의 연봉은 노출되지 않음

Data Model

  • 모델은 실제 세상의 부분을 관리하거나 시험하는데 유용함.

모델은 간략화하고 불필요한 디테일을 숨김.

  • 데이터 모델은 어떻게 데이터가 구조화되고 사용될지를 나타내는 고수준 명세
  • Relational model (Entity-Relationship data model)
  • Object-based data models
  • Semi-structured data model
  • Less popular old models:
    • Network model
    • Hierarchical model

Relational Model

  • Entity-Relationship model

    • 실제 세상은 object들로 이루어짐.
    • 실제 세상은 object들 간의 관계로 이루어짐
  • Entity

    • Entity는 특정 attribute 들의 집합으로써 다른 객체들과 구분되는 객체임
  • Relationship

    • Relationship은 여러 entity들간의 관계임
  • Entity Set: 같은 타입을 갖는 모든 entity들의 집합

  • Relationship Set: 같은 타입을 갖는 모든 Relationship들의 집합

  • Mapping Cardinalities: relationship 집합을 통해 연관될 수 있는 entity들의 수

ER-Diagram

  • 데이터베이스의 시각적 표현

  • 직사각형: Entity set
  • 타원: Entity attribute
  • 마름모: Entity set 간의 relationship
  • Lines: Entity set과 Entity arribute, entity set과 relationship

Schema and Instance

Schema

  • 프로그래밍 언어에서의 type과 변수랑 비슷함
  • Logical schema : 데이터베이스의 전체적인 논리 구조
  • Physical schema : 데이터의 전체적인 물리적 구조 (B+tree table, Hash table, etc)

Instance

특정 시점에 데이터베이스에 있는 실제 내용

  • 변수의 값과 비슷함

Physical Data Independence

logical schema를 변경하지 않고, physical schema를 변경할 수 있는 능력

  • Application은 logical schema에 의존함

SQL

SQL: Structured Query Language

  • 시퀄 또는 에스큐엘로 발음
  • IBM의 SEQUEL(Structured English Query Language) 때문에 시퀄로 많이 읽음
  • DML (Data Manipulation Language)와 DDL (Data Definition Language)로 이루어짐

프로그래밍 언어의 종류

  • Procedural - 유저가 데이터를 어떻게 얻을지를 명시함
    • e.g.) C, C++, Java, Python
  • Declarative - 유저가 데이터를 어떻게 얻을지 명시하지 않음
    • e.g.) SQL, Prologue

Data Definition Language (DDL)

  • 데이터베이스 스키마를 정의하는데 사용됨
create table instructor (
	ID			char(5),
    name		varchar(20),
    dept_name	varchar(20),
    salary		numeric(8,2)
);
  • 테이블 정의는 DBMS에서 data dictionary (metadata catalog 라고도 불림)에 저장됨.

Data Manipulation Language (DML)

  • 데이터를 접근하고 업데이트할 때 사용됨
select name
  from instructor
 where dept_name = 'Comp. Sci.';
  • DML은 query language라고도 불림
  • 보통 고수준 언어에 내장되어있음

Normalization Theory

  • 이 설계에는 어떤 문제가 있을까?
  • Normalization Theory: 어떤 설계가 나쁜지 규격화하고, 테스트함

Storage Management

  • DBMS가 데이터베이스를 관리하기 위해 설계된 시스템 소프트웨어라면
  • 왜 DB를 관리할 때 그냥 file system을 사용하면 안될까?

DBMS 대신 파일 시스템을 사용한다면,

  • 학생 데이터를 파일에 추가하려면,
def add_student(name, student_id, major):
	with open(FILE_PATH, "ab") as f:
		packed_data = struct.pack(
			STUDENT_STRUCT_FORMAT,
			name.encode('utf-8')[:20].ljust(20, b'\x00'),
			student_id.encode('utf-8')[:10].ljust(10, b'\x00'),
			major.encode('utf-8')[:20].ljust(20, b'\x00')
		)
		f.write(packed_data)
  • 파일에서 특정 학생 데이터를 찾고 업데이트하기 위해서 코드를 수정해야 한다면?
  • 파일에 수백만개의 레코드가 있을 때, 상사가 휴대폰 번호도 관리하라고 시킨다면 어떻게 파일을 업데이트할까?
  • 상사가 어플리케이션이 너무 느리다고 불평한다면?
  • 어플리케이션이 동시에 여러 쿼리를 사용해야 할 때, 파일을 동시에 접근하면서 발생하는 충돌을 막는 방법은?

파일 시스템 대신 DBMS를 사용하는 이유

  • 데이터에 대한 균일한 접근 및 제어 방법
    • 파일 형식이 필요없음
  • 중복 제어
    • 학생들의 이름을 여러번 저장할 필요가 없음
  • 무결성
    • 어떤 월급도 $5000 밑으로 내려가면 안됨
  • 데이터 독립성
    • Storage 구조가 기능에 영향을 주지 않음
  • 동시성 제어
  • Recovery 보장
  • 보안
  • 일관성
  • 등등..
DBMS (추상화 & 자동화)File System (유연성 & 제어)
목적구조화된 데이터 관리일반적인 파일 저장
데이터 접근SQL query, 인덱싱, 트랜잭션직접 파일 IO
유연성고정된 스키마, 쿼리 최적화어떤 파일 포맷이든, 유저가 정의한 구조
동시성 & 무결성ACID 원칙, 자동화된 제어직접 동시성 제어가 필요
성능복잡한 쿼리를 위해 최적화간단한 I/O는 더 빠름

0개의 댓글