Chapter 2. 데이터베이스 시스템(DBS=DBMS)

MoonLight·2021년 10월 21일
0

데이터베이스

목록 보기
3/12

0x01. 데이터베이스 관리 시스템(DataBase Management System)


💡 What is this? 데이터를 효율적으로 저장/관리하는 시스템 소프트웨어.

  • 데이터 관리에 필요한 기능을 사용자에게 제공
    • 대표적으로 CRUD
  • 데이터 추상화, 데이터 독립성, 데이터 보호 등의 기능또한 제공

DataBase Management System의 약자로 DBMS라 표기한다.

DBS(Database System) = DB + DBMS로,,
실질적으로는 DBMS, DBS, DB 용어가 상호대체적으로 사용된다.

1.1 👍 DBMS의 장점

  1. 데이터 추상화 제공

  2. 데이터 접근의 용이성 제공 : 데이터베이스 시스템은 데이터 접근을 위한 언어를 제공하고 편리한 사용자 인터페이스를 제공한다. 만약 화일(file) 시스템을 이용하여 데이터 관리를 하는 경우에는 사용자가 직접 데이터 접근을 위한 각종 프로그램을 작성하여야 한다.

  3. 데이터 중복(data redundancy) 및 불일치성(inconsistency)에 대한 제어 용이 : 데이터 불일치성은 데이터 간에 값이 서로 일치하지 않은 현상을 말하며, 화일 시스템을 사용하게 되면 데이터 중복이 발생하기 쉽고, 데이터 중복이 발생하면 데이터 불일치가 발생하기 쉽다.

  4. 데이터 무결성 제약조건(integrity constraint) 유지 용이 : 데이터 무결성 제약조건은 데이터가 만족하여야 하는 조건으로, 예를 들어 “학생의 학점 데이터는 반드시 최소값 0.0 최대값 4.5 내의 실수 값이어야 한다” 등이다. 데이터 제약 조건은 화일 시스템 에서는 화일 접근 프로그램에 산재되며, 이 경우 데이터 제약 조건 관리가 용이하지 않다.

  5. 갱신 원자성 제공(Atomicity of updates) : 데이터베이스 시스템에서는 데이터 갱신이 원자적으로 이루어져야 하며, 이는 데이터 갱신 시에 갱신 연산이 부분적으로 데이터베이스에 반영되질 않음을 의미한다. 갱신 연산이 부분적으로 이루어지면 데이터베이스 상태가 불일치 되거나 데이터베이스 제약 조건이 만족하지 않게 될 가능성이 있다. 예를 들어, 100만원 송금을 할 때 반드시 100만원 송금이 완전히 되거나 아예 송금이 되지 않아야 한다.

  6. 다수 사용자의 동시성 제어 : 데이터베이스 시스템 환경은 다수의 사용자가 동시에 동일 데이터베이스를 접근하게 되며, 이 경우 데이터베이스 관리 시스템은 사용자에게 동시성 제어 기능을 제공한다. 예를 들어, A와 B라는 사용자가 100이라는 자원에 접근하여 각각 30, 40만큼의 자원을 동시에 사용할 때 그 시점에서 반드시 total=100(A:30,B:40,자원:30)이어야 한다.

  7. 데이터 보호 : 데이터 보호는 악의적인 데이터 접근으로부터 데이터를 보호하는 것으로, 데이터베이스 시스템은 데이터 보호 기능을 제공한다. 화일 시스템은 운영체제가 제공하는 데이터 보호 기능을 사용하게 되는데, 데이터베이스 시스템에서 제공하는 데이터 보호 기능과 비교하여 초보적인 수준이다.

  8. 데이터 백업 및 회복 : 데이터베이스 시스템은 다양한 시스템 장애 발생을 대비하여 데이터 백업 및 회복 기능을 제공하여 데이터 손실을 방지한다.

1.2 👎 그럼 화일시스템은??

일반적으로 운영체제의 기능 중의 하나로 화일 시스템(file system)을 제공하고 있으며, 예를 들면 유닉스 시스템은 "filesystem" 화일 시스템을 제공한다. 화일 시스템은 사용자에게 화일을 생성하고 제거하고, 화일을 열고 닫으며, 또한 그 내용을 읽고 쓸 수 있는 기능을 제공하며, 상세한 사용 방법은 화일 시스템마다 다르다.
데이터베이스 관리 시스템은 운영체제가 제공하는 화일 시스템을 활용하여 구현되는 경우가 보통이며, 이 경우 데이터베이스 관리 시스템은 운영체제가 관리하는 사용자 프로세스(process) 중의 하나이다. 순수 이론 관점에서는 사용자는 화일 시스템을 이용하여 데이터베이스 관리를 할 수 있으나, 실질적으로는 사용자는 여러 가지 제약 사항으로 인하여 화일 시스템만으로는 효율적인 데이터베이스 관리가 불가능하다.
한국어 용어 사전에서는 file을 “파일”로 번역하여 사용하는 경우가 많으나, 본 책에서는 화일(file)과 파일(pile)을 엄격히 구분하여 사용한다. 파일(pile)은 화일(file)을 구성하는 방식 중의 하나이다.

