본문 바로가기

DB/Architecture of a Database System

(5)
[Architecture of a Database System] Storage Management DBMS storage manager 타입에는 두 가지가 있다. low-level block-mode 디바이스 드라이버와 바로 연결 표준적인 OS 파일 시스템 이용 두 가지 방법을 차례로 공부하고 스토리지 계층에 대해서 공부한다. 5.1 Spatial Control 디스크로 왔다갔다 하는 Sequential bandwidth 는 Random Access보다 10에서 100배 빠르다. 디스크 밀집도는 18개월마다 두배가 되고 bandwidth는 밀집도의 제곱근으로 증가한다. 디스크 암 움직임은 일년에 약 7퍼센트 향상한다. 따라서 DBMS Storage Manager는 디스크의 블락을 sequential하기 움직일 수 있도록 해야한다. DBMS가 spatial locality를 제어하는 가장 좋은 방법은 ..
[Architecture of a Database System] Relational Query Processor Relational Query Processor는 declarative SQL statement (a type of SQL statement that specifies what data is required, but not how to obtain it)를 받아서 validate하고, 절차적인 데이터 플로우 execution plan으로 optimize하고, 데이터 플로우를 실행한다. 클라이언트는 결과 튜플을 한번에 하나씩, 혹은 작은 배치로 fetch (pull) 한다. 이번 장에서는 DML에 대해 공부한다. DDL은 쿼리 옵티마이저에 의해 실행되지 않는다. DDL 문은 스토리지 엔진 및 카탈로그 관리자에 대한 명시적 호출을 통해 static DBMS 로직에 의해 절차적으로 구현된다. 4.1 Query..
[Architecture of a Database System] Parallel Architecture: Processes and Memory Coordination 이번 장에서는 DBMS 용어를 정리하고 각각의 process models에서 메모리를 어떻게 사용하는지 알아본다. 3.1 Shared Memory Shared-Memory Parallel Systemd은 모든 프로세서가 같은 RAM과 디스크에 비슷한 퍼포먼스로 사용할 수 있다. 3가지 프로세스 모델 모두 이 아키텍처 위에서 잘 동작한다. Shared-memory의 프로세스 모델은 uniprocessor에서도 잘 동작한다. 대부분의 데이터베이스 시스템은 초기에 uniprocessor에서 동작되도록 만들어졌기 때문이다. Shared-memory 머신에서는 OS가 transparent하게 동작하도록 보장한다. 이 아키텍처의 주요 문제인 쿼리 실행 계층(Query Execution Layer)에서 단일 쿼리를 ..
[Architecture of a Database System] Process Models multi-user 서버를 디자인할 때, concurrent 유저의 요청과 이 요청이 어떻게 OS의 프로세스 또는 쓰레드에 매핑될지에 대해 고려해야한다. 이것은 퍼포먼스와 확장 가능성, 그리고 이식성에 영향을 끼친다. 이 장에서는 availability of operating system support for threads와 uniprocessor를 가정한다. 앞으로의 모든 설명은 다음 정의를 따른다. Operating System Process는 private한 address space를 가진 OS의 프로그램 실행 단위(thread of control)이다. 프로세스에는 OS resource handles와 security context가 포함된다. 프로세스 실행은 커널 스케쥴러에 의해 스케쥴링 된다...
[Architecture of a Database System] Introduction Relational Systems: The Life of a Query 전형적인 RDMBS에는 5개의 메인 컴포넌트가 있다. 승객의 리스트를 달라는 클라이언트의 요청을 예로 들어보자. 이는 하나의 쿼리 트랜잭션이 된다. 그리고 다음과 같이 동작한다. 클라이언트의 API 요청은 네트워크를 타고 Client Communication Manager 의 커넥션이 된다. 이 커넥션은 ODBC 또는 JDBC를 통해 만들어진다. Client Communication Manager가 하는 일은 다음과 같다. connection state를 만들고 기억한다. SQL commands에 응답하고 데이터와 컨트롤 메세지 (result codes, errors, etc)를 반환한다. 이 예제에서 Communication Man..