데이터베이스(Database)
- 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터(operational data)들이 구조적으로 통합된 모임.
- 운영 데이터 : 조직체에서 매우 중요한 데이터
- 기본적으로 정보와 데이터는 다르다.
- 정보 : 데이터가 가공된 것으로, 컴퓨터를 사용하여 수집하고 분석하는데 데이터베이스 기술이 활용된다.
- ex) 항공기 예약 시스템 : 고객이 좌석을 예약하면 모든 예약 정보가 데이터베이스에 기록된다.
데이터베이스의 특징
- 데이터베이스는 데이터의 대규모 저장소로서, 여러 사용자에 의해 공유되므로 동시에 사용된다.
- 모든 데이터는 정규화에 의해 중복을 최소화하면서 통합된다.
- 데이터베이스는 한 조직체의 운영 데이터뿐만 아니라 데이터베이스 스키마와 메타 데이터(metadata)까지 포함하는데, 스키마와 메타 데이터는 운영 데이터에 관한 설명을 의미한다.
- 프로그램과 데이터 간의 독립성이 제공된다. 즉, 데이터를 변경하더라도 프로그램에 영향을 미치지 않을 수 있다.
- 효율적으로 접근이 가능하고 질의(SQL)를 할 수 있다.
데이터베이스 관리 시스템(Database Management System, DBMS)
- 사용자가 데이터베이스를 생성하고, 구조를 명시할 수 있게 하고, 데이터를 효율적으로 질의하고 수정할 수 있도록 하며, 시스템의 고장이나 권한이 없는 다른 사용자로부터 데이터를 안전하게 보호함과 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어하는 소프트웨어 패키지
- 데이터베이스 언어라고 부르는 특별한 프로그래밍 언어를 한 개 이상 제공한다.
- SQL(Structure Query Language) : 여러 DBMS에서 사용할 수 있는 표준 데이터베이스 언어
- ex) Oracle, MySQL, MSSQL 등이 있다.
데이터베이스 스키마
- 전체적인 데이터베이스의 구조
- 데이터베이스의 모든 가능한 상태를 미리 정의해야 하며, 자주 변경되지는 않는다.
- 내포(intension)라고 부른다.
DEPARTMENT(DEPTNO, DEPTNAME, FLOOR)
-> 부서 정보를 담은 DB의 구조.
-> 부서의 식별자(DEPTNO), 부서명(DEPTNAME), 부서의 층수(FLOOR)로 구성되어 있다.
EMPLOYEE(EMPNO, EMPNAME, TITLE, DNO, SALARY)
-> 직원 정보를 담은 DB의 구조.
-> 직원의 식별자(EMPNO), 직원 이름(EMPNAME), 직함(TITLE), 소속된 부서의 식별자(DNO), 월급(SALARY)으로 구성되어 있다.
데이터베이스 상태
- 특정 시점의 데이터베이스의 내용을 의미하며, 내용이란 레코드의 모임으로 본다.
- 시간이 지남에 따라 계속해서 바뀐다.
- 외연(extension)이라고 부른다.
EX)
DEPARTMENT
DEPTNO | DEPTNAME | FLOOR |
1 | 영업 | 8 |
2 | 기획 | 10 |
3 | 개발 | 9 |
EMPLOYEE
EMPNO | EMPNAME | TITLE | DNO | SALARY |
2106 | 홍길동 | 대리 | 2 | 2,000,000 |
3426 | 이순신 | 과장 | 3 | 2,500,000 |
3011 | 유관순 | 부장 | 1 | 3,000,000 |
1003 | 안중근 | 대리 | 1 | 2,000,000 |
3427 | 장발장 | 사원 | 3 | 1,500,000 |
데이터베이스 시스템(Database System, DBS)
- DBMS 에는 하나의 DB서버만 존재할 수 있으며, DB서버에는 여러 개의 DB가 존재할 수 있다.
- 데이터베이스는 시스템 카탈로그(system catalog)인 데이터베이스 스키마와 저장된 데이터베이스로 구분될 수 있다.
- 데이터베이스 시스템에서 하드웨어의 역할 : 데이터베이스는 디스크와 같은 보조 기억 장치에 저장되며, DBMS에서 원하는 정보를 찾기 위해서는 디스크의 블록(Block)들을 주기억 장치(RAM)로 읽어 들여야 한다. 또한 계산이나 비교 연산들을 수행하기 위해 중앙 처리 장치(CPU)가 사용된다.
- DBMS 자체도 주기억 장치(RAM)에 적재되어 실행된다.
데이터베이스 시스템의 요구사항
- 프로그램과 데이터 간의 독립성
- 효율적인 데이터 접근
- 데이터에 대한 동시 접근(공유성)
- 백업과 회복
- 중복을 줄이거나 제어하는 등의 일관성 유지
- 데이터 무결성 : 테이블에 들어가는 데이터의 정확성
- 데이터 보안
- 쉬운 질의어
- 다양한 사용자 인터페이스
DBMS 언어
- 데이터 정의어(Data Definition Language, DDL) : 데이터베이스 스키마를 정의하기 위한 언어로, 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그에 저장한다.
데이터 구조의 생성 : CREATE TABLE ~
데이터 구조의 변경 : ALTER TABLE ~
데이터 구조의 삭제 : DROP TABLE ~
데이터 접근을 위해 특정 애트리뷰트 위에 인덱스 정의 : CREATE INDEX
- 데이터 조작어(Data Manipulation Language, DML) : 데이터베이스 내의 원하는 데이터를 검색, 수정, 삽입, 삭제한다. 대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 갖고 있다. 일반적으로 프로그램에 내포(코드 상의)되어 사용된다.
데이터 검색 : SELECT ~
데이터 수정 : UPDATE ~
데이터 삭제 : DELETE ~
데이터 삽입 : INSERT ~
- 데이터 제어어(Data Control Language, DCL) : 사용자는 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소한다.
DBMS 사용자
- 데이터베이스 관리자(Database Administrator, DBA) : 조직의 여러 부분의 상이한 요구를 만족하도록 일관성 있는 데이터베이스 스키마를 생성하고 유지한다.
- 데이터베이스 스키마의 생성과 변경
- 무결성 제약조건을 명시
- 사용자의 권한을 허용 및 취소하고, 사용자의 역할을 관리
- 저장 구조와 접근 방법(물리적 스키마) 정의
- 백업과 회복을 담당
- 표준화를 시행
- 응용 프로그래머 : 데이터베이스 위에서 특정 응용이나 인터페이스를 구현하며, 데이터베이스를 접근하는 부분은 내포된 데이터 조작어(Embedded 의)를 사용한다. 이들이 작성한 프로그램은 최종 사용자들이 반복해서 수행하므로 “미리 만들어놓은 트랜잭션”이라고 부른다.
- 최종 사용자 : 질의 및 갱신이나 보고서를 생성하고자 데이터베이스를 사용한다.
- 데이터베이스 설계사 : Computer Aided Software Engineer 도구들을 이용해서 데이터베이스 설계를 담당한다. 데이터베이스의 일관성을 유지하기 위해 정규화를 수행한다.
- 오퍼레이터 : DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람
DBMS의 아키텍쳐
- DBMS는 ANSI/SPARC 아키텍쳐의 3단계로 이루어진다.
- 외부 단계(external level) : 각 사용자의 뷰(최상위)
- 개념 단계(conceptual level) : 사용자 공동체의 뷰(중간)
- 내부 단계(internal level) : 물리적 또는 저장 뷰(최하위)
- 스키마 간의 사상
- 외부/개념 사상(external/conceptual mapping) : 외부 단계의 뷰를 사용해서 입력된 사용자의 질의를 개념 단계의 스키마를 사용한 질의로 변환한다.
- 개념/내부 사상(conceptual/internal mapping) : 위의 변환된 질의를 다시 내부 단계의 스키마로 변환하여 디스크의 데이터베이스에 접근한다.
- ANSI/SPARC 아키텍쳐는 데이터 독립성을 가진다. 이는 상위 단계의 스키마 정의에 영향을 주지 않으면서 어떤 단계의 스키마 정의를 변경할 수 있음을 의미한다.
- 논리적인 데이터 독립성 : 개념 스키마의 변화로부터 외부 스키마가 영향을 받지 않는다.
ex) 컬럼 추가 및 테이블 추가 : 외부 뷰의 경우 이미 있던 데이터를 사용 중이므로 새 테이블이 추가되어도 영향을 받지 않는다. 단, 삭제나 컬럼 변경은 영향을 줄 수 있다. 즉, 기존의 외부 스키마에 영향을 미치지 않고, 응용 프로그램을 다시 작성할 필요 없이 개념 스키마에 대한 변화가 가능해야 한다.
- 물리적인 데이터 독립성 : 내부 스키마의 변화가 개념 스키마에 영향을 미치지 않으므로 외부 스키마(또는 응용 프로그램)에도 영향을 미치지 않는다.
ex) 파일의 저장 구조를 바꾸거나 인덱스 생성 및 삭제
DBMS 운영 방식
- 중앙 집중식 데이터베이스 시스템(Centralized Database System) : 일반적인 방식으로, 데이터베이스 시스템이 하나의 컴퓨터 시스템에서 운영된다.
- 분산 데이터베이스 시스템(Distributed Database System) : 네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영된다. 권한만 있다면 사용자는 다른 사이트에 저장된 데이터베이스에 접근할 수 있다. 이 때 시스템 카탈로그는 확장되어 각 DB가 어디에 위치하는지 알아야 한다.(명세 기재 시 확장)
- 클라이언트-서버 데이터베이스 시스템(Client-Server Database System)
- 하나의 데이터베이스 서버에 데이터베이스가 저장되며, 자체 컴퓨팅 능력을 가진 클라이언트를 통해 데이터베이스 서버에 접근한다.
- 데이터베이스 시스템의 기능은 서버와 클라이언트에 분산된다. 대부분의 기능은 서버에 있고, 클라이언트의 경우 사용자 인터페이스를 관리하고 응용들을 수행한다.
- 클라이언트가 사용하는 DB를 업데이트할 경우, 다른 클라이언트도 최신버전으로 업데이트해야 한다.
- 2층 모델(2-tier model) : 클라이언트와 데이터베이스 서버가 직접 연결된다.
- 3층 모델(3-tier model) : 클라이언트와 데이터베이스 서버 사이에 응용 서버가 추가된다.
ex) 브라우저(Client) - Application Server(응용서버) - DB 서버(DBMS)
- 응용 서버는 응용 논리를 처리하며, Web Server가 그 역할을 수행한다. Server Side Scripting 방식으로 수행되어진다.
- 장점 : 데이터베이스를 보다 넓은 지역에서 접근할 수 있으며 다양한 컴퓨터 시스템을 사용할 수 있다.
- 단점 : 보안이 다소 취약할 수 있다.
'Database > Theory' 카테고리의 다른 글
6. Embeded SQL - 내포된 SQL문 (0) | 2017.12.30 |
---|---|
5. SQL(Structured Query Language) - 데이터 조작어(DML) (1) | 2017.12.30 |
4. SQL(Structured Query Language) - 데이터 정의어(DDL) (0) | 2017.12.29 |
3. 관계 대수 (0) | 2017.12.25 |
2. 관계 데이터 모델과 제약조건 (0) | 2017.10.13 |