2009년 2월 16일 월요일

스토리지엔진의 또 다른 분류법

스토리지 엔진 차이에 따른 특징은 앞에서 이야기한 메모리기반/디스크기반 하고 트랜잭션 기능의 유무 이외에 다음과 같은 것이 있다. 

  • 대응하고 있는 Lock레벨
  • 대응하고 있는 인덱스의 종류
  • 참조정합성
  • 대응하고 있는 데이터형
  • 테이블정의에 관한 상한값등의 제한
예를 들면  대응하고 있는 인덱스의 종류로서는 다음과 같은 차이가 있다. 

InnoDB:BTREE
MEMORY:BTREE, HASH
MyISAM:BTREE, FULLTEXT, GIS

이처럼 엔진에 따라서 완전히 기능의 유무가 나누어져있는 것만아니라 서포트하는 범위가 다른 것도 있다. 
이 부분의 차이는 꽤 자세한 이야기가 됨으로  레퍼런스 매뉴얼을 참조하길 바란다. 

이 처럼 복수의 스토리지엔진을 준비하고 있는 MySQL이지만  MySQL에서는 모든 스토리지엔진은  Handler API라고 하는 공통 인터페이스가 있다. 

이것에 따라서 테이블마다 다른 스토리지엔진을 쓴다고 하지만  JOIN이나 UNION등의 테이블간의 처리를 실행하는 것도  가능하다. 

또 난이도가 올라가는 이야기이지만  사용자도 Handler API를 사용할 줄 만 안다면 독자의 스토리지 엔진을 MySQL에 붙이는 것도 가능하다. 
실제로 이런 구성을 이용한 OEM제품등도 존재한다. 

최근 화제가 되고 있는 OEM제품으로 Solid Information Technology사의 solidDB등이 있다.