on
[DAP공부]데이터베이스 이용_1 - 데이터베이스 관리 시스템(DBMS)
[DAP공부]데이터베이스 이용_1 - 데이터베이스 관리 시스템(DBMS)
728x90
데이터베이스 관리 시스템(DBMS)
데이터베이스 관리 시스템 개요
1. 데이터베이스 관리 시스템 추상화
메타 데이터 관리 데이터의 정의나 설명, 파일의 구조, 데이터 항목의 유형과 저장 형식, 제약 조건과 같은 메타 데이터를 시스템 카탈로그 또는 데이터 사전에 저장 및 관리
데이터의 독립성 데이터 파일 구조가 프로그램으로부터 분리되어 시스템 카탈로그 또는 데이터 사전으로 관리
데이터의 추상화 사용자에게 데이터에 대한 개념적인 접근만 제공 물리적인 저장구조 몰라도 사용 가능
트랜잭션과 동시성 제어 여러 사용자가 동시에 동일한 데이터베이스에 접근할 수 있는 기능 제공
2. 데이터베이스 관리 시스템 사상
개념적 단계 (Conceptual level) 추상화의 최상위 단계 사용자들이 관심을 갖는 데이터베이스의 부분만 정의
(Conceptual level) 논리적 단계 (Logical level) DB전체 구조를 추상화 하는 단계로 DB에 저장되는 데이터와 데이터간의 관계, 권한, 무결성 같은 부가적인 정보 정의
(Logical level) 물리적 단계 (Physical level) 가장 낮은 추상화 단계 Data가 실제 어떻게 저장되어 있는지 원시 수준의 데이터 구조 정의 저장된 데이터의 유형, 인덱스의 종류, 칼럼의 표현/순서, 레코드의 물리적 순서 등 정의
(Physical level)
3. 데이터베이스 관리 시스템 구성 요소
데이터베이스 파일 데이터 사전을 저장하는 파일 사용자의 데이터를 저장하는 파일
데이터 저장 관리자 데이터 사전과 사용자 데이터 파일에 접근하여 데이터를 읽고 쓰는 책임을 가진 구성 요소
질의 처리기 데이터베이스 사용자가 물리적인 단계의 지식이 없어도 개념적인 단계에서 SQL을 이용하여 스키마를 정의 데이터 저장, 변경, 조회 할 수 있도록 책임을 담당
트랜잭션 관리자 데이터 베이스 파일에 여러 유저가 동시 접근하여 데이터를 처리하더라도 데이터에 이상이 없도록 일관성 유지
728x90
데이터베이스 관리 시스템 종류
MySQL 세계에서 가장 많이 사용되는 오픈소스 관계형 DBMS 중 하나. 현재 오라클이 관리
MariaDB MySQL개발자들이 개발한 DBMS MySQL 엔터프라이즈 버전에서 플러그인으로 제공되는 스레드풀 기능이 기본 내장
Oracle 사용 엔터프라이즈 버전으로 많이 사용
SQL Server MS사에서 개발되어 출시 윈도우 서버 기반으로 운용되었다가 2016년 리눅스 버전 출시
PostgreSQL 기본적인 면에선 오라클과 유사 데이터는 정렬하지 않고 저장
Cubrid 국내에서 만들어진 오픈소스 DB
데이터베이스 구조
1. 데이터 딕셔너리
데이터베이스의 주요한 부분중 하나
데이터베이스 정보를 제공하는 읽기 전용 테이블 또는 뷰 집합
포함된 정보 데이터베이스 모든 스키마 객체 정보 스키마 객체에 대해 할당된 영역의 사이즈와 현재 사용 중인 영역의 사이즈 칼럼에 대한 기본 값 무결성 제약조건에 대한 정보 사용자 이름, 사용자에게 부여된 권한과 역할 기타 일반적인 데이터베이스 정보
2. 데이터베이스, 테이블스페이스 및 데이터 파일
테이블은 테이블 스페이스라는 논리적인 단위를 이용하여 관리
테이블 스페이스는 물리적인 데이터 파일을 지정하여 저장
테이블, 테이블스페이스, 데이터 파일로 분리하여 관리
데이터용/인덱스용 테이블스페이스 설계 유형 테이블이 저장되는 테이블스페이스는 업무별로 지정 대용량 테이블은 독립적인 테이블스페이스 지정 테이블과 인덱스는 분리하여 저장 LOB타입 데이터는 독립적인 공간에 지정
물리/논리 저장 구조 계층
3. 데이터 블록, 확장 영역 및 세그먼트 간의 관계
데이터 블록(Data Block) DBMS가 데이터를 저장하는 가장 작은 단위 데이터 블록은 1회 I/O시 물리적인 디스크 입출력량을 결정하므로 성능에 직접적인 영향을 미침 확장 가능 영역인 Free space에 따라 데이터의 체인을 억제할 수 있는 방법을 확보해야 함
데이터 확장 영역(Extent) 특정 유형의 정보를 저장하기 위해 할당된 몇 개의 연속적인 데이터 블록 테이블 생성 시 DBMS는 지정된 몇 개 데이터 블록의 초기 확장 영역을 테이블 데이터 세그먼트에 할당 자동 증분 확장 데이터 삭제를 하여도 확장된 영역을 반환하지 않음 삭제를 위해선 생성된 객체를 Drop, Truncate하거나 직접 해제 명령 SQL구문을 사용해야 함
세그먼트(Segment) 논리적 구조를 정의하기 위해 할당한 확장 영역의 집합 1개의 테이블은 1개 이상의 확장 영역을 할당하여 데이터 세그먼트 형성 각 인덱스는 하나 이상의 확장 영역을 할당하여 인덱스 세그먼트 형성
728x90
메모리 구조
DBMS정보 저장 실행되는 프로그램 코드 현재 사용하지 않더라도 접석되어 있는 세션 정보 프로그램이 실행되는 동안 필요한 정보 프로세스 간에 공유하거나 교환되는 정보 보조 메모리에 영구적으로 저장된 캐시 데이터
데이터베이스 버퍼 데이터 파일로부터 읽어들인 데이터 블록의 복사본을 가지고 있음 데이터베이스 버퍼는 더티 목록(Dirty list)와 LRU(Least Recently Used)목록을 가지고 있음 더티 목록 : 수정되었지만 아직 디스크에 기록되지 않은 데이터를 가지고 있는 버퍼를 가지고 있음 LRU 목록 : 빈 버퍼, 현재 액세스 중인 고정된 버퍼, 더티 목록으로 이동되지 않은 더티 버퍼를 가짐
로그 버퍼 데이터베이스 변경 사항 정보를 유지하는 것 순환행 버퍼 사용 Insert, Delete, Create, Alter, Drop 작업으로 변경된 사항을 재구성하거나 재실행하는데 필요한 정보인 REDO 입력항목을 갖음
공유 풀 라이브러리 캐시, 딕셔너리 캐시, 제어 구조 등으로 구성 라이브러리 캐시(Library Cache) : 데이터베이스 사용자들이 수행한 SQL을 저장하는 SQL영역, 사용자 정의 함수/ 저장 프로시저/ 트리거를 저장하는 저장 SQL프로시저 영역, 제어 구조 등 공유 딕셔너리 캐시 : 데이터베이스 운영에 필요한 데이터 딕셔너리 정보를 공유
그 외 영역 Fixed Area : DBMS의 환경 변수 저장 Large Pool : 대량의 데이터가 로딩되었을 때 임시적으로 활용하기 위한 영역 Java Pool : 오라클에서 Java Store Procedure 실행하기 위한 영역 SGA Programe Global Area : 데이터 정렬을 위한 Sort Area, Hash Join을 위한 Hash Area 같은 공간이 할당
프로세스 구조
사용자 프로세스 app이나 DB 도구를 실행할 때 생성 세션이 만들어지고 세션은 사용자 프로세스와 DB인스턴스 간 통신 경로
서버 프로세스 사용자 프로세스와 통신하는 역할 다중 스레드 서버 방식과 단일 서버 프로세스 방식이 있음 다중 스레드 서버 : 단일 서버 프로세스를 여러 사용자 세션 간에 공유 단일 서버 프로세스 : 각 사용자 세션에 대해 하나의 서버 프로세스 생성
백그라운드 프로세스 DB동작하기 위해 프로세스들로 구성 다중 프로세스 방식으로 구동
728x90
from http://ohyang.tistory.com/40 by ccl(A) rewrite - 2021-12-06 23:27:40