기록방

[DB] 2장 : 데이터베이스 관리 시스템 본문

CS/DataBase

[DB] 2장 : 데이터베이스 관리 시스템

Soom_1n 2024. 4. 26. 21:24

01 데이터베이스 관리 시스템의 등장 배경

  • 과거에는 데이터를 관리하기 위해 파일 시스템(file system)이라는 소프트웨어 이용
    • 데이터를 파일로 관리할 수 있도록 파일을 생성/삭제/수정/검색하는 기능을 제공
    • 운영체제와 함께 설치 됨
    • 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리
  • 파일 시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조 뿐 아니라 물리적인 구조까지 정확히 파악해야 함
    • 필요한 데이터에 직접 접근하여 처리하는 응용 프로그램 개발을 위해

파일 시스템의 문제점

  1. 같은 내용의 데이터가 여러 파일에 중복 저장된다.
    • 파일 시스템에서는 응용 프로그램 별로 파일을 유지하므로 같은 데이터가 여러 파일에 저장될 수 있다. 데이터 중복성(data redundancy) 문제가 발생한다.
    • 데이터가 중복되면 저장 공간이 낭비될 뿐 아니라 데이터 일관성(data consistency)과 데이터 무결성(data integrity)을 유지하기 어렵다.
  2. 응용 프로그램이 데이터 파일에 종속적이다.
    • 응용 프로그램은 파일에 직접 접근하여 데이터를 처리하므로 사용하는 파일의 데이터를 구성하는 방법이나 물리적인 저장 구조에 맞게 작성되어야 한다.
    • 사용하는 파일의 구조를 변경하면 응용 프로그램도 함께 변경되어야 하는 데이터 종속성(data dependency) 문제가 발생한다.
  3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
    • 일반 파일 시스템에서는 응용 프로그램 하나가 사용 중인 파일을 다른 응용 프로그램이 접근하여 사용할 수 있는 동시 공유 기능을 제공하지 않는다.
    • 파일 시스템에서는 사용자에게 보통 파일 단위로 읽기/수정/실행 권한을 부여하는 방식으로 데이터 접근을 통제한다.
      • 하지만 데이터 보안에 대한 요구가 더욱 세분화되고 있어 파일 안의 레코드나 필드 같은 더 작은 단위에 대한 접근 통제와 더 구체적인 권한 부여가 가능해야 한다.
      • 그리고 데이터가 중복된 모든 파일의 보안을 같은 수준으로 유지하기 어렵다.
    • 파일 시스템에서 응용 프로그램이 파일을 사용하는 도중에 장애가 발생하면 데이터를 일관된 상태로 회복하기 어렵다.
      • 특히 데이터 수정 도중에 장애가 발생한 경우는 더욱 어렵다.
  4. 응용 프로그램을 개발하기 쉽지 않다.
    • 파일 시스템에서는 파일에 접근하여 데이터를 관리하는 모든 작업을 응용 프로그램이 담당해야 하기 때문에 사용자 요구에 맞는 응용 프로그램 개발이 어렵다.
      • 새로운 응용 프로그램 개발하려면 파일에서 데이터 읽기/삽입/삭제 등의 기본적인 데이터 관리 기능을 모두 포함해야 한다.

02 데이터베이스 관리 시스템의 정의

  • 파일 시스템 문제점의 근본 원인 : 데이터 중복성과 종속성
    • 해결책은 데이터를 통합해서 저장하는 것
    • 통합 데이터를 관리하고, 모든 응용 프로그램이 공통으로 요구하는 데이터에 대한 기본 처리, 동시 공유, 보안, 회복 등의 복잡한 기능을 제공하기 위해 데이터베이스 관리 시스템이 나옴

데이터 베이스 관리 시스템

  • 데이터베이스 관리 시스템(DBMS; DataBase Management System)은 파일 시스템의 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어
    • 데이터를 통합하여 저장하고 관리를 집중적으로 담당
    • 응용 프로그램 대신 데이터의 삽입, 삭제, 수정, 검색하고, 모든 응용 프로그램이 데이터베이스를 공유할 수 있게 함