1.3 데이터베이스 언어

  • DBMS에서 사용자가 데이터베이스를 다룰 때 사용하는 언어
  • OQL(객체지향DB에서 사용)QUEL, SQL, Relational algebra(관계대수), query-by-example(예제질의), LDL,XML(웹DB)같은 것들이 있음
  • 그러나, SQL이 가장 많이 쓰인다.

📝 SQL

Structured Query Language의 약자로 데이터의 추가, 삭제, 갱신 등 RDBMS를 조작할 때 사용되는 표준화된 언어이다.


1.4 DBMS의 종류


○ 계층형 데이터베이스

  • 폴더/파일과 같은 계층구조로 데이터를 저장하는 DBMS이다.
    ex) 하드디스크, DVD파일시스템

관계형 데이터베이스(RDBMS)

  • 행과 열을 가지는 표(테이블) 형식 데이터를 저장하는 DBMS이다. 일반적으로 가장 많이 사용하는 데이터베이스이며, 관계형 데이터베이스만이 SQL 명령어로 데이터를 조작한다. 앞으로 다룰 데이터베이스는 모두 RDBMS이다..!

객체지향 데이터베이스

  • 객체지향개념을 도입하여 만들어진 DBMS로, 객체 자체를 데이터베이스의 데이터로 저장.

XML 데이터베이스

  • XML 형식으로 기록된 데이터를 저장하는 DBMS. ( SQL대신 XQuery라는 전용 명령어를 사용한다 )

XML 이란? 태그를 이용하여 문서 작성한다는 점에서 HTML과 비슷한 언어. BUT, XML은 HTML처럼 데이터를 보여주는 것이 아닌, 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어

키-밸류 스토어(KVS)

  • 고유한 식별자인 키라는 데이터와 그에 대응하는 값이라는 데이터를 쌍으로 저장하는 DBMS로서 NoSQL(Not only SQL)이라고도 하며 대표적 예로 MongoDB가 있다.

📌1.5 DBMS 구성요소

  • 좋은 DBS를 짜기란 매우 힘들다.
  • DBMS는 개념적 관점에서 2가지 구성요소로 나뉜다 :
    • 질의어 처리기(Query processor)
      • 질의어처리, 권한 부여 및 철회, 인증 등의 기능을 담당
    • 저장 관리자(Storage manager)
      • 데이터베이스 서버의 하단부분을 의미
      • DB에 데이터 저장을 하고 검색(DB관리) 뿐만 아니라 화일구조, 색인, 트랜잭션 관리 그리고 데이터사전 관리 등을 담당

트랜잭션 : 데이터베이스 시스템의 중요한 기능으로 트랜잭션 관리는 동시성 제어복구 기능으로 구분한다. 추후 다룸.


📌1.6 데이터 사전(Data dictionary, Data directory)

  • 데이터 사전 : DBMS에서 Meta-data(데이터에 대한 데이터)를 저장하는 장소
  • Meta-data 종류:
    • 데이터베이스 스키마에 대한 데이터(Database schema)
      • ex) 학생에 대한 타입
    • 제약조건에 대한 데이터(Integrity constraints)
      • ex) 학생은 이러한 조건을 만족해야 한다.
    • 접근 권한에 대한 데이터(Authorization)
      • 어떤 유저가 어떤 데이터에 대해서 이러이러한 권한을 갖고있다.
    • 통계에 대한 데이터(Statistical Data)
      • ex) 학생을 분석해보았더니 1/3이 3학년이다

우리가 알고있는 실세계의 데이터 : Data ex) 교수데이터, 강의데이터, 수강데이터

일반적인 데이터외에 데이터를 관리하거나 표현하는 특수데이터: Meta- Data

