DB System Concepts 7th

[DB] Chapter 13-1. Database Storage Architecture

patrick-star 2023. 7. 6. 00:02
728x90

이번 챕터에서는 저장 매체에 쌓이는 데이터의 구성데이터에 접근하는 방식에 대해서 살펴본다.

영구적인 데이터는 비휘발성 메모리에 저장되어야 한다. 대표적으로 자기식 디스크SSD가 있다.
자기식 디스크SSD블록(block)으로 구조화된 기기이다. 즉, 블록 단위로 데이터를 읽고 쓴다.

반면에 데이터베이스는 레코드를 다루는데 이는 블록보다 훨씬 작은 개념이다.

대부분의 데이터베이스는 OS의 파일을 레코드 저장을 위해 중간 계층으로 사용한다. 이때, 블록의 자세한 내용을 추상화한다.
하지만, 효율적인 접근과 결함 복구를 지원하기 위해서 데이터베이스블록(block)을 지속적으로 알아야 한다.
그래서, 13.2에서 블록의 구조를 고려하면서 각각의 레코드가 어떻게 파일에 저장되는지 공부한다.

레코드의 집합이 주어지고 나서 결정해야 하는 건 어떻게 그 레코드들을 파일 구조에서 구성하느냐 이다.
(ex. 정렬할 수도 있고 만들어진 순서로 할 수 있고 임의의 순서로 구성할 수도 있음) 이에 대해서는 13.3에서 다룬다.

그러고나서, 13.4에서는 데이터베이스가 관계 스키마 및 저장 구조에 대한 데이터를 데이터 사전(data dictionary)에 어떻게 구성하는지에 대해 설명한다. 데이터 사전의 정보는 많은 작업에 있어 중요한 역할을 한다. 예를 들어, 관계의 이름이 주어졌을 때 관계의 레코드를 찾고 검색하는 작업이 필수적이다.

CPU가 데이터에 접근하려면 데이터가 Main Memory에 있어야 하고 영구 데이터비휘발성 저장장치(자기식 디스크, SSD)에 있어야 한다. 13.5에서는 어떻게 데이터베이스가 비휘발성 저장장치로 부터 가져오는 블록을 저장하기 위한 데이터베이스 버퍼라고 불리는 메모리의 영역을 사용하는지 설명할 것이다.

모든 데이터가 특정 컬럼에 저장된 데이터에 접근하는 것이 분석적인 쿼리 프로세싱(analytical query processing)에 있어 효과가 좋다. 이를 column-oriented storage라고 하는데 이에 대해선 13.6에서 다룬다.

몇몇 응용 프로그램은 데이터에 아주 빠른 속도로 접근해야 하고
전체 데이터베이스를 데이터베이스 서버 기기의 메인 메모리에 적합시킬 수 있는 충분히 작은 데이터 용량을 갖고 있다.
이렇듯, 전체 데이터베이스를 메모리에 저장하고 in-memory 데이터 구조, 쿼리 처리 등과 같은 알고리즘을 최적화한 데이터베이스를 메인 메모리 데이터베이스라고 하는데 자세한 내용은 13.7에서 다룬다.