데이터베이스 서버로 MySQL을 선택하는 이유로 가장 많이 손꼽히는 것은 "사용하기 쉽다"는 점과 "무료"라는 점이다. 그러나 IBM Informix가 같은 품질, 아니 그 이상의 품질을 갖춘 에디션을 제공한다는 사실을 알고 있었는가? Informix Innovator-C Edition은 충족시키기 매우 힘든 프로덕션 워크로드를 지원할 수 있는 견고하고 강력한 데이터베이스 환경을 제공하는 Informix 데이터베이스 서버이다. 이 에디션은 분산 데이터 복제와 클러스터링 및 최근에 도입된 Informix의 유연한 그리드와 같이 지속적인 데이터 가용성을 달성하기 위한 옵션을 포함하여, 가장 널리 사용되는 데이터 처리 기능을 제공한다.
Informix Innovator-C Edition은 Informix 서버의 고가용성, 적은 관리 비용 및 원격 관리 기능을 바탕으로 대용량의 OLTP(온라인 트랜잭션 처리)와 0에 가까운 빠른 응답 시간을 위해 요청 시 제공되는 솔루션을 빌드하기 위한 강력한 토대를 제공한다. Informix Innovator-C Edition은 "전문가급" 에디션이면서도, 가장 널리 사용되는 Linux® 및 Microsoft® Windows® 플랫폼 버전을 포함한 다양한 플랫폼에서 원활히 작동하고 사용하기 쉽다. 여러 이점 중에서도 최고로 꼽을 수 있는 점은 Informix Innovator-C Edition을 완전 무료로 다운로드하여 배치할 수 있다는 점이다. 재배포가 필요한 경우에는 별도의 라이센스 계약이 필요하다. Informix Innovator-C Edition은 라이센스 비용을 전혀 들이지 않고 언제든지 다운로드하여 개발, 테스트 및 일반 사용자 프로덕션 워크로드에 자유롭게 사용할 수 있다.
기능의 관점에서 볼 때, MySQL 5.1과 Informix Innovator-C Edition은 지원되는 데이터 유형, 스토어드 프로시저, 함수, 고가용성 솔루션, 핫 백업, 콜드 백업, 전체 텍스트 검색, 인덱스, 뷰 등을 포함한 많은 점에서 유사하다. MySQL과 Informix Innovator-C Edition은 모두 전용 서버 스레드 기반 아키텍처를 특징으로 한다는 점에서도 비슷하다. 두 데이터베이스 시스템 모두 쿼리 속도를 높이고 입력을 제한할 수 있게 해주는 키 인덱스 외에도 기본 키를 지원한다. 그러나 높은 동시성과 대형 SMP 상자의 활용뿐 아니라, 비용 기반 최적화 프로그램과 복잡한 쿼리 최적화의 측면에서는 Informix가 앞서 있다. 클러스터링, 데이터 복제 및 그리드 기반 컴퓨팅과 같은 점에서도 Informix가 우위를 점하고 있다.
MySQL이 오픈 소스 제품이라는 점을 제외하고, 이 두 데이터베이스 제품의 차이점은 무엇이고 자신에게 알맞은 제품은 어떤 것일까?
이 두 데이터베이스의 가장 눈에 띄는 차이점은 MySQL은 오픈 소스 제품인 반면, Informix는 소유 제품 구조라는 점이다. MySQL은 확장 가능한 개방형 스토리지 데이터베이스 엔진이다. MySQL은 제품 개발이 "DIY(do-it-yourself)" 및 "자체 제작" 모델을 바탕으로 하는 오픈 소스 전통에 뿌리를 두고 있는 반면, Informix는 특정 문제를 해결하기 위해 수많은 구체적이고 검증된 경로를 제공한다. 하지만, Informix와 MySQL은 모두 다양한 프로그래밍 언어 및 기타 웹 기반 기술과 원활하게 통합할 수 있다.
일반적인 믿음과는 달리, MySQL 서버가 항상 무료인 것은 아니다. MySQL을 상업적으로 이용하려면 라이센싱 비용을 지불해야 하기 때문이다. Oracle의 MySQL 인수로, MySQL 라이센싱 비용이 앞으로 어떤 방향으로 바뀔지 불확실하다. Oracle에서는 인상 폭을 확실히 제시하지는 않았지만, 머지않아 가격 인상이 있을 것이라는 점을 최근에 고객들에게 알렸을 뿐 아니라, 예산이 빠듯한 소규모 조직에 적합하여 널리 사랑받던 데이터베이스에 대해 두 가지로 적용하던 하위 티어의 저렴한 라이센싱 프로그램을 없앨 계획이다. 앞으로 이루어질 가능성이 있는 MySQL 라이센스 비용 증가에 관한 뉴스는 참고자료 섹션을 참조한다.
Informix 제품군에는 "판매용" 에디션과 "무료" 에디션이 모두 포함된다. 이런 에디션은 규모를 불문하고 모든 회사의 다양하고 폭넓은 요구사항을 충족시키기 위해 가격 및 기능의 관점에서 맞춤 구성된다. Informix 판매용 에디션의 경우 몇 가지 분할 용량 가격 결정 모델이 제공되므로, Informix가 설치되어 있는 하드웨어의 전체 처리 능력을 걱정할 필요 없이 데이터 서비스 요구사항을 뒷받침하는 데 필요한 것만 구입할 수 있는 융통성을 발휘할 수 있다.
사용하는 에디션에 상관없이, Informix는 타의 추종을 불허하는 성능, 신뢰성, 사용 용이성 및 가용성을 갖추고서 동적으로 규모를 결정할 수 있는 아키텍처를 가지고 있다. 특히 무료 에디션을 사용할 때와 같이, 경우에 따라서는 지원되는 확장성과 기능의 범위와 레벨에 제한이 있다. 하지만, Informix Innovator-C Edition은 모든 기능을 갖춘 Informix 데이터 서버로서, 견고하고 강력한 데이터베이스 환경과 필수적이고 매우 널리 사용되는 데이터 처리 기능을 제공한다.
어떤 사용자들은 오픈 소스 제품이냐, 소유권이 존재하는 제품이냐 하는 요인만으로 다른 데이터베이스 서버를 제쳐두고 어떤 제품을 선택하는 주된 이유로 삼는다. 하지만, 기술적 관점에서 볼 때는 몇 가지 차이점이 있다. 예를 들어, MySQL은 외부 키를 완벽히 지원하지 않는데, 이는 완전한 관계형 데이터베이스인 Informix의 관계형 기능을 모두 가지고 있는 것은 아니라는 의미다. MySQL의 일부 버전은 스토어드 프로시저에 대한 지원도 완벽하지 않은데, 이는 트랜잭션을 지원하지 않는 MyISAM 시스템이 되는 최대의 단점으로 작용한다.
성능 측면에서 볼 때, Informix는 주로 대용량 OLTP(온라인 트랜잭션 처리), 애플리케이션 통합 그리고 디스크 공간, 메모리 및 CPU를 거의 사용하지 않는 소형 풋프린트를 고려해 명백히 앞선 제품이다. 오랜 역사를 통해 안정성과 신뢰성이 검증된 Informix는 소매업자, 은행 및 통신회사의 확실한 선택과 지지를 받는 제품이다.
MySQL의 강점은 "플러그인" 아키텍처를 통해 다른 데이터베이스 서버에서 제공하는 확장 가능한 기능을 사용한다는 점이다. 그러나 바로 이 점이 MySQL 최대의 단점이라 할 수도 있다. 이런 기능 중 대부분은 "화려한" 기능성을 강조하려고 고안되었지만, 절대적으로 필요한 다른 요소를 희생한 대가로 제공되는 경우가 종종 있다. 이때 치르는 대가가 바로 복잡도이며, 메모리와 스토리지의 자원이 많이 낭비되어 종종 성능 저하로 이어진다.
MySQL은 간단하고 매우 효과적인 보안 메커니즘을 제공하지만, MySQL의 보안 모델이 다른 대중적인 데이터베이스만큼 정교하지는 않다는 것이 중론이다. MySQL의 기본 설치, 특히 빈 루트 비밀번호와 버퍼 오버플로우에 취약할 가능성이 있다는 점 때문에, MySQL 데이터베이스 서버는 보안 공격의 손쉬운 먹잇감이 된다.
Informix는 사용자 인증 및 네트워크 권한을 위한 운영 체제 보안 기능을 통합한다. 관리자들 사이에는 역할 구분에 따른 보안 책임이 따로 정해진다. 감사 기능을 사용하면 사용자와 관리자가 수행한 중요한 조작을 데이터베이스 서버에 로그로 기록하여 필요할 때 분석하고 시스템 오용 여부를 식별할 수 있다. DAC(임의 액세스 제어)는 권한과 역할을 사용하여 SQL 오브젝트에 액세스할 수 있게 하는 기본 액세스 제어 메커니즘이다.
복구에 관한 한, Informix는 MyISAM 시스템 구성에 실패하기에 십상인 MySQL보다 분명한 장점이 있다. 무정전 운영이 필수적일 경우 MyISAM에서는 UPS(무정전 전원 공급 장치)가 필수 요건이다. 정전이 발생할 경우 MySQL 데이터베이스를 사용하고 있었다면 중요한 데이터가 손상되거나 손실될 위험이 있다. 하지만, Informix를 사용하면 데이터가 정기적으로 다양한 체크포인트를 통해 이동하므로 데이터 손상 확률이 매우 낮다. 그 밖에도, Informix는 시스템이 예상치 못하게 종료되더라도 안정적인 복구를 위해 프로세스를 계속 추적한다.
Informix Innovator-C Edition과 MySQL 간에는 중요한 차이점이 많다. 몇 가지 기본적인 아키텍처의 특징부터 살펴보면서 이들 데이터베이스 서버의 어떤 점이 다르고 어떤 점이 비슷한지 알아보자. (참고: 이 기사를 작성할 때는 두 제품의 비교를 위해 MySQL 5.1과 Informix Innovator-C Edition 11.7 버전을 사용했다.)
- 아키텍처 모델
- Informix Innovator-C Edition 및 MySQL 데이터베이스 서버에서는 모두 전용 서버 스레드 기반 아키텍처를 사용한다.
- 스토리지 액세스
- Informix Innovator-C Edition에서는 RSAM을 스토리지 액세스 방법으로 사용한다.
- MySQL 데이터베이스에서는 플러그 가능한 스토리지 엔진 아키텍처를 사용한다.
- 테이블스페이스 모델
- Informix Innovator-C Edition 테이블스페이스는 여러 데이터베이스까지 범위를 확장할 수 있다.
- MySQL에서는 InnoDB 및 NDB 스토리지 엔진용 테이블스페이스를 사용한다.
- 스키마 지원
- Informix Innovator-C Edition에는 진정한 스키마 지원 기능이 있다.
- 그에 비해, MySQL의 스키마 지원 기능은 빈약하다. MySQL의 스키마는 MySQL 데이터베이스로 생각할 수 있다.
- 데이터베이스 오브젝트 이름 대/소문자 구분
- Informix Innovator-C Edition을 사용하는 경우 UNIX와 Windows에서 모두 테이블과 열에서 대/소문자를 구분하지 않고 소문자로 저장된다.
- MySQL의 경우 Linux에서 데이터베이스, 테이블 및 열 이름은 대/소문자를 구분한다.
- 인증
- Informix Innovator-C Edition은 데이터베이스 사용자/역할을 사용하여 인증을 수행한다. 이 에디션은 개별 행, 열 테이블 또는 데이터베이스를 포함한 모든 데이터베이스 차원을 위한 액세스 제어 및 암호화 레벨을 제공한다. 운영 체제, PAM, Kerberos, Active Directory 등의 다양한 외부 보안 스키마를 사용할 수도 있다.
- MySQL에서는 데이터베이스 레벨에서 인증을 구현하고 비밀번호는 암호화된다.
- 인스턴스 아키텍처
- Informix Innovator-C Edition에서는 단일 시스템에 많은 데이터베이스 서버 인스턴스를 구현할 수 있는 유연성을 제공하고, 한 인스턴스가 서로 다른 데이터베이스를 관리할 수 있다.
- MySQL 인스턴스는 다른 데이터베이스를 관리하며 같은 시스템에 다수의 MySQL 인스턴스가 있을 수 있다.
그림 1 및 그림 2는 MySQL과 Informix Innovator-C Edition의 아키텍처 다이어그램을 묘사한 것이다. MySQL에 대한 아키텍처 다이어그램은 여러 문서를 세심하게 검토한 후 최선을 다해 그렸지만, 뭔가 잘못된 점을 발견하는 경우 알려주시면 수정하도록 하겠다.
MySQL과 Informix Innovator-C Edition은 모두 스레드 기반 아키텍처를 사용한다. 그림 1에서 보는 바와 같이, MySQL 인스턴스는 여러 데이터베이스를 관리할 수 있다. 한 인스턴스에 모든 MySQL 데이터베이스에서 공유하는 INFORMATION_SCHEMA로 명명된 공통 시스템 카탈로그가 있다.
Informix Innovator-C Edition의 인스턴스도 이와 유사하지만, 이 인스턴스에는 시스템 카탈로그, 저장 공간, 버퍼 풀 등이 포함된다.
MySQL과 Informix Innovator-C Edition에서는 다수의 데이터베이스를 포함한 단일 인스턴스를 시각화할 수 있다. 한 시스템에서 여러 MySQL 인스턴스를 실행 중이고 각 인스턴스에서 여러 데이터베이스를 관리하는 경우 각각의 MySQL 인스턴스를 Informix Innovator-C Edition 인스턴스로 마이그레이션할 수 있다.
MySQL의 흥미로운 특징 중 하나는 플러그 가능한 스토리지 엔진이다. MyISAM, InnoDB, Archive, Federated, Memory, Merge, Cluster, NDB 또는 Custom 스토리지 엔진 중 하나를 선택할 수 있다. 각각의 스토리지 엔진은 저마다 다른 특성을 가지고 있으며, 특정 요구사항을 바탕으로 특정 스토리지 엔진을 선택할 수 있다. 비교를 위해, InnoDB가 관계형 데이터베이스와 가장 가까운 것임을 파악했다.
그림 1. MySQL 아키텍처 및 프로세스 개요
MySQL 서버 프로세스(mysqld)에서는 다음과 같이 다양한 스레드를 작성할 수 있다.
- (서버 프로세스마다) 글로벌 스레드가 각 사용자 연결 스레드를 작성하고 관리한다.
- 각각의 새로운 사용자 연결을 처리하기 위한 스레드가 작성된다.
- 각 연결 스레드는 인증 및 쿼리 실행 작업도 수행한다.
- Windows에서는 명명된 파이프 연결 요청에 대한 연결 스레드와 같은 작업을 수행하는 명명된 파이프 핸들러 스레드가 있다.
- 신호 스레드는 알람을 처리하고 너무 오래 유휴 상태가 있었던 연결에 대해 제한시간을 강제 실행한다.
- 시스템 종료 이벤트를 처리하기 위한 스레드가 할당된다.
- 복제를 위해 마스터 및 슬레이브 서버의 동기화를 처리하기 위한 스레드가 있다.
- 스레드는 테이블 비우기, 유지보수 태스크 등에 사용된다.
MySQL에서는 서버 프로세스 내에서 실행 중인 모든 스레드가 사용하는 다양한 데이터 유형을 캐싱하고 검색하기 위해 데이터 캐시, 키 캐시, 테이블 캐시, 호스트 이름 캐시 및 권한 캐시를 사용한다.
그 밖에도, MySQL 주 프로세스(mysqld)에는 백업, 복원, 동시성 제어 등의 데이터베이스 관리 활동을 처리하기 위한 스레드가 있다.
그림 2 는 Informix Innovator-C Edition의 개요를 도식적으로 나타낸 것이다. Informix Innovator-C Edition 데이터베이스 서버 아키텍처는 오늘날 알려진 사실상 모든 하드웨어 및 소프트웨어 자원을 효과적으로 사용하는 첨단 기술을 기반으로 한다. DSA(Dynamic Scalable Architecture)라고 하는 이 기술에서는 I/O, 복잡한 쿼리, 인덱스 빌드, 로그 복구, 삽입 및 백업/복원과 같이 유사한 유형의 데이터베이스 작업을 수행하여 SMP 환경에서 사용 가능한 처리 능력을 충분히 활용한다. DSA 설계 아키텍처에는 내장 멀티스레딩 기능, 동적 및 자가 튜닝 공유 메모리 컴포넌트 및 지능형 논리 데이터 저장 기능이 포함되어 있으므로, 사용 가능한 모든 시스템 자원을 가장 효율적으로 사용할 수 있다.
Informix Innovator-C Edition 프로세스는 그 작동 방식이 컴퓨터의 CPU와 비슷하기 때문에 VP(가상 프로세서)로 불린다. CPU가 여러 운영 체제 프로세스를 실행하여 여러 사용자에게 서비스를 제공하는 것과 마찬가지로, Informix 가상 프로세서는 여러 스레드를 실행하여 여러 SQL 클라이언트 애플리케이션에 서비스를 제공한다.
가상 프로세서는 운영 체제가 처리 스케줄링을 수행하는 프로세스이다. Informix Innovator-C Edition 가상 프로세서는 여러 개의 동시 스레드를 실행하므로 멀티스레드 방식이다. 그림 2 는 클라이언트 애플리케이션과 가상 프로세서의 관계를 나타낸 것이다. 소수의 가상 프로세서가 훨씬 많은 수의 클라이언트 애플리케이션 또는 쿼리 요청을 처리한다.
단일 클라이언트 애플리케이션에 사용되는 데이터베이스 서버 프로세스에 비해, 멀티스레드 특성을 지닌 Informix는 다음과 같은 장점이 있다.
- 가상 프로세서는 처리를 공유할 수 있다.
- 가상 프로세서는 메모리와 자원을 절약하는 효과가 있다.
- 가상 프로세서는 병렬 처리를 수행할 수 있다.
- 데이터베이스 서버 실행 중에 추가 가상 프로세서를 시작하고 활성 CPU 가상 프로세서를 종료할 수 있다.
- 가상 프로세서를 CPU에 바인드할 수 있다.
가상 프로세서는 SQL 클라이언트 애플리케이션(세션 스레드)을 대신하여 스레드를 실행하고 내부적 요구사항(내부 스레드)을 충족시키기도 한다. 대부분의 경우, 클라이언트 애플리케이션에 의한 각각의 연결을 위해 Informix는 한 개의 sqlexec 스레드를 실행한다. Informix는 내부 스레드를 실행하여 무엇보다도 데이터베이스 I/O, 로깅 I/O, 페이지 정리 및 관리 태스크를 수행한다.
사용자 스레드는 클라이언트 애플리케이션의 요청을 처리하는 데이터베이스 서버 스레드이다. 사용자 스레드에는 sqlexec 스레드라는 세션 스레드가 포함되며, 이는 클라이언트 애플리케이션의 요청을 처리하기 위해 데이터베이스 서버가 실행하는 기본 스레드이다.
그림 2. Informix Innovator-C Edition 아키텍처 및 프로세스 개요
표 1 은 MySQL과 Informix Innovator-C Edition의 데이터 크기 한계를 비교한 내용이다. 이 표에 모든 정보가 포함되어 있는 것은 아니지만, 꼭 주목해야 할 제한사항이 수록되어 있다.
표 1. MySQL 및 Informix의 데이터 크기 한계
| MySQL | Informix Innovator-C Edition | |
|---|---|---|
| 최대 데이터베이스 크기 | 무제한 | 128PB |
| 최대 테이블 크기 | MyISAM 스토리지 한계: 256TB Innodb 스토리지 한계: 64TB | 128PB |
| 최대 행 크기 | 64KB¹ | 32,765바이트 (대형 오브젝트 제외) |
| 행당 최대 열 수 | 4KB² | 32,765바이트 |
| 최대 blob/clob 크기 | 4GB | 4TB |
| 최대 CHAR 크기 | 64KB(텍스트) | 32,765바이트 |
| 최대 NUMBER 크기 | 64바이트 | 10^32 |
| 최소 DATE 값 | 1000 | 12/31/1900 |
| 최대 DATE 값 | 9999 | 12/31/9999 |
1. InnoDB는 8,000바이트로 제한된다(VARBINARY, VARCHAR, BLOB 또는 TEXT 열 제외).
2. InnoDB의 열 수는 1,000개로 제한된다.
이 기사에서는 MySQL 및 Informix 아키텍처의 여러 가지 차이점에 대해 설명하고 두 데이터베이스 기술의 차이점도 몇 가지 보여주었다. 이 시리즈의 Part 2는 실제 마이그레이션 프로세스를 안내하는 튜토리얼이다. 적절히 계획을 세워 Informix를 익히면 정교하고 확장성이 뛰어난 세계적 수준의 데이터베이스 플랫폼에서 자유롭게 작업하면서 Informix의 이점을 한껏 누릴 수 있을 것이다.
교육
-
Informix Innovator-C Edition: Informix Innovator-C Edition에
대해 자세히 알아보자.
-
IBM Informix Dynamic Server v11.70 Information Center: Informix에
대해 자세히 알아보자. Informix 제품과 다양한 기능을 사용하는 데 필요한 정보를 찾을 수 있다.
- "Informix
Dynamic Server 11: Advanced Functionality for Modern Business"(IBM Redbooks, 2007년 10월): Informix Dynamic Server 11의 개요를
확인할 수 있다.
- "Migrating
from Microsoft SQL Server to IBM Informix"(IBM Redbooks, 2010년 7월): Microsoft SQL Server 2008에서 Informix Dynamic Server로
전환하기 위한 고려사항을 이해하고 방법론을 탐색하는 데 도움이 된다.
- "MySQL Restrictions and Limitations"(Oracle, 2011년):
서브쿼리나 뷰와 같은 MySQL 기능을 사용할 때 적용되는 제한사항을 이해할 수 있다.
-
관계형 데이터베이스 관리 시스템의
비교(Wikipedia): 다양한 관계형 데이터베이스 관리 시스템에 대한 일반 정보와 기술 정보를 찾을 수 있다.
- "Migrate from MySQL or PostgreSQL to DB2 Express-C"
(developerWorks, 2006년 6월): 쉽게 수행할 수 있는 세 단계를 따라 DB2로 이동하는 방법을 습득할 수 있다.
- "Oracle to eliminate budget plans in MySQL license hike"
(InfoWorld, 2010년 10월): 라이센싱 요금의 인상 가능성에 대해 알아보자.
- "IBM Migration Toolkit support for migrating data from MySQL to DB2
and Informix"(developerWorks, 2008년 7월): 이 툴킷이 DDL 및 DML 문의 마이그레이션에 어떤 도움이 될 수 있는지 알아보고, 데이터 유형
맵핑 방법을 살펴보자.
- developerWorks
Information Management 영역: Information Management에 대한 추가 정보를 제공한다. 기술 자료, 사용법 기사, 교육, 다운로드, 제품 정보 등을 찾아볼 수 있다.
- developerWorks 기술 행사 및 웹 캐스트를 통해 최신 정보를 얻을 수 있다.
제품 및 기술
-
IBM Migration Toolkit: 플랫폼에 상관없이 다양한 원본
데이터베이스에서 DB2 또는 Informix로 데이터를 마이그레이션하기 위해 쉽게 사용할 수 있는 도구에 대한 자세한 정보를 얻거나 이런 도구를
구할 수 있다.
- developerWorks에서 직접 다운로드할 수 있는
IBM 시험판 소프트웨어를 사용하여 후속 개발 프로젝트를 구현해 보자.
토론
- developerWorks
블로그와 developerWorks community에 참여하여
제공되는 사용자의 개인 프로파일과 사용자 정의 홈 페이지를 통해 관심을 가지고 있는 developerWorks의 여러 주제를 추적하고
다른 developerWorks 사용자들과 의견을 나눌 수도 있다.

Sanjit Chakraborty는 IBM Informix Technical Support의 Down System and Diagnostics 팀 소속으로, 고객이 처한 중대한 문제를 다루고 기술 지원 조직(Technical Support Organization)에서 사용할 지원 도구를 개발하는 책임을 맡고 있다. Sanjit은 정보기술 업계에서 다양한 역할을 맡으면서 15년 이상의 업계 경력을 쌓았다. 그는 Informix 및 DB2의 IBM 인증 시스템 관리자이며, 아카이브 문제 지정 전문가이다. Sanjit은 다양한 Informix 기능과 Down System Support 도구를 개발했다. 또한, 다양한 Informix 주제에 관해 수많은 기술 관련 기사, 튜토리얼 및 교육 과정 자료를 작성하고 이런 자료에 대한 기술 검토자로 참여한 경험도 풍부하다.