데이터베이스(DB)는 논리적으로 일관된 관련 데이터들의 모음을 말한다.
이것은 사용자가 데이터베이스를 쉽게 생성하고 유지할 수 있도록 데이터베이스 관리 시스템(DBMS)에 의해 관리되고,
DBMS를 이용하여 데이터베이스를 정의, 구축, 조작, 공유할 수 있다.
데이터베이스의 특징
- 자기 기술적인 특성(Self-describing nature)
- 프로그램과 데이터 간의 독립성 및 데이터 추상화
- 다중 데이터 뷰 지원
- 데이터 공유 및 다중 사용자 트랜잭션 처리
자기 기술적인 특징
데이터베이스 시스템은 데이터베이스 자체뿐만 아니라 구조를 설명하는 메타데이터도 포함하고 있다. 이를 통해 데이터 베이스를 유지하고 관리할 수 있다.
- 메타데이터: 데이터베이스 구조와 제약 조건을 정의하는 정보로, 데이터베이스를 유지하는 데 필요하다.
- 메타데이터는 DBMS 카탈로그에 저장된다.
프로그램과 데이터 간의 독립성 및 데이터 추상화
- 데이터 구조가 변경되더라도 프로그램에 영향을 미치지 않는 프로그램-데이터 독립성을 제공한다. 이는 데이터베이스의 자기 기술적인 특성 덕분에 가능하다.
- 데이터 추상화: DBMS는 데이터를 논리적 개념(예: 객체, 속성, 상호 관계)으로 표현할 수 있는 기능을 제공한다.
- 데이터가 어떻게 저장되는지, 접근 경로나 저장 방식 등의 물리적 세부사항을 포함하지 않는다.
- 추상화 덕분에 사용자나 개발자는 물리적 세부사항 대신 데이터의 논리적 구조만 이해하면 된다.
다중 데이터 뷰 지원
- 서로 다른 사용자는 동일한 데이터베이스에 대해 다양한 뷰(View)를 필요로 할 수 있다.
- 뷰(View)는 데이터베이스로부터 파생된 가상 데이터로, 실제로 데이터베이스에 저장되지 않고 동적으로 생성된다.
- 사용자는 데이터가 저장된 것인지 파생된 것인지 알 필요 없이 요구에 맞는 뷰를 사용할 수 있다.
데이터 공유 및 다중 사용자 트랜잭션 처리
- 데이터베이스는 여러 사용자가 동시에 접근할 수 있도록 해야 하며, 다양한 애플리케이션의 데이터를 통합 관리할 수 있어야 한다.
- 동시성 제어 소프트웨어는 다중 사용자가 동시에 데이터베이스에 접근할 때 데이터의 일관성을 보장하는 역할을 한다.
- 예시: 항공 예약 시스템에서는 다수의 사용자가 동시에 예약을 하더라도 데이터 충돌을 방지해야 한다.
즉, 여러 사용자가 안전하게 데이터를 공유하고 다룰 수 있도록 동시성 제어를 통해 데이터 일관성을 유지해야 한다.
대규모 조직에서는 데이터베이스를 설계, 사용, 유지 보수하는 데 다양한 사람들이 관여하게 된다.
아래에 소개할 주요 사용자(Actor)들은 데이터베이스를 다양한 방식으로 활용하는 역할을 수행한다.
- 데이터베이스 관리자(DBA):
- 데이터베이스 접근 권한 부여, 시스템 리소스 관리 및 모니터링을 담당한다.
- 데이터베이스 설계자:
- 데이터베이스에 저장될 데이터를 정의하고, 데이터베이스 구조를 설계하며, 사용자 요구 사항을 반영해 최적의 디자인을 만든다.
- 소프트웨어 엔지니어(개발자):
- 시스템 분석가: 사용자 요구를 분석하고 표준 트랜잭션 사양을 정의한다.
- 애플리케이션 프로그래머: 사양을 바탕으로 프로그램을 구현하고, 테스트, 디버깅, 유지 보수를 수행한다.
주요 사용자가 아닌, 일반 사용자(End Users)는 데이터베이스에 접근하여 작업을 수행하는 사람들로 나뉜다.
- 일반 사용자(Casual End Users): 데이터베이스를 가끔 사용하며, 다양한 정보에 접근한다.
- 단순 사용자(Naïve End Users): 표준화된 쿼리나 업데이트를 주로 사용하며, 은행 직원이나 항공 예약 직원 등이 이에 해당한다.
- 숙련된 사용자(Sophisticated End Users): 복잡한 요구 사항을 해결하기 위해 DBMS 기능을 직접 사용한다.
- 독립 사용자(Standalone Users): 금융 소프트웨어와 같은 프로그램을 사용해 개인 데이터베이스를 관리하는 사용자.
간단하게, 일반 사용자는 데이터베이스 사용 빈도와 복잡성에 따라 다양한 유형으로 나뉘며, 각 유형마다 데이터베이스 접근 방식이 다르다.
배후 작업자는 데이터베이스의 설계, 개발, 운영에 관여하지만, 데이터의 내용 자체에는 관심이 없는 사람들을 말한다.
- DBMS 시스템 설계자 및 구현자: DBMS의 다양한 모듈(예: 쿼리 처리, 인터페이스, 데이터 접근, 동시성 제어 등)을 설계하고 구현한다.
- 도구 개발자: 데이터베이스 모델링, 설계, 시스템 성능 모니터링 등을 돕는 소프트웨어 도구를 설계하고 개발한다.
- 운영 및 유지보수 인력: 하드웨어 및 소프트웨어 환경을 관리하고 유지한다.
주로 DBMS의 설계와 개발, 운영을 지원하며, 시스템의 기술적 부분을 관리한다.
DBMS 시스템 설계자 및 구현자
DBMS는 다양한 모듈로 구성되는데, 각각의 모듈을 설계하고 구현하는 역할을 한다.
ex) 쿼리 언어 처리, 인터페이스 처리, 데이터 접근 및 버퍼링, 동시성 제어, 데이터 복구 처리 등.
- 도구 개발자:
- 데이터베이스 접근을 용이하게 하는 도구를 설계하고 구현한다.
- 예시: 데이터베이스 모델링, 성능 모니터링, 시뮬레이션 등을 위한 소프트웨어 패키지.
- 운영 및 유지보수 인력:
- 데이터베이스 시스템의 하드웨어와 소프트웨어 환경을 관리하고 유지하는 역할을 한다.
DBMS의 주요 기능
DBMS가 제공해야 하는 주요 기능들
- 중복 제어 (Controlling Redundancy)
- 무단 접근 제한 (Restricting Unauthorized Access)
- 다양한 사용자 인터페이스 제공 (Providing Multiple User Interfaces)
- 무결성 제약 조건 적용 (Enforcing Integrity Constraints)
- 백업 및 복구 제공 (Providing Backup and Recovery)
중복 제어
동일한 데이터를 여러 위치에 여러 번 저장하면 저장 공간 낭비 및 데이터 불일치가 발생할 수 있다.
따라서, DBMS는 데이터 일관성을 유지하고 중복을 방지하기 위한 기능을 제공해야 한다.
위 상황을 해결하는 방법으로
학생(Student) 정보를 별도의 테이블로 분리하여 학생번호(Student_number)와 학생 이름(Student_name)을 한 번만 저장하고,
GRADE_REPORT 테이블에서는 Student_number만 외래키(Foreign Key)로 저장하여 참조하도록 설계한다.
무단 접근 제한
DBMS는 데이터의 무단 접근을 방지하기 위해 접근 권한 관리 기능을 제공하며, 각 사용자마다 다른 접근 권한을 부여한다.
예시: 재무 데이터(급여, 보너스 등)는 권한이 있는 사람만 접근 가능하거나
일부 사용자는 데이터 조회만 가능하고, 다른 사용자는 조회 및 수정이 모두 가능하도록 설정한다.
다양한 사용자 인터페이스 제공
데이터베이스는 다양한 기술 수준을 가진 여러 사용자들이 사용하므로, 다양한 유형의 사용자 인터페이스를 제공하여 접근성을 높인다.
- 쿼리 언어 인터페이스: 애플리케이션 프로그래머를 위한 인터페이스.
- 그래픽 사용자 인터페이스(GUI): 일반 사용자와 독립 사용자를 위한 메뉴 기반 인터페이스.
무결성 제약 조건 적용
무결성이란 데이터가 주어진 제약 조건을 만족해야 하는 특성이다.
DBMS는 이러한 무결성 제약 조건을 정의하고 이를 강제 적용할 수 있는 기능을 제공한다.
백업 및 복구
DBMS는 예상치 못한 장애가 발생할 때 데이터베이스를 복구할 수 있도록 백업과 복구 기능을 제공해야 한다.
'cs > 데이터베이스' 카테고리의 다른 글
B-Tree 삭제 과정 (0) | 2024.10.15 |
---|---|
B-Tree의 insertion과 split 생성 과정 (0) | 2024.10.14 |
데이터베이스 저장에 왜 B-tree 자료구조가 필요할까? (0) | 2024.10.13 |
데이터베이스, 어떻게 설계하고 관리할까? (5) | 2024.10.12 |