데이터베이스 엔진은 정확히 무엇입니까?


14

http://en.wikipedia.org/wiki/Database_engine에 대한 정의를 여러 번 살펴 보았습니다 .

데이터베이스 엔진 (또는 "스토리지 엔진")은 데이터베이스 관리 시스템 (DBMS) 이 데이터베이스에서 CRUD (데이터 를 생성, 읽기, 업데이트 및 삭제 )하는 데 사용하는 기본 소프트웨어 구성 요소입니다 .

내가 이해하지 못하는 것은 남은 일이며, 데이터베이스가 수행하는 모든 것이 CRUD가 아닙니까?

데이터베이스 엔진이 이러한 기능을 수행하는 경우 나머지 데이터베이스는 어떤 기능을 수행합니까?


굵게 표시된 질문에 대한 직접적인 답변 ( 다른 데이터베이스의 기능은 무엇입니까? )은 Bryan의 답변을 참조하십시오. CRUD 외에도 데이터베이스 엔진의 기능에 대한 자세한 내용은 Leigh의 답변을 참조하십시오.
nealmcb

답변:


15

CRUD는 영구 스토리지와 관련하여 데이터베이스에 필요한 특성을 정의하기위한 것입니다. 데이터베이스 엔진이 수행 할 수있는 모든 것을 설명하는 것은 아닙니다.

비교를 위해 기본적으로 차량은 운송에 사용되는 장치입니다. 사실이지만이 정의에는 현대 자동차에 수반되는 모든 세부 사항이 포함되어 있지 않습니다.

데이터베이스 엔진은 여러 사용자, 트랜잭션 , MVCC (Multiversion Concurrency Control) , 버퍼 및 캐시, ACID (원 자성, 일관성, 격리, 내구성) 및 다양한 격리 수준을 처리 할 수 ​​있습니다 . 읽기는 메모리, 원격 데이터베이스 및 디스크에서 디스크를 처리하는 여러 테이블에서 데이터를 요청하여 응용 프로그램에 제시하기 위해 여러 명시 적 및 / 또는 내재적 코드 경로를 통해 SQL을 사용하여이를 처리 할 수 ​​있습니다. 작성은 스토리지를 할당하고, 구조를 프로비저닝하고, 값을 지정하고, 데이터를 저장하기 전에 자체 처리를 수행 할 수 있습니다. 기타.


이것은 매우 작지만 완전한 대답입니다. +1 !!!
RolandoMySQLDBA

BTW 차량과 특정 유형의 차량에 대한 훌륭한 비유입니다.
RolandoMySQLDBA

내 의견으로는 트랜잭션, ACID 보증, 격리 수준, 동시성 제어, 버퍼, 캐시는 모두 데이터베이스 엔진 자체에서 처리됩니다. 내가 왜 그렇게 말합니까? ... linux.org/threads/an-introduction-to-mysql-storage-engines를
Shatu

@Leigh, 동시성이 (부족한) DBMS가 아닌 스토리지 엔진기능이 아닙니까? DBMS의 기능이라면 MariaDB / MySQL이 MyISAM과 같은 특정 스토리지 엔진에 대한 트랜잭션을 수행 할 수없는 이유는 무엇입니까?
Pacerier

@Pacerier-DBMS와 스토리지 엔진을 분리하는 시스템의 경우에 해당 될 수 있습니다. 다른 경우에는 구별이 의미가 없습니다.
레이 리펠

12

일부 데이터베이스는 작업에 가장 적합한 엔진을 여러 개 실행할 수 있습니다. 예를 들어, 많은 응용 프로그램은 대부분의 데이터 (키 제약 조건 및 행 수준 잠금)에 InnoDB를 사용하고 세션 데이터 (빠르고 처리가 적음)에 MyISAM을 사용하고 감사 추적 (압축 및 삽입 / 선택 전용, 업데이트 / 삭제 없음)에 ArchiveDB를 사용합니다.

데이터베이스 소프트웨어의 "rest"는 API 또는 터미널을 통해 사용할 수있는 공통 인터페이스를 제공하고, 조인, 하위 쿼리 등과 같은 복잡한 작업을 허용하고 포함 된 엔진의 상태 / 상태 및 구성을 관리합니다. 엔진 공급 및 관리에는 많은 것이 있으며 데이터베이스 소프트웨어는 이러한 모든 복잡성을 숨 깁니다.


실제로 굵게 표시된 질문에 답변 해 주셔서 감사합니다!
nealmcb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.