1.7 데이터베이스 시스템 사용자

  • 데이터베이스 시스템 사용자는 시스템을 사용하는 방식에 따라 몇 가지 부류로 나뉠 수 있다.
    • 일반 사용자(Naive user)
      • SQL을 모르므로 user application을 이용하여 데이터에 접근
    • 응용프로그래머(Application programmer)
      • DBS에 접근하는 응용프로그램을 개발하는 User. 이들이 개발한 application을 일반사용자들이 사용한다.
    • 데이터베이스 설계자
    • 데이터베이스 분석가
      • 다양한 데이터 분석 도구를 가지고 데이터베이스를 분석하는 업무를 담당하며 빅데이터 시대의 도래로 인해 데이터 분석에 대한 중요성이 증대된다.
    • 데이터베이스 관리자
      • DB에 대한 모든 권한을 가지고 있는 DBS의 Superuser.
      • DBS의 모든 활동을 주관하며 구체적으로 스키마 정의, 저장 구조, 접근법 정의, 스키마 및 물리 구조 변경, 데이터베이스 접근 권한 관리, 제약조건 관리, 시스템 성능 관리 등을 담당

1.8 데이터베이스 아키텍처

  • DBS의 architecture는 데이터가 실행되는 컴퓨터시스템에 따라 다음 방식으로 나뉜다 :
    • 중앙집중식 데이터베이스(Centralized DB)
    • 분산 데이터베이스(Distributed DB)
    • 클라이언트-서버 데이터베이스(Client-Server DB) : 위 두개의 중간
    • 병렬처리(Parallel) : 컴퓨터 병렬처리 기술을 DBS에 적용

1.9 데이터베이스 역사

  • 1950s and 1960s

    • 마그네틱 테이프(내가 원하는 데이터를 순차적으로 찾아야 했음)
    • DB 이전 단계인 화일 시스템(하드디스크: 데이터에 direct접근)을 이용하여 자료를 처리
  • 1970s

    • 네트워크 데이터모델과 계층 데이터 모델을 사용(legacy system)
    • 이 시기에 E.Codd라는 사람이 relational data model 제안
  • 1980s

    • 상업용 relational database system이 만들어짐(Oracle)
    • 객체지향 database system이 만들어짐
    • 병렬/분산 데이터베이스 시스템도 만들어짐
  • 1990s

    • DB에서 유용한 정보들을 뽑아내 회사경영에 필요한 중대한 결정을 하자!! (Data mining)
      • 엄청나게 큰 데이터 저장가능한 data warehouse 등장
    • 웹 DB 등장
  • 2000s

    • 웹 데이터를 추상적으로 표현하는 XML 등장
    • 튜닝 및 자동 데이터베이스 관리 기술발전
  • 2010s

    • 빅데이터 시대 도래
    • 구글(BigTable), Hadoop(Apache)
    • NoSQL등장
      • 빅데이터때문에 등장했는데 기존의 DB는 데이터를 처리하는데 많은 시간이 드므로 정확한 검색결과를 보장하지 않는대신 빠르게 데이터를 처리하자고 만듬

1.10 RDBMS의 제품


□ Oracle

  • 오라클에서 개발한 RDBMS이다. 역사가 깊은만큼 많은 시스템에서 채택하여 사용중이고, 현재 가장 많이 쓰이는 RDBMS 중 하나로서, RDBMS의 표준이라고 해도 과언이 아니다.

□ DB2

  • IBM이 개발하였으며 Oracle처럼 역사가 오래된 RDBMS이다. 다만 오라클이 유닉스 워크스테이션 중심이었던 것과 달리, 한동안 DB2는 IBM 컴퓨터에서만 구동되었다. 이후 유닉스나 윈도우 등의 플랫폼에서도 DB2를 구동할 수 있게 되었지만 시장 점유율을 확대할 수 없었으며, Oracle이 더 유명한 것도 이러한 배경과 관련이 있다.

□ SQL Server

  • Microsoft가 개발한 RDBMS이며 윈도우플랫폼에서만 동작한다. 앞에 언급한 RDBMS에 비해 비교적 새로운 제품으로 윈도우가 서버 분야로 영역을 넓히면서 SQL Server를 사용하는 시스템도 많이 증가했다.

□ PostgreSQL

  • 오픈소스 커뮤니티가 개발한 RDBMS이며, 무료 소프트웨어인만큼 자유롭게 사용할 수 있다.

□ MySQL

  • 오픈소스 커뮤니티가 개발한 RDBMS이다. 처음 나왔을 당시 경량 데이터베이스라는 점을 강조하다 보니 필요한 최소한의 기능만 갖추어져 있었으나, 기능이 확장되면서 지금은 다른 RDBMS와 비교해도 부족하지 않을 정도이다.

□ SQLite

  • 오픈소스 커뮤니티에서 만들어졌으며 휴대단말 등 작은 하드웨어용으로 경량화한 임베디드 시스템에 자주 쓰이는 RDBMS이다. 구글의 OS 안드로이드에서 SQLite RDBMS가 표준으로 기본 내장되어 있다.



profile
hello world :)

0개의 댓글