데이터베이스 엔진

Database engine

데이터베이스 엔진(또는 스토리지 엔진)은 데이터베이스 관리 시스템(DBMS)이 데이터베이스에서 CRUD(Create, Read, Update and Delete) 데이터를 생성, 삭제하기 위해 사용하는 기본 소프트웨어 구성 요소입니다.대부분의 데이터베이스 관리 시스템에는 DBMS의 사용자 인터페이스를 거치지 않고 기본 엔진과 상호 작용할 수 있는 자체 API(Application Programming Interface)가 포함되어 있습니다.

"데이터베이스 엔진"이라는 용어는 "데이터베이스 서버" 또는 "데이터베이스 관리 시스템"과 함께 자주 사용됩니다."데이터베이스 인스턴스"는 실행 중인 데이터베이스 엔진의 프로세스 및 메모리 구조를 말합니다.

스토리지 엔진

최신 DBMS의 대부분은 동일한 데이터베이스 내에서 여러 스토리지 엔진을 지원합니다.를 들어 MySQL은 MyISAM뿐만 아니라 InnoDB도 지원합니다.

일부 스토리지 엔진은 트랜잭션 방식입니다.

이름. 면허증. 트랜잭션
아리아 GPL 아니요.
팔콘 GPL 네.
InnoDB GPL 네.
MyISAM GPL 아니요.
InfiniDB GPL 아니요.
TokuDB GPL 네.
와이어드 타이거 GPL 네.
XtraDB GPL 네.
Rocks GPL v2 또는 Apache 2.0 네.

기타 엔진 유형은 다음과 같습니다.

설계에 관한 고려 사항

데이터베이스 내의 정보는 하드웨어의 속성을 부여하기 위해 효율적으로 읽고 쓸 수 있는 스토리지 내의 데이터 구조로서 배열된 비트로 저장됩니다.일반적으로 스토리지 자체는 데이터베이스를 포함하여 스토리지를 광범위하게 활용하는 다양한 영역의 요구사항을 충족하도록 설계되었습니다.가동 중인 DBMS는 항상 여러 스토리지 유형(예: 메모리 및 외부 스토리지)과 각각의 레이아웃 방법을 동시에 사용합니다.

원칙적으로 데이터베이스 스토리지는 선형 주소 공간으로 볼 수 있으며, 모든 데이터 비트는 이 주소 공간에 고유한 주소를 가집니다.실제로는, 주소의 극히 일부만이 초기 레퍼런스 포인트로 보관됩니다(스토리지도 필요). 대부분의 데이터는 변위 계산(레퍼런스 포인트로부터의 비트 단위 거리) 및 필요한 모든 데이터에 대한 액세스 경로(포인터 사용)를 효과적으로 정의하는 데이터 구조를 사용하여 간접적으로 액세스됩니다.필요한 데이터 액세스 조작에 대응합니다.

데이터베이스 저장소 계층

데이터베이스는 작동 중에 여러 유형의 스토리지에 동시에 상주하며 스토리지 계층을 형성합니다.현대 컴퓨터의 특성상 DBMS를 호스트하는 컴퓨터 내의 대부분의 데이터베이스 부분은 휘발성 스토리지에 상주(부분 복제)합니다.처리/조작되고 있는 데이터(데이터베이스의 일부)는 프로세서의 캐시에 존재할 가능성이 있습니다.이러한 데이터는 일반적으로 컴퓨터 버스(현재까지는 일반적으로 휘발성 스토리지 구성 요소)를 통해 메모리에서 읽거나 메모리에 씁니다.컴퓨터 메모리는 일반적으로 표준 스토리지 인터페이스 또는 네트워크(파이버 채널, iSCSI )를 통해 외부 스토리지와 데이터(전송)를 주고받는 것입니다.일반적으로 스토리지 어레이(공통 외부 스토리지 유닛)는 고속 캐시에서 독자적인 스토리지 계층을 가집니다.고속 캐시는 (표준 인터페이스를 통해) 드라이브에 연결되며 플래시 드라이브자기 디스크 드라이브(비휘발성)와 같이 속도가 다를 수 있습니다.드라이브는 일반적으로 대용량 데이터베이스의 가장 활동량이 적은 부분이 상주하는 자기 테이프나 데이터베이스 백업 세대에 연결될 수 있습니다.

