[Database] Structure

Seongje kim, 19 October 2020

데이터베이스 구조에 대한 내용입니다.

데이터베이스 관리 시스템(DBMS)


DBMS는 데이터베이스 시스템에서 사용자와 데이터베이스 사이에 위치하여 데이터베이스를 관리하고 사용자의 요구를 수행하는 메모리상의 소프트웨어이다. 다시 말해, 사용자의 요구에 따라 데이터를 정의하고 조작하는 것을 포함하여 데이터베이스 시스템을 관리하기 위해 필요한 구성 요소들의 집합이다.

DBMSSQL 번역을 위한 DML/DDL 컴파일러, 번역된 SQL을 처리하기 위한 질의 처리기, 트랜잭션 관리자, 저장 데이터 관리자 등으로 구성되어 있다.

저장 데이터 관리자 : 디스크에 저장되어 있는 사용자 데이터베이스나 카탈로그 접근을 책임진다. 디스크에 저장되어 있는 레코드의 접근 요청은 먼저 파일 관리자에 의해 실제 디스크와 메인 메모리 버퍼 사이의 데이터 전송이 이루어지고, 이후 데이터 처리를 위한 작업은 버퍼 관리자에 의해 관리된다.

데이터베이스의 논리적/물리적 구조


테이블스페이스(Tablespace)와 데이터 파일

하나의 데이터베이스를 구성하는 여러 개의 논리적 구조들을 테이블스페이스라고 한다. 각 테이블스페이스는 해당 테이블스페이스에 대한 물리적 구조를 표현한 하나 이상의 데이터 파일이 명시적으로 생성되며, 연관된 논리 구조를 그룹화하여 사용한다.(데이터베이스, 테이블스페이스, 데이터 파일의 관계) 결국 하나의 테이블스페이스에 대한 저장 영역을 해당 테이블스페이스에 포함된 파일들의 합이며, 데이터베이스의 크기는 각 테이블스페이스의 크기에 비례한다.

스키마(Schema) 및 스키마 객체

스키마란 데이터베이스의 구조와 제약 조건에 관한 메타데이터의 집합으로 표현된다. 스키마는 데이터 사전에 저장되며, 이는 데이터베이스가 기본적으로 생성하는 SYSTEM 테이블스페이스에 해당한다. 데이터베이스 내에 생성되어 있는 모든 객체들의 정보를 포함하여 모든 상태 정보가 저장되어 있다.

일반적으로 데이터베이스의 데이터를 직접 참조하는 논리적 구조인 스키마 객체들로 구성된다. 스키마 객체는 테이블, 뷰, 시퀀스, 내장 프로서저, 동의어, 인덱스, 클러스터, 데이터 링크 등이 있고 응용 프로그램이 데이터베이스에 생성하는 모든 것이 포함된다.

세그먼트(Segment)

하나의 세그먼트는 하나의 테이블스페이스에 저장되는 하나의 구성 요소로써 스키마 객체 중 저장 공간을 필요로 하는 것들을 말한다.

  1. 데이터(Data) 세그먼트 : 테이블의 모든 데이터
  2. 인덱스(Index) 세그먼트 : 각 인덱스의 데이터
  3. 롤백(Rollback) 세그먼트 : 사용자의 ROLLBACK 데이터
  4. 임시(Temporary) 세그먼트 : SQL 문에서 요구하는 분류 작업을 위한 임시 영역

익스텐드(Extent)

하나의 테이블스페이스가 여러 세그먼트로 구성되어 있는 것과 같이 하나의 세그먼트도 여러 개의 익스텐드로 구성된다. 하나의 테이블을 생성하면 하나의 큰 저장 공간이 할당되는 것이 아니라, 익스텐드라는 공간이 할당되고 동적으로 확장하는 것이다.

데이터 블록(Block)

가장 작은 저장 구조로써 데이터베이스의 데이터를 저장하는 공간이다. 하나의 데이터 블록은 디스크에서 특정 크기의 물리적 공간에 해당한다. 결과적으로 익스텐드는 여러 데이터 블록의 집합이 된다.

만일 하나의 익스텐드를 데이터 블록의 집합이 아닌 하나의 연속적인 공간으로 구성했다면 테이블의 데이터를 읽을 때, 한번에 많은 데이터를 읽고 써야하는 비용이 발생한다. 따라서 익스텐드를 연속적이지 않은 데이터 블록의 집합으로 구성함으로써 관리의 효율성을 높인 것이다.