728x90
데이터베이스 관리 시스템(DBMS)
데이터베이스 관리 시스템 개요
1. 데이터베이스 관리 시스템 추상화
- 메타 데이터 관리
- 데이터의 정의나 설명, 파일의 구조, 데이터 항목의 유형과 저장 형식, 제약 조건과 같은 메타 데이터를 시스템 카탈로그 또는 데이터 사전에 저장 및 관리
- 데이터의 독립성
- 데이터 파일 구조가 프로그램으로부터 분리되어 시스템 카탈로그 또는 데이터 사전으로 관리
- 데이터의 추상화
- 사용자에게 데이터에 대한 개념적인 접근만 제공
- 물리적인 저장구조 몰라도 사용 가능
- 트랜잭션과 동시성 제어
- 여러 사용자가 동시에 동일한 데이터베이스에 접근할 수 있는 기능 제공
2. 데이터베이스 관리 시스템 사상
- 개념적 단계(Conceptual level)
- 추상화의 최상위 단계
- 사용자들이 관심을 갖는 데이터베이스의 부분만 정의
- 논리적 단계(Logical level)
- DB전체 구조를 추상화 하는 단계로 DB에 저장되는 데이터와 데이터간의 관계, 권한, 무결성 같은 부가적인 정보 정의
- 물리적 단계(Physical level)
- 가장 낮은 추상화 단계
- Data가 실제 어떻게 저장되어 있는지 원시 수준의 데이터 구조 정의
- 저장된 데이터의 유형, 인덱스의 종류, 칼럼의 표현/순서, 레코드의 물리적 순서 등 정의
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동작하기 위해 프로세스들로 구성
- 다중 프로세스 방식으로 구동
LIST
'공부 > DAP_study' 카테고리의 다른 글
[DAP공부]데이터베이스 설계_5 - 보안 설계 (0) | 2021.11.23 |
---|---|
[DAP공부]데이터베이스 설계_4 - 분산 설계 (0) | 2021.11.22 |
[DAP공부]데이터베이스 설계_3 - 인덱스 설계 (0) | 2021.11.16 |
[DAP공부]데이터베이스 설계_2 - 무결성 설계 (0) | 2021.11.09 |
[DAP공부]데이터베이스 설계_1 - 저장 공간 설계 (0) | 2021.11.06 |