데이터베이스
응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임
데이터베이스 시스템(DBS)의 구성 요소
- 응용 프로그램
- DBMS
- 데이터베이스
- 시스템 카탈로그
데이터베이스 시스템의 요구사항
- 데이터 독립성
- 효율적인 데이터 접근
- 데이터에 대한 동시 접근
- 백업과 회복
- 중복을 줄이거나 제어하며 일관성 유지
- 데이터 무결성
- 데이터 보안
- 쉬운 질의어
- 다양한 사용자 인터페이스
DBMS
- 데이터베이스를 정의하고, 질의어를 지원하며, 리포트를 생성
- 데이터베이스 보호
- 데이터 간의 복잡한 관계 표현, 무결성 제약조건 유지
- 프로그램 데이터 독립성: 프로그램에 영향 주지 않으면서 데이터베이스 구조 변경할 수 있음
DBMS 장점
- 중복성, 불일치 감소
- 개발, 유지 비용 감소
- 표준화 시행 용이
- 보안 향상
- 무결성 향상
- 고장으로부터 데이터베이스 회복
- 데이터베이스의 공유와 동시 접근 가능
데이터 모델
- 데이터베이스의 구조를 기술하는데 사용되는 개념들의 집합인 구조, 이 구조 위에서 동작하는 연산자들, 무결성 제약조건들
- 사용자에게 내부 저장 방식의 세세한 사항은 숨기면서 데이터에 대한 직관적인 뷰를 제공하는 동시에 이들 간의 사상을 제공
데이터 모델의 분류
1. 고수준 또는 개념적 데이터 모델
: 사람이 인식하는 것과 유사하게 데이터베이스의 전체적인 논리적 구조 명시
ex) 엔티티 관계: 데이터 모델과 객체 지향 데이터 모델
2. 표현(구현) 데이터 모델
: 최종 사용자가 이해하는 개념이면서 컴퓨터 내에서 데이터가 조직되는 방식과 멀리 떨어져 있지는 않음
ex) 계층 데이터, 네트워크 데이터, 관계 데이터 모델
3. 저수준 또는 물리적인 데이터 모델
: 데이터베이스에 데이터가 어떻게 저장되는가 기술
DBMS 발전 과정
1. 계층 DBMS(1960년대 후반)
- 최초, 트리 구조 기반
- 장점: 빠른 속도와 높은 효율성
- 단점: 데이터 접근 구조 같은 것들을 응용 프로그램에 정의해야 함
각각의 관계 명시적으로 정의해야 함
레코드 구조 변경 어려움
many-to-many 처리 어려움
2. 네트워크 DBMS(1960년대 초)
- 레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델 사용
- 레코드들이 링크로 연결되어 있어서 레코드 구조 변경 어려움
3. 관계 DBMS(1970년)
- 장점: 사용자는 자신이 원하는 것만 명시
데이터가 어디 있는지, 어떻게 접근하는지는 DBMS가 결정
ex) 오라클, MS SQL Server, Sybase, DB2, Informix 등
4. 객체 지향 DBMS(1980년대 후반)
- 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델
- 장점: 데이터와 프로그램을 그룹화하고, 복잡한 객체들을 이해하기 쉬우며, 유지와 변경이 용이함
ex) ONTOS, OpenODB, GemStone, ObjectStore, Versant, O2 등
5. 객체 관계 DBMS(1990년대 후반)
- 관계 DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안됨
ex) 오라클, Informix Universal Server 등
6. 현대의 관계 DBMS
- 고급 사용자 인터페이스 지원: SQL, 자연어, 폼 기반
- 다수의 트랜잭션 동시에 실행, 백업과 회복 수행
- 긴 필드, 이미지, HTML 링크, 공간 정보 지원
- 객체 지향 개념, 웹 인터페이스와 XML, 데이터 마이닝, OLAP와 데이터 웨어하우스, 효율적인 질의 처리 지원
DBMS들의 분류
1. 데이터 모델: 계층 DBMS, 네트워크 DBMS, 관계 DBMS, 객체 지향 DBMS, 객체 관계 DBMS
2. 사용자의 수: 단일 사용자 DBMS, 다수 사용자 DBMS
3. 사이트의 수: 중앙 집중식 DBMS, 분산 DBMS
4. 접근 방법: 범용 DBMS, 특별한 DBMS(ex 공간 DBMS)
DBMS 언어
1. 데이터 정의어(DDL)
- 사용자는 데이터 정의어를 사용하여 데이터베이스 스키마 정의
- DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 또는 데이터 사전에 저장
2. 데이터 조작어(DML)
- 사용자는 데이터 조작어를 사용하여 데이터베이스 내의 데이터를 검색, 수정, 삽입, 삭제
- 절차적 언어, 비절차적 언어
3. 데이터 제어어(DCL)
- 사용자는 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소
DBMS 사용자
1. 데이터베이스 관리자(DBA)
- 일관성 있는 데이터베이스 스키마를 생성하고 유지하는 사람
2. 응용 프로그래머
- 고객 관리, 인사 관리, 재고 관리 등이나 인터페이스 구현
- 데이터베이스 접근 부분은 내포된 데이터 조작어 사용
- 이들이 작성한 프로그램은 최종 사용자들이 반복해서 수행하므로 기작성 트랜잭션이라 부름
3. 최종 사용자
4. 데이터베이스 설계자
- 데이터베이스의 일관성을 유지하기 위해서 정규화 수행
5. 오퍼레이터
ANSI/SPARC 아키텍처
현재의 일반적인 아키텍처는 1987년에 제안된 ANSI/SPARC 아키텍처임
외부 단계
- 데이터베이스의 각 사용자가 갖는 뷰
- 동일한 개념 단계로부터 다수의 서로 다른 뷰가 제공될 수 있음
- 일부분에만 관심을 가짐
개념 단계
- 조직체의 정보 모델로서, 물리적 구현은 고려하지 않으면서 조직체 전체에 관한 스키마를 포함
- 데이터베잇에 어떤 데이터가 저장되어 있으며, 데이터 간에는 어떤 관계가 존재하고, 어떤 무결성 제약조건들이 명시되어 있는가를 기술함
- 데이터베이스에 대한 사용자 공동체의 뷰를 나타냄
- 데이터베이스마다 오직 한 개의 개념 스키마가 존재
내부 단계
- 실제의 물리적인 데이터 구조에 관한 스키마
- 데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가를 기술
- 인덱스, 해싱 등과 같은 접근 경로, 데이터 압축 등을 기술함
- 개념 스키마에는 영향을 미치지 않으면서 성능을 향상시키기 위해 내부 스키마를 변경하는 것이 바람직
- 내부 단계 아래는 물리적 단계
- 물리적 단계는 DBMS의 지시에 따라 운영 체제가 관리함
스키마 간의 사상
- DBMS는 세 가지 유형의 스키마 간의 사상을 책임짐
외부/개념 사상
- 외부 단계의 뷰를 사용해서 입력된 사용자들의 질의를 개념 단계의 스키마를 사용한 질의로 변환
개념/내부 사상
- 이를 다시 내부 단계의 스키마로 변환하여 디스크의 데이터베이스를 접근
데이터 독립성
- 상위 단계의 스키마 정의에 영향을 주지 않으면서 어떤 단계의 스키마 정의를 변경할 수 있음을 의미
- 논리적인 데이터 독립성
: 개념 스키마의 변화로부터 외부 스키마가 영향을 받지 않음을 의미
기존의 외부 스키마에 영향을 미치지 않고, 응용 프로그램을 다시 작성할 필요 없이 개념 스키마에 대한 변화가 가능해야 함
- 물리적인 데이터 독립성
: 내부 스키마의 변화가 개념적 스키마에 영향을 미치지 않으며, 따라서 외부 스키마(또는 응용 프로그램)에도 영향을 미치지 않음을 의미
화일의 저장 구조를 바꾸거나 인덱스 생성 및 삭제(내부 스키마 변화)해도 개념적 스키마, 외부 스키마 영향X
데이터베이스 시스템 아키텍처
- 데이터 정의어 컴파일러 모듈
- 질의 처리기 모듈
- 런타임 데이터베이스 관리기 모듈
- 트랜잭션 관리 모듈
- 데이터베이스 API
- 중앙 집중식 데이터베이스 시스템
- 분산 데이터베이스 시스템
- 클라이언트-서버 데이터베이스 시스템