일반적으로 현재 스토리지 속도와 가격 사이에는 상관관계가 존재하지만, 더 빠른 스토리지는 일반적으로 변동성이 있습니다.

데이터 구조

데이터 구조는 잘 정의된 방식으로 데이터를 포함하는 추상적인 구조입니다.효율적인 데이터 구조를 통해 데이터를 효율적으로 조작할 수 있습니다.데이터 조작에는 다양한 모드에서 데이터 삽입, 삭제, 업데이트 및 검색이 포함될 수 있습니다.특정 데이터 구조 유형은 특정 작업에서는 매우 효과적이지만 다른 작업에서는 매우 효과적이지 않을 수 있습니다.데이터 구조 유형은 포함된 데이터 유형에 필요한 작업을 가장 잘 충족하기 위해 DBMS 개발 시 선택됩니다.특정 작업에 대해 선택된 데이터 구조 유형에는 일반적으로 해당 데이터가 상주하는 스토리지 유형(예: 액세스 속도, 액세스되는 스토리지 청크의 최소 크기 등)도 고려됩니다.일부 DBMS 데이터베이스 관리자는 성능상의 이유로 사용자 데이터를 포함할 데이터 구조 옵션 중에서 선택할 수 있습니다.데이터 구조에는 데이터베이스 성능을 조정하기 위한 선택 가능한 매개 변수가 있을 수 있습니다.

데이터베이스는 많은 데이터 구조 [1]유형으로 데이터를 저장할 수 있습니다.일반적인 예는 다음과 같습니다.

데이터 지향 및 클러스터링

기존 행 방향과 달리 관계형 데이터베이스는 특정 구조에 데이터를 저장하는 방식에서 열 방향 또는 상관 관계가 있을 수도 있습니다.

일반적으로 함께 사용되는 여러 유형의 데이터베이스 개체를 "클러스터"된 상태로 스토리지에 근접하게 배치하면 성능이 크게 향상됩니다.이를 통해 필요한 관련 개체를 스토리지에서 최소한의 입력 작업(각각 상당한 시간 소요)으로 검색할 수 있습니다.인메모리 데이터베이스의 경우에도 메모리 입출력 조작에 큰 캐시를 공통적으로 사용하기 때문에 퍼포먼스가 향상됩니다.그 결과 동작도 비슷합니다.

예를 들어, 재고의 「품목」의 레코드와 각각의 「주문」의 레코드를 정리하는 것이 유리할 수 있습니다.특정 개체를 클러스터링할지 여부는 개체의 사용률 통계, 개체 크기, 캐시 크기, 스토리지 유형 등에 따라 결정됩니다.

데이터베이스 인덱싱

인덱싱은 일부 스토리지 엔진이 데이터베이스 성능을 개선하기 위해 사용하는 기술입니다.여러 유형의 인덱스는 공통 속성을 공유하므로 쿼리를 실행할 때 모든 항목을 검사할 필요가 줄어듭니다.대규모 데이터베이스에서는 이를 통해 쿼리 시간/비용을 몇 배나 줄일 수 있습니다.인덱스의 가장 단순한 형태는 엔트리의 위치에 대한 인접 참조가 있는 이진 검색을 사용하여 검색될 수 있는 정렬된 값 목록으로, 책 뒤에 있는 인덱스와 유사합니다.동일한 데이터에 여러 인덱스가 있을 수 있습니다(직원 데이터베이스는 성과 고용일로 인덱싱될 수 있음).

인덱스는 성능에 영향을 미치지만 결과는 영향을 미치지 않습니다.데이터베이스 설계자는 애플리케이션 로직을 변경하지 않고 인덱스를 추가하거나 제거할 수 있으므로 데이터베이스의 확장과 데이터베이스 사용 진화에 따른 유지보수 비용을 절감할 수 있습니다.인덱스는 데이터 액세스 속도를 높일 수 있지만 데이터베이스의 공간을 차지하므로 데이터가 변경될 때마다 업데이트해야 합니다.따라서 인덱스는 데이터 액세스 속도를 높일 수 있지만 데이터 유지보수는 느립니다.이러한 두 가지 특성은 특정 지수가 비용을 지불할 가치가 있는지 여부를 결정합니다.

레퍼런스

  1. ^ Lightstone, S.; Teorey, T.; Nadeau, T. (2007). Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more. Morgan Kaufmann Press. ISBN 978-0-12-369389-1.

외부 링크