[CS] 데이터 베이스 관리 시스템
데이터 베이스
- 서로 연관이 있는 데이터들의 모임
- 특정한 목적을 위해서 설계, 구축, 운용
- 데이터가 생성되는 원천(source)를 가지며, 실세계의 사건들과 어느정도 상호작용을 가지고, 데이터베이스의 내용에 능동적으로 관심을 갖는 사용자를 가짐
- 가장 일반적인 유형의 데이터베이스에서 데이터는 일반적으로 처리 및 데이터 쿼리를 효율적으로 수행하기 위해 일련의 테이블에서 행과 열로 모델링
데이터 베이스의 개념
- 공용 데이터 - 한 사람 또는 한 업무를 위해 사용되는 데이터가 아니라 공동으로 사용되는 데이터를 의미
- 통합된 데이터 - 데이터를 통합하는 개념. 각자 사용하던 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 제거
- 저장된 데이터 - 문서로 보관된 데이터가 아니라 컴퓨터 저장장치에 저장된 데이터를 의미
- 운영 데이터 - 조직의 목적을 위해 사용되는 데이터. 즉, 업무를 위한 검색을 목적으로 저장됨
데이터 베이스의 특징
파일처리 방식에 비하여 데이터베이스 방식이 갖는 특징
- 실시간 접근성 - 데이터베이스는 실시간으로 서비스됩니다. 사용자가 데이터를 요청하면 수 초 내에 결과를 서비스한다.
- 프로그램과 데이터의 격리 - 데이터 파일의 구조가 응용 프로그램과 분리되어 DBMS 카탈로그에 저장, 따라서 데이터 파일의 구조가 변경되어도 응용 프로그램에 끼치는 영향은 미비
- 데이터에 대한 다중 뷰의 제공 - 사용자는 자신이 사용하는 데이터가 데이터베이스에 저장된 실제 데이터인지 또는 유도된 데이터인지 구분할 필요가 x
- 데이터의 공유와 다수 사용자 트랜잭션 처리 - 다수 사용자용 DBMS에는 동시성 제어 소프트웨어가 내장되어 다수 사용자가 동일한 데이터를 동시에 변경하는 경우에도 데이터의 일관성을 보장
데이터 베이스의 구조
- 스키마 - 데이터베이스의 논리적 정의, 즉 데이터 구조와 제약조건에 대한 명세를 기술한 것
- 외부 단계 - 데이터베이스 구조를 사용자(응용 프로그램) 입장에서 추상화
- 개념 단계 - 데이터베이스 구조를 조직 전체의 입장에서 추상화
- 내부 단계 - 데이터베이스 구조를 저장 장치의 입장에서 추상화
데이터 베이스 시스템
- 데이터베이스 + DBMS
DBMS
- 사용자가 데이터베이스를 생성하고, 관리할 수 있도록하는 컴퓨터화된 시스템이다.
- DBMS는 다양한 사용자와 응용들이 필요로하는 데이터베이스를 정의, 생성, 조작, 공유할 수 있도록 편리한 기능을 제공하는 범용 소프트웨어 시스템이다.
- 데이터베이스 정의 - 데이터베이스에 저장되는 데이터에 대한 데이터 타입, 구조, 제약조건(constraint)들을 명세하는 과정
- 메타데이터(meta-data) : DBMS에 의해서 카탈로그나 사전의 형태로 저장되는 데이터베이스를 설명하는 정보
- 데이터베이스 구축 - DBMS가 관리하는 기억 장치(대부분 디스크)에 데이터를 저장하는 과정
- 데이터베이스 조작 - 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 데이터로부터 리포트를 생성하는 기능 등을 포함
- 데이터베이스 공유 - 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능
DBMS의 종류
| DBMS | 제작사 | 작동운영체제 | 기타 |
|---|---|---|---|
| MySQL | Oracle | Unix, Linux, Windows, Mac | 오픈 소스(무료), 상용 |
| MariaDB | MariaDB | Unix, Linux, Windows | MySQL 초기 개발자들이 독립해서 만듦 |
| Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 |
| SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
DBMS의 분류
- 계층형 DBMS
- 처음으로 등장한 DBMS 개념으로 1960년대에 시작
- 데이터가 트리(Tree) 형태의 구조로 조직
- 상하 종속적인 관계로 구성되어 있어 초기 셋팅 후 변화하는 프로세스를 수용하기가 쉽지 않다는 단점
- 복잡한 관계를 지원할 수 없고, 따라서 중복 데이터로 인해 종종 문제가 발생
- 망형 DBMS
- 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장
- 계층형데이터베이스관리 시스템의 문제점인 상하 종속적인 관계 해결
- 구성과 설계가 복잡하고 궁극적으로 데이터의 종속성을 해결 x
- 관계형 DBMS
- 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)으로 구성
- 수학적 논리관계를 테이블의 형태로 구성한 구조로서 테이블 내의 컬럼 중 일부를 다른 테이블과 중복해 각 테이블간의 상관관계를 정의
- 다른 DBMS 보다 더 많은 자원이 필요로해 시스템의 부하가 높다는 단점
DBMS의 장점
- 중복성의 제어 - 데이터 베이스를 사용하는 경우에는 데이터에 개한 각 사용자 그룹의 뷰들이 데이터베이스 설계 과정에서 하나로 통합 -> 각 논리적 데이터는 데이터 베이스 내에 오직 한번만 저장
- 데이터 정규화 - 데이너 베이스 내에 오직 한번만 저장
- 반정규화 - 제어된 중복성이 질의 성능을 개선하는 데 유용한 경우(중복의 허용)
- 권한이 없는 접근의 통제 - DBMS는 보완과 권한 서브시스템을 가짐
- 프로그램 객체를 위한 지속성 기억 공간 제공 - 프로그램의 수행이 끝난 후에도 데이터베이스에 영구적으로 객체가 남아 있으며 필요하면 언제든지 다른 프로그램들에서 접근이 가능
- 효율적인 질의 처리를 위한 저장 구조와 탐색 기법의 제공 - DBMS는 원하는 레코드를 디스크에서 검색하는 시간을 줄이기 위해 특수한 자료구조와 탐색 기법을 제공해야함
- 백업과 회복 제공 - DBMS는 하드웨어와 소프트웨어의 고장으로부터 복구할 수 있는 기능을 가져야함
- 다수의 사용자 인터페이스 제공 - 사용자들이 다양한 그룹으로 나누어지므로 이에 따라 각각에 적합한 인터페이스를 제공해야 함
- 데이터 간의 복잡한 관계의 표현 - DBMS는 새로운 관계가 나타날 때 그 관계를 정의하고 연관된 데이터를 쉽고 효율적으로 검색하거나 변경할 수 있는 기능을 제공하기 위해 필요
- 무결성 제약 조건의 시행
- 참조 무결성 제약 조건: 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 같아야 하며, 이는 자식 릴레이션의 값이 변경될 때 부모 릴레이션 도메인에 제약을 받는다는 조건
- 키 제약 조건: 키 애트리뷰트에 중복된 값이 존재해서는 안된다는 조건
SQL
- 관계형 데이터베이스에서 사용되는 언어
- 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 지님
- 표준 SQL - 국제표준화기구에서 SQL에 대한 표준을 정해서 발표
댓글남기기