IT 트렌드

데이터베이스 시스템 분석

.    2019. 12. 8. 18:39

데이터베이스 관리 시스템(DBMS)은 복잡하고 임무 중대한 소프트웨어입니다. 오늘날의 DBMS는 수십 년에 걸친 학술 및 산업 연구와 집중적인 기업 소프트웨어 개발에 바탕을 두고 있다. 데이터베이스 시스템은 가장 초기에 널리 구축된 온라인 서버 시스템 중 하나였으며, 이처럼 데이터 관리뿐만 아니라 애플리케이션, 운영 체제 및 네트워크 서비스에 이르는 설계 문제를 개척하였다. 초기 DBMS는 컴퓨터 과학에서 가장 영향력 있는 소프트웨어 시스템 중 하나이다. 불행하게도, 고급 데이터베이스 시스템에 구현된 많은 아키텍처 혁신들은 학계 및 소프트웨어 산업의 다른 분야 모두에서 정기적으로 재창조된다. 데이터베이스 시스템 아키텍처의 교훈이 널리 알려지지 않은 데에는 여러 가지 이유가 있다. 첫째, 적용된 데이터베이스 시스템 커뮤니티는 상당히 작다. 시장 지배력이 높은 곳에서 소수의 경쟁자만 지원하기 때문에 상업적 수준의 DBMS 구현은 극히 일부에 불과하다. 데이터베이스 시스템의 설계와 구현에 관련된 사람들의 공동체는 빠듯하다. 많은 사람이 같은 학교에 다녔고, 같은 영향력 있는 연구 프로젝트에 참여했으며, 같은 상업용 제품에 협력했다. 둘째, 데이터베이스 시스템의 학문적 처리는 종종 구조적 문제를 무시해 왔다. 데이터베이스 시스템의 교과서적인 프레젠테이션은 전통적으로 시스템 아키텍처에 대한 전면적인 논이 없이 가르치고 연구하고 시험하는 것이 자연스러운 알고리즘 및 이론적 문제에 초점을 맞추고 있다. 요컨대, 데이터베이스 시스템을 구축하는 방법에 대해서는 많은 통설이 있지만, 그중 상당 부분은 기록되지 않았거나 널리 전달되지 않았다. 이 논문에서는 고급 주제에 대한 논의를 통해 현대 데이터베이스 시스템의 주요 아키텍처 측면을 포착하고자 한다. 이들 중 일부는 문헌에 나타나며, 우리는 적절한 경우에 참고자료를 제공한다. 다른 이슈들은 제품 설명서에 묻혀있고, 어떤 이슈들은 지역사회의 구전 전통의 일부분일 뿐이다. 여기서 우리의 목표는 특정 구성요소의 구현 세부사항을 만족하게 하는 것이 아니다. 대신, 우리는 전반적인 시스템 설계와 교과서에서 일반적으로 논의되지 않는 스트레스 문제에 초점을 맞춘다. 코코센티의 경우, 이 논문은 완전히 친숙해야 하며, 어쩌면 단순한 것일 수도 있다. 그러나 우리의 희망은 많은 독자에게 이 논문이 표준 문학의 알고리즘과 기법에 유용한 맥락을 제공해주기를 바란다. 우리는 독자가 교과서 데이터베이스 시스템 재료(예: [53] 또는 [61])와 Solaris, Linux 또는 Windows와 같은 현대 운영 체제의 기본 시설에 익숙하다고 가정한다.

 

프로덕션에서 가장 성숙한 데이터베이스 시스템은 은행, 항공사 예약, 의료 기록, 인적 자원, 급여, 전화, 고객 관계 관리 및 공급체인 관리를 포함한 인프라 애플리케이션의 중추 역할을 하는 관계형 데이터베이스 관리 시스템(RDBMS)이다. 웹 기반 인터페이스의 출현으로 관계 시스템 사용의 양과 범위가 증가했을 뿐이며, 이는 본질에서 모든 온라인 상거래 뒤에 숨겨진 기록의 저장소 역할을 한다. 오늘날 매우 중요한 소프트웨어 인프라일 뿐만 아니라 관계형 데이터베이스 시스템은 미래에 발생할 수 있는 데이터베이스 시스템의 새로운 확장 및 혁명에 대해 잘 이해되는 기준점 역할을 한다. 이 논문에서 우리는 핵심 관계형 특징을 지원하기 위한 구조적 기초에 초점을 맞출 것이며, 현대의 RDBMS에 존재하는 많은 확장에 대한 논의를 우회할 것이다. 많은 사람은 상업적 관계 시스템이 이제 복잡한 데이터 유형에 대한 지원, 여러 프로그래밍 언어들을 실행하면서 거대한 기능 집합을 포함한다는 것을 알지 못한다. o 시스템 외부 및 내부, 다양한 외부 데이터 소스에 대한 게이트웨이 등. (현재 SQL 표준 사양은 인쇄된 용지를 작은 유형으로 여러 인치까지 쌓는다!) 여기서는 논의를 관리 가능한 상태로 유지하기 위해 이러한 기능 대부분을 얼버무릴 것이다. 특히 복잡한 코드(저장된 절차, 사용자 정의 기능, Java Virtual Machine, 방아쇠, 재귀 질의 등)와 데이터 유형(추상 데이터 유형, 복잡한 개체, XML 등)을 지원하기 위한 시스템 확장에 대해서는 논의하지 않을 것이다. 그림 1과 같이 일반적인 데이터베이스 시스템에는 4가지 주요 요소가 있다. 시스템 내의 다양한 작업을 캡슐화 및 스케줄링하는 프로세스 관리자, 시간별 질의 처리 엔진, 스토리지, 버퍼 관리, 동시성 제어 및 복구, 공유 트랜잭션 스토리지 서브시스템, 공유 공유 스토리지 서브시스템이 있다. d 메모리 관리, 디스크 공간 관리, 복제 및 관리에 사용되는 다양한 배치 유틸리티를 포함한 유틸리티.

 

다중 사용자 서버를 구축할 때 시스템의 프로세스 구성에 관한 결정을 조기에 내려야 한다. 이러한 결정은 시스템의 소프트웨어 아키텍처와 운영 체제 전반에 걸친 성능, 확장성 및 이식성에 지대한 영향을 미친다 1. 이 부문에서는 DBMS 프로세스 모델에 대한 여러 가지 옵션을 조사한다. 우리는 단일 프로세서 아키텍처에서 경량 스레드에 대한 우수한 운영 체제 지원의 가용성을 가정하여 단순화된 구조로 시작한다. 그런 다음 우리는 DBMS가 어떻게 자체 스레드를 구현하고 이를 OS 설비에 대응하고 멀티프로세서 구성을 관리하는지에 대한 현실을 다루기 위해 이 간단한 논의를 확장한다.