데이터베이스 엔진
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
데이터베이스 엔진은 다양한 스토리지 엔진을 지원하며, 데이터 저장을 위한 핵심 요소이다. 최신 DBMS는 여러 스토리지 엔진을 지원하며, 각 엔진은 라이선스, 트랜잭션 지원 여부, 호환성 등의 특징을 갖는다. 데이터베이스 엔진은 스토리지 엔진, 데이터 구조, 데이터 방향 및 클러스터링, 데이터베이스 인덱싱 등의 설계 고려 사항을 통해 데이터베이스 성능을 향상시킨다.
더 읽어볼만한 페이지
- 데이터베이스 엔진 - 파일메이커
파일메이커는 데이터베이스 관리 및 공유를 위한 소프트웨어로, FileMaker Pro를 통해 커스텀 앱을 제작하고 FileMaker Server로 LAN 환경에서 데이터베이스를 공유 및 백업하며, FileMaker Go 앱과 FileMaker WebDirect를 통해 모바일 및 웹 브라우저에서 데이터베이스 솔루션을 활용하고 Claris Connect로 엔터프라이즈 앱과의 데이터 통합을 지원한다. - 데이터베이스 엔진 - MyISAM
MyISAM은 MySQL 데이터베이스 시스템에서 사용되던 스토리지 엔진으로, 데이터 파일, 인덱스 파일, 테이블 정의 파일로 구성되어 읽기 작업에 최적화되었으나 트랜잭션과 외래 키를 지원하지 않아 데이터 무결성 유지가 어렵고, 현재는 InnoDB 엔진으로 대체되었지만 MariaDB에서는 개선 작업이 지속되고 있다. - 데이터베이스 관리 시스템 - 트랜잭션 처리
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다. - 데이터베이스 관리 시스템 - 저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다.
데이터베이스 엔진 | |
---|---|
데이터베이스 엔진 | |
개발 | |
개발사 | 다양한 업체 (아래 표 참조) |
첫 출시 | 1960년대 후반 |
최신 버전 | 각 제품별로 상이 (아래 표 참조) |
플랫폼 | |
지원 운영체제 | 윈도우 리눅스 macOS 유닉스 기타 |
라이선스 | |
라이선스 종류 | 상용 오픈 소스 혼합형 |
주요 기능 | |
데이터 모델 | 관계형 데이터베이스 객체 지향 데이터베이스 NoSQL 기타 |
쿼리 언어 | SQL NoSQL 쿼리 언어 기타 |
트랜잭션 지원 | 지원함 |
ACID 속성 준수 | 준수함 (제품별로 상이) |
동시성 제어 | 지원함 |
백업 및 복구 | 지원함 |
보안 기능 | 지원함 |
데이터베이스 엔진 목록 | |
관계형 데이터베이스 엔진 | |
제품명 | MySQL |
개발사 | 오라클 |
최신 버전 | 8.0 (2018년) |
라이선스 | GPL (일부 상용) |
제품명 | PostgreSQL |
개발사 | PostgreSQL Global Development Group |
최신 버전 | 14 (2021년) |
라이선스 | PostgreSQL 라이선스 |
제품명 | 오라클 |
개발사 | 오라클 |
최신 버전 | 21c (2021년) |
라이선스 | 상용 |
제품명 | Microsoft SQL Server |
개발사 | 마이크로소프트 |
최신 버전 | SQL Server 2022 |
라이선스 | 상용 |
제품명 | SQLite |
개발사 | D. Richard Hipp |
최신 버전 | 3.37 (2021년) |
라이선스 | 퍼블릭 도메인 |
NoSQL 데이터베이스 엔진 | |
제품명 | MongoDB |
개발사 | MongoDB Inc. |
최신 버전 | 5.0 (2021년) |
라이선스 | AGPL (일부 상용) |
제품명 | 카산드라 |
개발사 | 아파치 소프트웨어 재단 |
최신 버전 | 4.0 (2021년) |
라이선스 | 아파치 라이선스 |
제품명 | Redis |
개발사 | Redis Labs |
최신 버전 | 6.2 (2021년) |
라이선스 | BSD 라이선스 (일부 상용) |
기타 데이터베이스 엔진 | |
제품명 | Db2 |
개발사 | IBM |
최신 버전 | 11.5 |
라이선스 | 상용 |
관련 기술 | |
관련 기술 | 데이터베이스 데이터베이스 관리 시스템 (DBMS) SQL NoSQL 데이터 모델링 트랜잭션 처리 데이터베이스 보안 |
2. 스토리지 엔진
최신 DBMS는 대부분 같은 데이터베이스 안에서 여러 스토리지 엔진을 지원한다. 예를 들어 MySQL은 InnoDB와 MyISAM을 지원한다. 스토리지 엔진은 트랜잭션을 지원하는 것과 지원하지 않는 것이 있다.
이름 | 라이선스 | 트랜잭션 처리 유무 |
---|---|---|
Aria | GPL | 아니요 |
Falcon | GPL | 예 |
InnoDB | GPL | 예 |
MyISAM | GPL | 아니요 |
InfiniDB | GPL | 아니요 |
TokuDB | GPL | 예 |
WiredTiger | GPL | 예 |
XtraDB | GPL | 예 |
RocksDB / MyRocks | GPL v2 또는 Apache 2.0 | 예 |
이 외에도 임베디드 데이터베이스 엔진, 인 메모리 데이터베이스 엔진 등이 있다.
2. 1. 주요 스토리지 엔진
최신 DBMS의 대부분은 동일한 데이터베이스 내에서 여러 스토리지 엔진을 지원한다. 예를 들어, MySQL은 InnoDB와 MyISAM을 지원한다.일부 스토리지 엔진은 트랜잭션을 지원한다.
이름 | 라이선스 | 트랜잭션 지원 | 호환성 | 비고 |
---|---|---|---|---|
Aria | GPL | 아니요 | MariaDB 및 MySQL | |
Falcon | GPL | 예 | MySQL | 중단됨 |
InnoDB | GPL | 예 | MySQL 및 MariaDB | MySQL 및 MariaDB의 기본값 |
Memory | GPL | 아니요 | MySQL 및 MariaDB | |
MyISAM | GPL | 아니요 | MySQL | MySQL의 기본값이었음 |
InfiniDB | GPL | 아니요 | ||
TokuDB | GPL | 예 | MySQL 및 MariaDB | 프랙탈 트리 인덱스 사용 |
WiredTiger | GPL | 예 | MongoDB | MongoDB의 기본값 |
XtraDB | GPL | 예 | MariaDB 및 Percona Server for MySQL | |
RocksDB / MyRocks | GPL v2 또는 Apache 2.0 | 예 | ArangoDB, 카산드라, MariaDB, MongoDB, MySQL, SurrealDB |
추가적인 엔진 유형은 다음과 같다.
- 내장 데이터베이스 엔진
- 인 메모리 데이터베이스 엔진
2. 2. 기타 스토리지 엔진 유형
최신 DBMS(데이터베이스 관리 시스템)의 대부분은 동일한 데이터베이스 내에서 여러 스토리지 엔진을 지원한다. 예를 들어, MySQL은 InnoDB와 MyISAM을 지원한다.일부 스토리지 엔진은 트랜잭션을 지원한다.
이름 | 라이선스 | 트랜잭션 지원 | 호환성 | 비고 |
---|---|---|---|---|
Aria | GPL | 아니요 | MariaDB 및 MySQL | |
Falcon | GPL | 예 | MySQL | 중단됨 |
InnoDB | GPL | 예 | MySQL 및 MariaDB | MySQL 및 MariaDB의 기본값 |
Memory | GPL | 아니요 | MySQL 및 MariaDB | |
MyISAM | GPL | 아니요 | MySQL | MySQL의 기본값이었음 |
InfiniDB | GPL | 아니요 | ||
TokuDB | GPL | 예 | MySQL 및 MariaDB | 프랙탈 트리 인덱스 사용 |
WiredTiger | GPL | 예 | MongoDB | MongoDB의 기본값 |
XtraDB | GPL | 예 | MariaDB 및 Percona Server for MySQL | |
RocksDB / MyRocks | GPL v2 또는 Apache 2.0 | 예 | ArangoDB, 카산드라, MariaDB, MongoDB, MySQL, SurrealDB |
추가적인 엔진 유형은 다음과 같다.
- 임베디드 데이터베이스 엔진
- 인 메모리 데이터베이스 엔진
3. 설계 고려 사항
데이터베이스의 정보는 저장 하드웨어에 자료 구조 형태로 비트 단위로 저장된다. 이러한 자료 구조는 저장 하드웨어에서 효율적인 읽기 및 쓰기를 위해 설계되었다. 일반적으로 저장 하드웨어 자체는 데이터베이스를 포함하여 저장소를 광범위하게 사용하는 다양한 시스템의 요구 사항을 충족하도록 설계되었다. 운영 DBMS는 플래시 메모리 및 외부 디스크 저장소와 같이 서로 다른 저장 유형을 동시에 사용하며, 이들은 각각 다른 데이터 레이아웃 방식을 필요로 한다.
원칙적으로 데이터베이스 저장소는 모든 데이터 비트가 고유한 주소를 갖는 선형 주소 공간으로 볼 수 있다. 실제로 주소의 아주 작은 비율만 초기 참조점으로 유지되며, 대부분의 데이터는 변위 계산(참조점에서 비트 단위의 거리)을 사용한 간접 참조와 필요한 데이터 접근 작업에 최적화된 데이터 구조(포인터 사용)를 통해 접근된다.
3. 1. 데이터베이스 저장소 계층
데이터베이스의 정보는 저장 하드웨어에 자료 구조 형태로 비트 단위로 저장된다. 이러한 자료 구조는 저장 하드웨어에서 효율적으로 읽고 쓰기 위해 설계되었다. 일반적으로 저장 하드웨어 자체는 데이터베이스를 포함하여 저장소를 광범위하게 사용하는 다양한 시스템의 요구 사항을 충족하도록 설계되었다. 운영 DBMS는 항상 플래시 메모리 및 외부 디스크 저장소와 같이 서로 다른 저장 유형을 동시에 사용하며, 이들은 각각 다른 데이터 레이아웃 방식을 필요로 한다.원칙적으로 데이터베이스 저장소는 모든 데이터 비트가 고유한 주소를 갖는 선형 주소 공간으로 볼 수 있다. 실제로 주소의 아주 작은 비율만 초기 참조점으로 유지되며, 대부분의 데이터는 변위 계산(참조점에서 비트 단위의 거리)을 사용한 간접 참조와 필요한 데이터 액세스 작업에 최적화된 데이터 구조(포인터 사용)를 통해 접근된다.
데이터베이스는 작동하는 동안 여러 유형의 저장소에 동시에 존재하며, 이는 저장 계층 구조를 형성한다. DBMS를 호스팅하는 현대 컴퓨터 내부에서 "데이터베이스" 부분의 대부분은 부분적으로 복제된 상태로 휘발성 저장소에 존재한다. 활발하게 처리되고 조작되는 데이터는 프로세서 내부, 프로세서의 캐시에 존재할 수 있다. 이러한 데이터는 일반적으로 컴퓨터 버스를 통해 메모리에서 읽고 쓰여지며, 버스는 일반적으로 휘발성 저장소 구성 요소이다. 컴퓨터 메모리는 표준 저장 인터페이스 또는 네트워크(예: 파이버 채널, iSCSI)를 통해 외부 저장소와 데이터를 통신한다.
일반적인 외부 저장 장치인 저장소 배열은 일반적으로 자체적으로 저장 계층 구조를 갖는다. 일반적으로 휘발성 및 빠른 DRAM으로 구성된 빠른 캐시는 (표준 인터페이스를 통해) 드라이브에 연결된다. 이러한 드라이브는 플래시 드라이브 및 비휘발성 자기 디스크 드라이브와 같이 서로 다른 속도를 가질 수 있다. 속도와 가격은 일반적으로 상관 관계가 있다. 드라이브는 대규모 데이터베이스의 가장 비활성적인 부분이 존재할 수 있는 자기 테이프에 연결될 수 있다.
3. 2. 데이터 구조
데이터 구조는 데이터를 잘 정의된 방식으로 포함하는 추상적인 구성 요소이다. 효율적인 데이터 구조는 데이터를 효율적인 방식으로 조작할 수 있게 해준다. 데이터 조작에는 다양한 모드에서의 데이터 삽입, 삭제, 업데이트 및 검색이 포함될 수 있다. 특정 데이터 구조 유형은 특정 작업에서 매우 효과적일 수 있지만 다른 작업에서는 매우 비효율적일 수 있다. 데이터 구조 유형은 포함된 데이터 유형에 필요한 작업을 가장 잘 충족하도록 DBMS 개발 시 선택된다. 특정 작업에 대해 선택된 데이터 구조 유형은 일반적으로 저장소가 위치한 유형(예: 접근 속도, 접근되는 최소 저장소 청크 크기 등)도 고려한다. 일부 DBMS에서는 데이터베이스 관리자가 성능상의 이유로 사용자 데이터를 포함할 데이터 구조 옵션 중에서 유연하게 선택할 수 있다. 경우에 따라 데이터 구조에는 데이터베이스 성능을 조정할 수 있는 선택 가능한 매개변수가 있다.[1]데이터베이스는 많은 데이터 구조 유형으로 데이터를 저장할 수 있다.[2] 일반적인 예는 다음과 같다.
데이터베이스 내의 정보는 하드웨어의 속성을 지정하여 효율적으로 읽고 쓸 수 있는 스토리지 내의 자료 구조로 레이아웃된 비트로서 저장된다. 일반적으로 스토리지는 데이터베이스를 포함한 스토리지를 광범위하게 이용하는 다양한 영역의 요구 사항을 충족하도록 설계되어 있다. 작동 중인 DBMS는 각각의 레이아웃 방식으로, 항상 복수의 스토리지 종류(메모리, 외부 스토리지 등)를 동시에 이용한다.
원칙적으로, 데이터베이스 스토리지는 선형 주소 공간으로 간주할 수 있으며, 데이터의 모든 비트가 이 주소 공간에서 고유한 주소를 갖는다. 실제로는, 주소의 극히 일부만이 초기 참조 포인트로서 보존된다(이것에도 스토리지가 필요하다). 대부분의 데이터는 변위 계산(참조 포인트로부터의 비트 단위 거리)과, 필요한 데이터 접근 조작에 최적화된 효과적인 방법으로 모든 필요한 데이터에 대한 접근 경로(포인터 사용)를 정의하는 데이터 구조를 사용한 간접 참조를 통해 접근된다.
3. 3. 데이터 방향 및 클러스터링
관계형 데이터베이스는 데이터를 저장하는 방식에 있어서 전통적인 행 중심 방식과 대조적으로 컬럼 기반 또는 상관 방식을 사용할 수도 있다.일반적으로, 함께 자주 사용되는 서로 다른 유형의 데이터베이스 객체를 "클러스터링"하여 인접하게 저장하면 성능을 크게 향상시킬 수 있다. 이렇게 하면 필요한 관련 객체를 최소한의 입력 작업(각 작업은 때때로 상당한 시간이 소요될 수 있음)으로 저장소에서 검색할 수 있다. 메모리 내 데이터베이스에서도 클러스터링은 메모리 내 입출력 작업에 대한 대규모 캐시를 일반적으로 활용하므로 유사한 결과를 보이며 성능상의 이점을 제공한다.
예를 들어, 재고에 있는 "항목" 레코드를 해당 "주문" 레코드와 모두 클러스터링하는 것이 유용할 수 있다. 특정 객체를 클러스터링할지 여부에 대한 결정은 객체의 활용 통계, 객체 크기, 캐시 크기, 저장소 유형 등에 따라 달라진다.[1]
3. 4. 데이터베이스 인덱싱
인덱싱은 일부 스토리지 엔진이 데이터베이스 성능을 향상시키기 위해 사용하는 기술이다. 다양한 유형의 인덱스는 쿼리를 실행할 때 모든 항목을 검사할 필요성을 줄인다는 공통적인 특징을 공유한다. 대규모 데이터베이스에서 이는 쿼리 시간/비용을 수십 배 줄일 수 있다. 가장 간단한 형태의 인덱스는 항목의 위치에 대한 인접 참조와 함께 이진 검색을 사용하여 검색할 수 있는 정렬된 값 목록이며, 책의 색인과 유사하다. 동일한 데이터에 여러 인덱스(직원 데이터베이스는 성과 입사일로 인덱싱될 수 있음)가 있을 수 있다.인덱스는 성능에 영향을 미치지만 결과에는 영향을 미치지 않는다. 데이터베이스 설계자는 애플리케이션 로직을 변경하지 않고 인덱스를 추가하거나 제거할 수 있어 데이터베이스가 성장하고 데이터베이스 사용이 발전함에 따라 유지 관리 비용을 줄일 수 있다. 인덱스는 데이터 접근을 가속화할 수 있지만 데이터베이스에서 공간을 소비하며 데이터가 변경될 때마다 업데이트해야 한다. 따라서 인덱스는 데이터 접근을 빠르게 할 수 있지만, 데이터의 유지는 느려진다. 이 두 가지 속성이 주어진 인덱스가 비용 대비 가치가 있는지 여부를 결정한다.
참조
[1]
서적
Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more
Morgan Kaufmann Press
[2]
서적
Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more
Morgan Kaufmann Press
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com