데이터 베이스 관리 시스템의 주요 기능

  • 정의 기능 : 데이터베이스 구조를 정의하거나 수정할 수 있다.
    • 데이터베이스 관리 시스템은 조직에 필요한 데이터를 저장하기 적합한 데이터베이스 구조를 정의하거나, 이미 정의된 구조를 수정할 수 있다.
  • 조작 기능 : 데이터를 삽입/삭제/수정/검색하는 연산을 할 수 있다.
    • 데이터베이스 관리 시스템은 데이터베이스에 저장된 데이터에 접근하여 사용할 수 있는 기능을 제공한다. 즉, 사용자 요구에 따라 데이터를 삽입/삭제/수정/검색하는 연산을 효율적으로 처리한다.
  • 제어 기능 : 데이터를 항상 정확하고 안전하게 유지할 수 있다.
    • 데이터베이스 관리 시스템은 데이터를 여러 사용자가 공유해도 항상 정확하고 안전하게 유지하는 기능을 제공한다. 데이터베이스 관리 시스템은 데이터를 삽입/삭제/수정하는 연산을 한 후에도 내용이 일관되면서 무결성을 유지하게 하고, 장애가 발생해도 회복이 가능하도록 제어한다.
    • 권한이 있는 사용자에게만 데이터 접근을 허용하여 보안이 유지되도록 제어한다. 특히, 여러 사용자가 데이터베이스에 동시에 접근하여 데이터를 처리할 수 있도록 제어한다.

03 데이터베이스 관리 시스템의 장-단점

데이터 베이스 관리 시스템의 장점

  1. 데이터 중복을 통제할 수 있다.
    • 데이터 중복을 방지해 저장 공간의 낭비와 데이터를 저장/수정하는 비용도 감소한다.
    • 효율성 때문에 데이터 중복을 허용하는 경우에도 중복을 최소화하도록 데이터 일관성도 유지할 수 있다.
  2. 데이터 독립성이 확보된다.
    • 데이터베이스 구조가 변경되어도 응용 프로그램이 영향 받지 않는다.
    • 응용 프로그램과 데이터베이스 사이에 독립성이 확보된다.
  3. 데이터를 동시 공유할 수 있다.
    • 데이터베이스에 통합된 데이터를 여러 응용 프로그램이 공유하여 같은 데이터에 동시 접근할 수 있도록 지원한다.
    • 동일한 데이터를 각 응용 프로그램의 요구에 따라 다양한 구조로 제공할 수 있고, 동시 접근을 제어하는 어려운 기술을 보유하고 있어 가능한 일이다.
    • 또한 동시 공유를 지원하기 때문에 불필요한 데이터 중복을 제한할 수 있다.
  4. 데이터 보안이 향상된다.
    • 데이터를 중앙 집중식으로 관리하므로 데이터에 대한 효율적인 접근 제어가 가능하다.
    • 권한이 없는 사용자의 접근, 허용되지 않은 데이터와 연산에 대한 요청을 사전에 차단할 수 있어 철저한 보안을 제공한다.
    • 사용자 별로 접근 가능한 데이터베이스 영역을 제한하거나 접근 수준을 차별화할 수 있다.
  5. 데이터 무결성을 유지할 수 있다.
    • 데이터 무결성은 저장된 데이터 값의 정확성(Accuracy)을 의미한다.
    • 새로운 데이터가 입력되거나 기존 데이터가 변경될 때마다 유효성을 검사할 필요가 있는데, 데이터가 중복되면 쉽지 않다.
    • 데이터베이스는 데이터 연산이 수행될 때마다 유효성을 검사하여 데이터 무결성을 유지한다.
  6. 표준화 할 수 있다.
    • 데이터에 대한 모든 접근이 데이터베이스 관리 시스템을 통해 이루어지기 때문에 데이터에 접근하는 방법, 데이터 형식과 구조 등을 표준화하기 쉽다.
    • 모든 응용 프로그램은 데이터 베이스 관리 시스템이 미리 정한 표준화된 방식을 통해 데이터베이스에 접근한다.
  7. 장애 발생 시 회복이 가능하다.
    • 장애가 발생해도 데이터 일관성과 무결성을 유지하면서 데이터를 장애가 발생하기 이전 상태로 복구하는 회복 기능을 지원한다.
  8. 응용 프로그램 개발 비용이 줄어든다.
    • 데이터에 대한 모든 관리를 응용 프로그램 대신 데이터베이스 관리 시스템이 담당하기 때문에 파일 시스템을 사용할 때보다 응용 프로그램 개발 비용이 적게 든다.
    • 데이터베이스의 구조가 변경되어도 응용 프로그램은 변경할 필요가 없어 유지 보수 비용이 파일 시스템을 사용할 때보다 줄어든다.

