- 데이터베이스 관리 시스템(DBMS)이 데이터베이스에 CRUD를 하는데 사용되는 기본 소프트웨어 컴포넌트 혹은 모듈
- 저장 엔진이란 데이터베이스에서 데이터를 접근하는 방식
- 스토리지 엔진 ( Storage Engine ) 이라고도 불리며 종종 데이터베이스 서버 또는 데이터베이스 관리 시스템이라는 용어와 서로 바꾸어 사용됨
- DBMS 고유의 사용자 인터페이스를 이용하는 방법과 포트번호를 통해 사용하는 방법이 있음 -> 대부분의 DBMS은 사용자 인터페이스를 통하지 않고, 사용자가 내장된 엔진과 상호작용을 할 수 있는 자신만의 애플리케이션 프로그래밍 인터페이스(API)를 포함
- 현대의 많은 DBMS가 동일한 DB내 다중 저장엔진을 지원
- MySql에서 테이블을 생성하면 실제로 서버상에는 frm이라는 파일을 생성하는데 이 파일에 접근하는 속성을 설정하는 것이 바로 저장 엔진으로 특성에 따라 데이터 접근, 안정성, 트랜잭션 등의 기능의 차이점이 발생
- MySQL 5.5 이후 기본 엔진
- 많이 사용되는 엔진
- 트랜잭션 지원
- ACID 지킴
- 행 레벨의 잠금 지원
- 충돌 복구 지원
- multi-version concurrency 제어 지원
- 외래키 참조 무결성 제약 제공하는 유일한 엔진
- 특수 케이스 아니라면 오라클은 해당 엔진 사용하기를 권장
- version 5.5 이전에서 기본
- 원조 스토리지 엔진
- 빠른 속도
- 트랜잭션 지원 X
- 테이블 수준의 잠금 지원
- 웹과 웨어하우싱에 주로 사용
- 메모리에 테이블을 생성함
- 가장 빠른 엔진
- 트랜잭션 지원 X
- 테이블 수준의 잠금 지원
- 임시테이블이나 quick-lookup에 이상적인 엔진
- 데이터베이스 재시작 시, 데이터 사라짐
- 데이터를 csv 파일에 저장
- 다른 애플리케이션에 쉽게 통합될 수 있어 굉장히 유연함
- MyISAM 테이블의 기반으로 동작
- 큰 사이즈의 데이터를 쉽게 관리하는데 용이함
- 동일한 MyISAM 테이블을 그룹화하고, 해당 테이블들을 하나의 객체로 참조함
- 참조가 적으면서 데이터 웨어하우싱 환경에 좋음
- 빠른 속도로 삽입하는데 최적화되었음
- 데이터 삽입 시 데이터를 압축
- 트랜잭션 미지원
- 참조가 드문 많은 양의 데이터를 저장하고 반환하는 데에 이상적
- 하나의 논리적 데이터베이스를 생성하는 서버를 물리적 서버로부터 분리하는 기능을 제공
- 로컬 서버의 쿼리는 원격 테이블에서 실행됨
- 로컬 테이블에 데이터 저장 안 됨
- 분산 환경에서 유용
- 수용적이나 데이터를 저장하진 않음
- 비어있는 set을 반환
- 데이터가 자동으로 복제되지만 로컬에는 저장되지 않는 분산 데이터베이스 환경에서 사용
- 트랜잭션의 4가지 속성 -> 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 피룡한 성질
- A(atomicity) : 원자성
- C(consistency) : 일관성
- I(isolation) : 격리
- D(durability) : 영속성
- ACID 트랜잭션이 있으면 최대한의 데이터 안정성과 무결성을 보장
- 작업하나가 일부분만 완료될 때 일관적이지 않은 상태가 되는 불상사가 일어나지 않게 해줌 -> 예외적인 상황을 줄이고 데이터베이스의 무결성을 보호
22-07-12
