데이터베이스 시스템의 개념
DBS(DataBase System): DB + DBMS + DBU(user) + DBL(language) + DBS(server)
데이터베이스 사용자
일반 사용자: 전문지식 없이 데이터베이스를 접근하는 사용자 유형(최종 사용자(end user))
- 초급 사용자: 데이터베이스 관련 지식이 거의 없는 사용자 DB, DBMS의 존재 모름
- 중급 사용자: 데이터 언어를 사용하여 데이터에 대한 처리를 직접 DBMS에 요청
응용 프로그래머: 데이터 베이스 전문 지식을 가지고 응용 프로그램을 개발할 목적으로 데이터베이스를 접근하는 사용자 유형 C, JAVA, JSP, PHP 같은 프로그래밍 언어 구사 가능 일반 사용자를 위한 업무처리 프로그램과 화면 등을 개발하여 제공
데이터베이스 관리자(DBA): 데이터베이스를 구축하고 데이터베이스 시스템을 자체적으로 운영/통제하는 특별한 소수의 사용자 유형
주요 역할
1. 데이터 베이스 시스템의 구성 요소 선정
2. 데이터베이스의 구조 정의
3. 물리적 저장 구조와 접근 방법 결정
4. 무결성 유지를 위한 제약 조건 정의
5. 보안 및 접근 권한 정책 결정
6. 백업 및 회복 기법 정의
7. 시스템 데이터베이스 관리
8. 시스템 성능 감시 및 성능 분석
9. 데이터베이스의 재구성
10. 데이터베이스 관련 의견 조정과 분쟁 해결
데이터베이스 사용자별 요구 능력
데이터 언어 (Query)
데이터 언어: DBMS에 요청 내용을 전달하기 위한 도구
표준 데이터베이스 언어SQL(Structured Query Language)
사용 목적에 따라 DDL(데이터 정의어, Data Definition Language), DML(데이터 조작어, Data Manipulation Language), DCL(데이터 제어어, Data Control Language)
데이터 정의어(DDL)
새로운 데이터베이스 구조를 정의하거나 기존 데이터베이스 구조를 변경하는 명령어 집합
스키마를 명세하기 위해서 사용 이 스키마는 DBMS에 의해 해석됨
스키마 구조뿐만 아니라 제약 조건과 스키마 사이의 사상 정보도 포함하며 데이터 사전에 저장된다
데이터베이스 설계자(응용 프로그래머)나 데이터베이스 관리자가 사용
CREATE, AL TER, DROP
데이터 조작어(DML)
데이터베이스 안의 데이터를 실제 조작하는 명령어 집합
DBMS에게 데이터의 입력, 수정, 삭제 및 검색을 요청하기 위해 사용 가장 많이 사용하는 건 인터페이스 도구
일반 사용자, 응용 프로그래머, 데이터베이스 관리자 모두가 사용함
INSERT, UPDATE, DELETE, SELECT
데이터 제어어(DCL)
데이터베이스를 제어하고 통제하기 위해 사용
데이터베이스가 안전하게 오류 없이 동작하고 성능을 유지하도록 각종 제약이나 옵션을 설정함으로써 DBMS가 데이터베이스를 올바르게 관리하도록 함
동시성 제어, 장애 회복, 무결성, 보안, 계정 관리 등의 명령어
보통 데이터베이스 관리자가 사용
GRANT, REVOKE, COMMIT, ROLLBACK
기능별로 구분한 것 뿐 하나의 데이터 언어 안에서 여러 명령어 형태로 제공
데이터베이스 관리 시스템
DBMS: 데이터베이스를 효율적으로 관리하고 데이터베이스에 대한 데이터 요청을 처리하는 소프트웨어 시스템
사용자-데이터베이스 사이의 중재자 역할을 수행함으로써 다양한 사용자나 응용프로그램이 데이터베이스를 함께 사용할 수 있도록 지원
SQL을 해석하고 실행하는 데이터베이스 시스템의 구성 요소
다양한 프로그램들로 구성된 대규모 시스템 소프트웨어 중 하나임
질의어 처리기, 트랜잭션 관리기, 컴파일러, 저장 관리기 등 다양한 소프트웨어 모듈의 패키지 형태로 구성
필수 기능
1. 정의 기능: 필요한 모든 데이터를 저장하는 통합 데이터베이스 구조를 생성하거나 이미 생성된 구조를 삭제 또는 변경 할 수 있도록 함
2. 조작 기능: 저장된 데이터에 접근하여 원하는 데이터 조작을 할 수 있도록 함
3. 제어 기능: 여러 사용자가 접근해도 항상 데이터를 정확하고 안전하게 유지하도록 통제(동시성, 무결성, 회복조치)
사용자별 보통 사용하는 명령어
DML: 중급 사용자, 응용 프로그래머, 데이터베이스 관리자
DDL: 응용프로그래머, 데이터베이스 관리자
DCL: 데이터베이스 관리자
데이터베이스 서버
데이터베이스 시스템은 보통 독립된 컴퓨터 안에 서버 형태로 운영됨
데이터베이스 서버 안에는 데이터베이스가 물리적으로 저장되어 있고 DBMS가 설치되어 있음
요즘은 일반 컴퓨터도 소규모 시스템의 경우 데이터베이스 시스템 서버로 활용하는 것이 가능한 환경이 됨
빅데이터의 경우 클라우드 시스템을 활용하는 것도 선택 가능한 방안
데이터 모델
데이터를 저장하기 위한 체계화된 구조가 필요함
종류에 따라서 다양한 저장 구조를 가지게 되는데 데이터베이스 구조를 명세하기 위한 개념 틀(concept framework)을 데이터 모델(data model)이라고 함
종류
1. 계층형 데이터 모델(HDM: Hierarchical Data Model) (1세대)
데이터 사이의 연관 관계를 물리적 위치 정보인 포인터로 표현하는 저장 방식
연관된 데이터 사이를 포인터 링크로 연결한 트리(tree) 형태의 계층
각 데이터들이 하나의 상위 부모와 여러 개의 하위 자식들을 갖는 구조로 연결된다
장점: 검색 속도가 빠르기 때문에 1:n 관계를 갖는 대용량 데이터베이스 처리에 강점이 있음
단점: m:n 관계의 표현이 어렵고 데이터가 중복됨
2. 네트워크형 데이터 모델(NDM: Network Data Model) (1세대)
데이터 사이의 연관 관계를 포인터로 표현하는 저장 방식
연관된 데이터 사이를 포인터 링크로 연결할 때 사이클을 형성할 수 있는 망(network) 형태의 구조를 갖는다는 점이 계층형 데이터 모델과 다르다 트리 구조를 네트워크 형태로 변환한 모델
장점: 검색 속도가 빠르고 m:n 표현이 용이한 장점이 있음
단점: 물리적 저장 구조를 알아야 하고 구조 변경 시 응용 프로그램도 함께 변경되어야 하는 등 데이터 구조가 복잡해짐
3. 관계형 데이터 모델(RDM: Relational Data Model) (2세대)
테이블 형태의 저장 구조를 가지며 데이터 사이의 연관 관계를 키(key)라고 하는 데이터 열 값(column value)을 통해 표현하는 저장 방식
장점: 연관된 데이터 사이에 기본키와 외래키를 통해 논리적 관련성을 표현함으로써 유연하고 이해하기 쉽다는 장점이 있음
4. 객체지향형 모델(OODM: Object Oriented Data Model) (3세대)
객체 단위의 저장 구조를 가지며 연관된 데이터 사이의 관계를 객체 식별자(OID: Object IDentifera)로 표현하는 저장 방식
구조적 측면에서 계층형, 네트워크형과 비슷하지만 객체 지향 언어의 상속, 캡슐화 등의 개념을 저장 구조에 도입한 점이 특징
5. 객체 관계형 모델(ORDM: Object Relational Data Model) (3세대)
관계형 데이터 모델을 기본 개념으로 하고 객체 데이터 모델의 객체 특성을 일부 반영한 절충형 모델
범용적인 관계형 데이터 모델을 기반으로 하고 필요할 경우, 특정한 분야를 위해 객체 개념을 추가로 지원하는 방식
6. 비관계형 (4세대)
데이터베이스, DBMS를 분류하는 가장 중요한 기준은 데이터 모델임
데이터베이스
데이터베이스 시스템의 핵심
데이터베이스 시스템의 운영 과정에서 발생하는 모든 데이터들의 저장소 다양한 요청을 수용해야 하는 데이터베이스의 구조는 매우 중요함
스키마
데이터베이스는 접근하는 수준과 목적에 따라 그 표현 구조가 다양함
스키마(schema): 데이터 구조와 제약 조건 등을 정의한 것
스키마는 데이터베이스의 정적인 구성뿐만 아니라 동적인 유지 조건까지를 포함함
동일한 데이터베이스라도 접근 관점에 따라 스키마는 다를 수 있음
스키마를 언급할 때 주로 데이터 구조에 관심을 가지므로 릴레이션 구조만을 간략하게 명세함
학생(학번, 이름, 학년, 성별)과 같이 테이블 이름과 열 이름으로만 간단히 스키마를 명세 가능
데이터베이스의 구조
3-단계 데이터베이스 구조(3-level database architecture)라고 함
미국 표준인 ANSI에서 제시한 방법으로 데이터베이스를 보는 관점을 3개의 단계로 분리하였음
명세하는 수준에 따라 외부 스키마, 개념 스키마, 내부 스키마
외부 스키마(external schema)
사용자가 외부에서 바라보는 관점에서의 개인적 데이터베이스 구조를 정의한 것
일반 사용자나 응용 프로그래머 차원에서 접근하는 일부 데이터베이스의 논리적 부분을 표현
데이터베이스 일부만을 대상으로 한정하여 명세한 구조이므로 서브 스키마(subschema)라고도 부름
사용자마다 사용 목적이 달라 관심을 갖는 데이터 내용이 다를 수 있음
각 사용자별로 외부에서 바라보는 관점은 다양하므로 여러 외부 스키마가 존재할 수 있음
부분적으로 정의한 뷰 같은 것 사용자에게 데이터 구조의 어떤 부분을 어떤 형태로 보여줄지 정하는 것
개념 스키마(conceptual schema)
모든 사용자들의 관점을 통합하여 전체 조직 관점에서 데이터베이스 구조를 정의한 것
데이터베이스 관리 차원에서 접근하는 통합된 데이터베이스의 논리적 부분을 표현
조직이나 기관의 데이터베이스 전체를 명세한 구조로 간단하게 스키마라고 함
모든 사용자와 으용 프로그램에서 필요로 하는 데이터를 종합하므로 데이터베이스에는 하나의 개념 스키마만 존재
개념 스키마로 부터 다양한 외부 스키마가 생성되므로 결국 각 사용자는 개념 스키마의 일부를 사용
내부 스키마(internal schema)
저장 장치의 관점에서 전체 데이터베이스의 내부 구조를 정의한 것
개념 스키마에 대한 시스템 내부의 저장 방식을 표현
내부 레코드의 형식이나 배치 방법, 인덱스 등 추상화된 상위 표현이며 내부 스키마도 데이터베이스 당 하나만 존재
테이블 스키마: 특정 테이블의 구조를 명세한 것
데이터베이스 스키마: 데이터 베이스를 구성하는 모든 테이블들의 구조를 명세한 것 (외부 스키마 + 내부 스키마 + 개념 스키마를 포함하는 전체 데이터 베이스의 구조를 정의하는 것)
데이터 사전(data dictionary)
3가지 스키마는 서로 연관되므로 이들 간의 자연스로운 매핑이 이루어져야 함
응용프로그램이나 사용자가 데이터베이스에 접근하려고 할 때 DBMS는 스키마 사이의 대응 관계를 처리함
사용자가 외부 스키마를 통해 접근하면 미리 정의된 사상 관계를 통해 개념 스키마, 내부 스키마로 변환이 이루어짐
스키마와 스키마의 매핑 정보를 데이터 사전이라는 별도의 저장소에 관리함
*매핑: 서로 다른 스키마 레벨 간의 대응 관계를 설정하는 것 어떤 데이터가 어떤 식으로 변환되고 대응되는지를 지정하는 것
외부스키마가 사용자별로 이런 데이터만 보여줘라고 요구사항을 정리하면 그 요구사항을 실제 데이터 구조와 연결해주는 것이 매핑
데이터 사전
데이터베이스에 저장된 모든 부가 정보, 데이터베이스 정의나 명세, 매핑 정보, 제약 조건, 데이터베이스 객체(테이블열, 뷰 인덱스, 사용자 등) 등을 저장하는 저장소 DBMS가 스스로 생성하고 유지함
시스템 데이터베이스 또는 시스템 카탈로그라고도 부름
메타 데이터
데이터에 관한 데이터(한 차원 높은 데이터라는 의미로 메타 데이터라고도 함)
검색은 일반 사용자도 가능하나 변경은 DBMS만 가능
데이터 디렉토리
사용자가 접근할 수 없는 데이터 디렉토리 (데이터 접근에 필요한 위치 정보를 저장하는 저장소)
사용자 데이터베이스
사용자나 응용프로그램이 실제로 이용하는 데이터를 저장하는 일반 데이터베이스
데이터 독립성
3단계 데이터베이스 구조의 특징은 응용 프로그램과 데이터 사이의 독립성을 제공함
데이터 독립성(data independency): 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 직접 받지 않는 특성
각 단계의 스키마 사이에 적절한 내부 매핑을 한다면 하위 스키마가 변경되더라도 상위 스키마에 영향을 주지 않도록 변경 내용을 숨길 수 있음
외부/개념 매핑: 논리적 데이터 독립성 제공
응용 프로그램은 자신만의 외부 스키마를 접근하며 필요할 경우 스키마 변경을 요청할 수 있음
이때 외부 스키마를 변경하더라도 전체 개념적 스키마는 변경되지 않거나 변경되더라도 변경 내용을 최소화함으로써 다른 응용 프로그램에 주는 영향을 최소화 함
논리적 데이터 독립성: 응용 프로그램에 영향을 최소화 함으로써 데이터베이스의 논리적 구조를 변경할 수 있는 것
하나의 개념 스키마를 여러 외부 스키마 형태로 매핑시킴으로써 가능
데이터의 논리적 구조가 변경되어도 사용자에게 미치는 영향을 최소화하려는 것
개념/내부 매핑: 물리적 데이터 독립성 제공
하나의 개념 스키마로 표현되는 데이터베이스는 실제로는 저장 장치 안에 내부 스키마로 표현되는 특정한 물리적 구조를 가짐
성능을 높이기 위해 파일 저장 구조 변경이나 인덱스 추가 등 내부 스키마의 변경이 요구될 수 있음
물리적 구조의 변경에 따른 내부 스키마가 수정되더라도 연관된 개념/내부 매핑 정보만 수정하면 상위 스키마에 대한 영향을 최소화 할 수 있음
물리적 데이터 독립성: 개념적 스키마에 영향을 최소화하면서 데이터베이스의 물리적 구조를 변경할 수 있는 것
물리적 데이터 독립성은 DBMS에 의해 수행되는 개념/내부 매핑을 통하여 가능함
개념 스키마의 데이터가 내부 스키마의 어느 물리적 위치에 어떤 방법으로 저장되는지 대응시키는 것
데이터의 저장 방식이 변경되어도 사용자에게 미치는 영향을 최소화하려는 것