DBMS - Database Management System
- 서로 관계 있는 데이터들의 모임
- 그 데이터에 접근하기 위한 프로그램의 집합
- 편리하고 효율적인 환경
데이터 모델
- 관계형 모델
- 개체-관계 모델
- 객체 기반 데이터 모델
- 반 구조형 데이터 모델(XML)
- 기타 구형 모델(네트워크,계층 척 모델)
관계형 모델
- 모든 데이터는 다양한 테이블에 저장
- 관계형 모델의 테이블 형식 데이터의 예
데이터의 관점
- physical level - 어떻게
- logical level - 무엇을(고급 언어를 나누는 기준이 됨 how)
- view level - 사용자에 맞게 제공(맞춤형 제공)
인스턴스와 스키마
- 논리적 스키마 - 데이터베이스의 전체 논리적 구조
ex) 데이터베이스는 은행의 고객 및 계좌와 이들 간의 관계에 대한 정보로 구성
- 물리적 스키마 - 데이터베이스의 전체 물리적 구조
- 인스턴스 - 특정 시점에서 데이터베이싀 실제 콘텐츠
물리적 데이터 독립성 : 논리적 스키마를 변경하지 않고 물리적 스키마를 수정 할 수 있는 기능
- 논리적 스키마에 의존하는 애플리케이션
- 일반적으로 다양한 수준과 구성 요소 간의 인터페이스를 잘 정의하여 일부 부분의 변경이 다른 부분에 심각한 영향을 미치지 않도록 해야 함.
데이터 정의 언어(Data Definition Language(DDL))
- 데이터베이스 스키마 정의를 위한 표기법
- DDL 컴파일러는 데이터 사전에 저장된테이블 템플릿 셋트를 생성
- 데이터 사전에는 메타데이터가 포함됨
- 무결성 제약(ID,학번 등 고유의 넘버가 있음)
*무결성 : 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것
데이터 조작 언어(Data Manipulation Language(DML))
- 적절한 데이터 모델로 구성된 데이터에 접근하거나 조작할 수 있도록 하는 언어(DML-query 언어로 알려짐)
- 두 가지 유형의 데이터 조작 언어 - 절차식 DML 선언적 DML
- 선언적 DML은 일반적으로 절차식 DML 보다 더 쉬움
- 정보 검색과 관련된 DML 부분을 쿼리 언어 라고 함
절차식 DML | 사용자가 필요한 데이터와 해당 데이터를 가져 오는 방법을 지정하도록 요구 |
선언적 DML(비 절차적 DML) | 사용자가 데이터를 가져 오는 방법을 지정하지 않고 필요한 데이터를 지정하도록 요구 |
SQL Query Language
- SQL 쿼리 언어는 비 절차적
- 쿼리는 하나 이상의 테이블을 입력 받아 단일 테이블을 반환
- SQL은 튜링 머신과 동등한 언어가 아님
- 복잡한 함수를 계산할 수 있도록 SQL은 일부 고급 언어에 포함되어 있음
- 응용 프로그램은 일반적으로 (Embedded SQL을 허용하는 언어의 확장,SQL 쿼리를 데이터 베이스에 보낼 수 있는 응용 프로그램 인터페이스(ODBC/JDBC)) 중 하나를 통해 데이터 베이스에 엑세스
*튜링머신 : youtube.com/watch?v=BOr1waCdv3U
데이터베이스 설계
데이터베이스의 일반적인 구조를 설계하는 과정
- 논리적 설계 - 데이터 베이스 스키마 결정,
- 물리적 설계 - 데이터 베이스의 물리적 레이아웃 결정
데이터베이스 엔진
Storage Manager | 데이터베이스에 저장된 하위 수준 데이터와 응용 프로그램과 쿼리 간의 인터페이스를 제공하는 프로그램 모듈 OS 파일 관리자와의 상호작용 데이터의 효율적인 저장,검색 및 업데이트 데이터-파일 데이터베이스 자체저장,데이터 사전-데이터베이스 구조,특히 데이터베이스 스키마에 대한 메타 데이터를 저장 인덱스-데이터 항목에 대한 빠른 엑세스를 제공 할 수 있음 특정 값을 보유하는 항목에 대한 포인터 제공 권한 부여 및 무결성 관리자,트랜잭션 관리자,파일 관리자,버퍼 관리자 |
Query Processor | DDL 인터프리터 - DDL 문을 해석하고 데이터 사전에 기록 DML 컴파일러 - 질의어 내의 DML 문을 질의 평가 엔진이 이해할 수 있는 하위 단계 명령어로 구성된 질의 수행계획으로 바꿈 |
Transaction Management | 데이터베이스 애플리케이션 내의 단일 논리 기능을 수행하는 동작들의 모음 트랜잭션 오류(동시에 여러가지의 일을 요구하는 등)에도 불구하고 데이터베이스가 올바른 상태로 유지되도록 함 동시성 제어관리자 :데이터베이스의 일관성을 보장하기 위해 동시 트랜잭션 간의 상효작용을 제어 |
데이터베이스 아키텍처
- 중앙 집중식 데이터베이스 - 하나에서 몇개의 코어,공유 메모리
- 클라이언트-서버 - 하나의 서버 시스템이 여러 클라이언트 시스템을 대신하여 작업,실행
- 병렬 데이터베이스 - 많은 코어 공유 메모리,공유 디스크,아무것도 공유하지않음
- 분산 데이터베이스 - 지리적 분포,스키마/데이터 이질성
데이터베이스 응용
- Two-tier 아키텍처: 아키텍처 - 애플리케이션이 클라이언트 시스템에 상주,서버 시스템에서 데이터베이스 시스템 기능을 호출 ( 응용의 확장이 쉬움)
- Three-tier 아키텍처: 아키텍처 - 클라이언트 시스템은 프런트 엔드 역할을 하며 직접적인 데이터베이스 호출을 포함하지 않음 (보안성이 뛰어남)
데이터베이스 관리자(시스템을 관리하는 작업자)
- 스키마 정의
- 저장 구조 및 액세스 방법 정의
- 스키마 및 물리 구조의 수정
- 데이터 엑세스 권한의 인정
- 루틴 유지 및 관리
- 주기적으로 데이터베이스 백업
- 정상적인 작업에 충분한 여유 디스크 공간이 있는지 확인하고 필요에 따라 디스크 공간을 확보
- 데이터베이스에서 실행중인 작업 모니터링
*데이터베이스 시스템의 역사
- 1950~60 년대 : 저장용 자기 테이프를 사용한 데이터 처리
- 1960~70 년대 : 데이터에 직접 액세스 할 수 있는 하드 디스크, Ted Codd는 관계형 데이터 모델을 정의
- 1980 년대 : 연구 관계형 타입이 상용 시스템으로 진화
- 1900 년대 : 대규모 의사 결정 지원 및 데이터 마이닝 애플리케이션
- 2000 년대 : 빅 데이터 저장 시스템 > SQL을 넘어서
- 2010 년대 : SQL이 다시 도래,대규모 병렬 데이터베이스 시스템,멀티 코어 메인 메모리 데이터베이스
**데이터 마이닝 :많은 데이터 가운데 숨겨져 있는 유용한 상관관계를 발견하여, 미래에 실행 가능한 정보를 추출해 내고 의사 결정에 이용하는 과정
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
*데이터베이스 #2 | SQL (0) | 2021.03.29 |
---|---|
*데이터 베이스 #1 || Relational Model (0) | 2021.03.20 |