데이터 베이스 관리 시스템의 단점

  1. 비용이 많이 든다.
    • 파일 시스템은 운영 체제와 함께 설치되므로 따로 구매 비용이 들지 않지만, 데이터베이스 관리 시스템은 따로 설치해야 하므로 구매 비용이 많이 든다.
    • 특히, 동시 사용이 허용되는 사용자 수에 따라 제품 가격도 증가한다.
    • 데이터베이스 관리 시스템은 복잡하고 다양한 기능을 제공하기 위해 컴퓨터 자원을 많이 사용한다.
  2. 백업과 회복 방법이 복잡하다.
    • 데이터 양이 많아 구조가 복잡하고, 여러 사용자의 동시 공유를 지원하므로 장애가 발생했을 때 원인과 상태를 정확히 파악하기 어렵다.
    • 그래서 장애 발생 전에 데이터를 미리 백업해 놓고 장애 발생 후 데이터를 원래의 일관된 상태로 회복하는 방법이 복잡할 수밖에 없다.
  3. 중앙 집중 관리로 인한 취약점이 존재한다.
    • 모든 데이터가 통합되어 있으므로, 데이터베이스나 데이터베이스 관리 시스템에 장애가 발생하면 전체 시스템의 업무 처리가 중단된다.
    • 특히, 데이터베이스에 대한 의존도가 높은 시스템일수록 가용성과 신뢰성에 치명적인 영향을 받을 수 있다.
💡 여러 단점에도 불구하고 대량의 데이터는 대개 데이터베이스 관리 시스템을 이용해 처리한다.
- DBMS를 이용함으로써 얻는 이점이 더 많기 때문이다.
- 비용을 많이 투자할 수 없거나 소수 사용자를 위한 시스템을 개발하는 경우, 데이터 구조나 내용이 자주 변경되지 않는 경우에는 데이터베이스 관리 시스템을 사용하지 않는 것이 더 나을 수도 있다.
- 그러므로 업무의 특성, 경제적인 상황 같은 다양한 요소를 고려하여 데이터베이스 관리 시스템의 사용 여부를 결정해야 한다.

04 데이터베이스 관리 시스템의 발전 과정

1. 1세대 데이터베이스 관리 시스템 : 네트워크/계층 DBMS

  • 네트워크 DBMS : 데이터베이스를 그래프 형태로 구성
    • 단점 : 데이터베이스의 구조가 복잡하고, 변경하기 어려움
    • 예) IDS(Integrated Data Store)
  • 계층 DBMS : 데이터베이스를 트리 형태로 구성
    • 네트워크 DBMS보다 구조가 단순하지만, 현실 세계를 트리 형태만으로 표현하기 어렵고 구조 변경이 어렵다.
    • 예) IMS(Information Management System)

2. 2세대 데이터베이스 관리 시스템 : 관계 DBMS

  • 관계 DBMS : 데이터베이스를 테이블 형태로 구성
    • 장점 : 단순하고 이해하기 쉬운 구조
    • 오라클(Oracle), MS SQL 서버, 액세스(Access), 인포믹스(Informix),
      MySQL, 마리아DB(MariaDB)

3. 3세대 데이터베이스 관리 시스템 : 객체지향 / 객체관계 DBMS

  • 객체지향 DBMS : 객체를 이용해 데이터베이스를 구성
    • 새로운 유형의 데이터를 저장하고 데이터에 대한 복잡한 분석 및 처리 지원
    • 예) 오투(O2), 온투스(ONTOS), 젬스톤(GemStone)
  • 객체관계 DBMS : 객체지향 DBMS + 관계 DBMS
    • 예) 관계 DBMS 제품들이 객체지향 기능을 지원하면서 객체관계 DBMS로 분류되기도 함(오라클이 대표적)

4. 4세대 이후 데이터베이스 관리 시스템 : NoSQL / NewSQL DBMS

  • NoSQL DBMS : 비정형 데이터를 처리하는데 적합하고 확장성이 뛰어남
    • Not Only SQL : 여기서 SQL은 관계 DBMS 를 말함
    • 안정성과 일관성 유지를 위한 복잡한 기능 포기
    • 데이터 구조를 미리 정해두지 않는 유연성을 가짐
    • 여러 대의 컴퓨터에 데이터를 분산하여 저장하고 처리하는 환경에서 주로 사용
    • 예) 몽고디비(MongoDB), H베이스(HBase), 카산드라(Cassandra),
      레디스(Redis), 네오포제이(Neo4j), 오리엔트DB(OrientDB) 등
  • NewSQL DBMS : 관계 DBMS의 장점 + NoSQL의 확장성 및 유연성
    • 정형 및 비정형 데이터를 안정적이고 빠르게 처리 가능
    • 예) 구글 스패너(Spanner), 볼트DB(VoltDB), 누오DB(NuoDB)
💡 NewSQL은 시장에 진입한 지 얼마 되지 않았으므로 앞으로 더 큰 발전이 기대되지만 당분간 관계 DBMS, NoSQL, NewSQL 이 상호 보완하며 공존

728x90

'CS > DataBase' 카테고리의 다른 글

Bug Report : Docker postgreSQL 접속 오류  (0) 2024.05.06
[DB] 2장 연습문제 풀이  (0) 2024.04.26
[DB] 1장 연습문제 풀이  (0) 2024.02.12
[DB] 1장 : 데이터베이스 기본 개념  (0) 2024.02.12
[DB] 트랜젝션이란?  (2) 2023.02.10