티스토리 뷰

Database

MySQL 이 개발자들에게 주는 의미

알 수 없는 사용자 2008. 4. 22. 18:20

출처 : http://sdnkorea.com/blog/550

 

대부분의 비즈니스 전문가는 썬 마이크로시스템즈가 오픈 소스 데이터베이스 공급업체인 MySQL AB를 인수하기로 했다는 발표에 박수를 보냈습니다. 인수를 통해 MySQL이 썬의 관리 하에 들어오게 되었음은 분명하지만 개발자들은 이번 인수가 자신들에게 어떤 영향을 미치게 될지 궁금해 하고 있습니다.

개발자들은 개발할 때 쉽게 사용할 수 있고, 기업 수준에 따라 쉽게 확장할 수 있으며, 기술을 숙지하는 데 투자한 시간을 충분히 보상받을 수 있을 만큼 생명력이 긴 제품을 원하고 있습니다. 일부 MySQL 커뮤니티 회원은 두 회사가 합병된 뒤에도 이 뛰어난 오픈 소스 제품을 계속 이용할 수 있을지, 또한 이 커뮤니티가 앞으로도 활발한 활동을 보일 수 있을지에 대해 궁금해 하고 있습니다.


MySQL, 최고의 오픈 소스 옵션

MySQL은 오픈 소스 데이터베이스 시장을 이끌고 있으며 썬의 MySQL도 앞으로 오픈 소스 커뮤니티와 함께 할 것입니다. MySQL의 CEO인 마틴 미코스는 무료 오픈 소스 소프트웨어에 대한 썬의 약속으로 인수 합병이 성사될 수 있었다고 밝히고 있습니다. 조나단 슈왈츠는 자신의 블로그에 4년 동안의 준비 기간 동안 오픈 시스템에 대한 썬의 약속이 오픈 소스 소프트웨어로 확장되었고 썬이 MySQL 커뮤니티를 위한 홈베이스의 역할을 할 것임을 MySQL 경영진이 분명히 인식하게 되었다고 기술하고 있습니다. 자바 기술과 MySQL 모두 GPL 버전 2 라이센스를 적용받으며 향후에 GPL 버전 3 라이센스가 완성되면 이 라이센스의 적용을 받게 될 것입니다.

MySQL 개발자의 경우에는 거의 변화가 없을 것입니다. 그러나 MySQL Enterprise 고객의 경우 포춘 500대 기업의 지원을 통해 서비스 및 지원 수준이 대폭 향상될 것으로 기대할 수 있습니다. 그리고 MySQL이 보다 광범위하게 채택됨에 따라 모든 사용자가 더욱 빠른 제품 혁신과 더욱 정밀한 테스팅, 그리고 전반적으로 향상된 MySQL 제품을 기대할 수 있습니다.


MySQL
및 썬 소프트웨어 스택

오픈 소스에 대한 썬의 약속에 대해 회의적인 사람들은 다른 썬의 제품, 특히 그 자체가 오픈 소스 혼돈기를 겪었던 솔라리스 OS를 강제로 그러나 의식하기 어려울 정도로 매우 교묘히 채택해야 하는 상황을 우려할 수도 있습니다. 그러나 인텔, 마이크로소프트, 오라클 및 기타 경쟁업체와의 제휴를 포함한 썬의 움직임은 썬이 개발자에게 특정한 소프트웨어의 사용을 강제하기보다 시장에 적응하고 있음을 나타냅니다.

Linux 운영 체제, Apache 웹 서버, MySQL 데이터베이스 서버, PHP/Perl/Python 언어를 총칭하는 LAMP라는 약어는 오픈 소스 개발자가 선호하는 소프트웨어 스택을 설명합니다. 이 스택의 각 요소는 오픈 소스 및 소유권이 있는 경우 모두에 대해 대안이 존재하므로 LAMP는 의미 파악이 쉬운 약어로 그다지 유용하지 않습니다. 예를 들어 매일 50,000건의 MySQL 다운로드 중에서 대부분의 바이너리는 WAMP 개발자 등이 Windows 운영 체제용으로 사용할 것입니다. 썬에서 후원하는 오픈 소스 툴 및 제품, 가장 대표적으로 GlassFish 애플리케이션 서버 같은 제품에도 비슷한 수가 적용됩니다. 썬은 LAMP 개발자 간의 시장 점유율을 위해 적극적으로 경쟁하기로 결정한 한편 자사의 툴과 소프트웨어를 일반적인 플랫폼으로 포팅하고 있습니다.

썬 소프트웨어를 사용하는 개발자는 MySQL이 썬 소프트웨어 스택에서 PostgreSQL 및 JavaDB 등 다른 데이터베이스의 대안으로 사용될지에 대해 궁금증을 가지고 있을 것입니다. 썬은 개발자들이 Apache Derby 같은 데이터베이스 슬롯에 삽입하고자 하는 일반 관리 소프트웨어 가운데 어떠한 것도 지원할 의도가 전혀 없음을 다시 한 번 강조합니다. PostgreSQL 코어 팀의 조쉬 버커스에 따르면 썬은 PostgreSQL에 대한 지원을 중단하지 않을 것입니다. 제일의 MySQL 공급업체가 되는 것이 아니라 제일의 데이터센터 공급업체가 되는 것이 썬의 목표입니다. 데이터베이스의 세계에서는 '한 제품이 모든 용도를 만족시키기'란 불가능합니다. "

웹 애플리케이션 소프트웨어 스택에서 이미 MySQL을 사용하고 있었다면 운영 체제, 웹 서버 또는 언어에 상관없이 MySQL을 계속해서 무료로 커뮤니티 기반 데이터베이스로 사용할 수 있습니다. 기업 수준 성능으로 확장하려는 경우에는 썬에서 필요한 지원과 서비스를 제공합니다. 다른 데이터베이스를 사용하고 있는 경우에도 썬 제품과 함께 사용하는 데 문제가 없습니다.


MySQL
정보

웹 애플리케이션을 개발할 때 MySQL 또는 기타 썬 오퍼링을 사용해본 적이 없다면 이번이 재평가해볼 기회입니다.

한 제품이 모든 용도의 데이터베이스를 만족시킬 수는 없지만 MySQL의 인기는 이 제품이 그러한 이상에 얼마나 가까운지를 보여 줍니다. MySQL의 적응성 및 사용 편이성은 그 아키텍처와 확장성에 크게 힘입고 있습니다. 이 아키텍처는 MySQL이 현재까지 전세계적으로 1,100만 개 이상 설치되어 사용 중이고 1억 회 이상 다운로드되거나 배포된 이유를 잘 말해 줍니다. 이 글의 작성 시점에도 새로운 MySQL이 2초에 한 번씩 다운로드되고 있습니다.


수평 성능 확장 기능

여러 MySQL 사용자가 성공을 위해 채택하는 전략은 수평 성능 확장(Scale-Out)이라고 알려져 있습니다. 이 용어는 데이터를 여러 대의 물리적 서버에 복제하는 방식으로 데이터베이스의 워크로드를 상용 하드웨어 전체에 분리 및 분산시키는 아키텍처 설계 방식을 의미합니다. 이 전략은 수직 성능 확장(Scale-Up)이라고 하는, 적은 수의 단일 서버군에 CPU 전력, 스토리지, 메모리를 추가하는 방법과 대조됩니다. 수평 성능 확장 전략은 이 방식으로 높은 수준의 업타임을 확보한 트래픽 사용량이 높은 여러 MySQL 웹 사이트에서 보듯이 일반적으로 장애 허용 기능과 전반적인 비용 대비 성능이 우수합니다.

그림1은 수평 성능 확장 아키텍처를 보여 줍니다.

Array

그림 1. 수평 성능 확장 아키텍처
크게 보려면 여기를 클릭하십시오.

일 반적인 경우에 사용자는 고객이 사용하는 웹 또는 애플리케이션 서버에서 세션을 시작합니다. 이러한 서버는 로드 밸런서나 기타 요청을 전달하는 애플리케이션 로직을 통해 MySQL 데이터베이스 서버에 필요한 요청을 보냅니다. 요청으로 인해 서버가 데이터베이스에 데이터를 작성하는 경우 서버는 해당 데이터를 다른 MySQL 서버에 복제함으로써 향후의 쿼리에 대비해 데이터를 최신 상태로 유지합니다.

고가용성, 대용량 설정에서 MySQL 서버에 오류가 발생하면 일반적으로 오류가 발생한 서버를 오프라인 상태로 만든 다음 다른 서버로 스왑합니다. 몇 분 후에는 이전과 같이 데이터베이스를 새로운 서버로 복제할 수 있고 쿼리 서비스를 진행할 수 있습니다. 저비용의 상용 서버에서는 이러한 스왑 전략을 비용 효율적으로 구사할 수 있습니다.


스토리지 엔진 아키텍처

MySQL의 스토리지 엔진 아키텍처는 데이터베이스 세계에서 고유한 기능을 제공합니다. 그림 2는 흥미로운 착탈식 스토리지 엔진 레이어를 보여 줍니다.

Array


그림 2. 스토리지 엔진 아키텍처
크게 보려면 여기를 클릭하십시오.

MySQL 은 다른 데이터베이스 관리 시스템과 마찬가지로 스토리지 엔진 레이어 위에 자체 데이터베이스를 표시합니다. 여러 개의 커넥터를 사용하여 데이터베이스를 쿼리할 수 있습니다. 서버의 연결 풀은 인증을 제공하고 스레드, 연결, 메모리, 캐시를 관리합니다. 서버의 모듈은 쿼리 구문을 분석하고, 액세스 경로를 최적화하는 등의 작업을 합니다.

이 레이어 아래에서 여러 개의 스토리지 엔진을 아키텍처에 연결할 수 있습니다. 스토리지 엔진은 물리적 서버 수준에서 유지되는 기본 데이터와 관련된 작업을 수행하는 데이터베이스 서버의 구성요소입니다. 착탈형 스토리지 엔진 아키텍처를 사용하면 표준 관리 및 지원 서비스를 기본 스토리지 엔진 모두에 적용할 수 있습니다. 그러면 여러 데이터베이스를 단일 관리자의 제어 하에 관리하는 것과 비슷한 결과가 됩니다.

아카이브에 사용되는 스토리지 엔진 등 일부 스토리지 엔진의 경우에는 원래 트랜잭션이 불가능합니다. 이러한 스토리지 엔진은 매우 효율적으로 데이터를 삽입하고 읽을 수 있습니다. 어떤 스토리지 엔진은 트랜잭션 작업이 필요할 경우 효율성에 맞게 조정되지만 또 어떤 스토리지 엔진은 클러스터링을 통해 계속해서 고가용성을 제공합니다. 이러한 스토리지 엔진은 자신이 소유한 시스템의 기본적인 오버헤드를 방지합니다. 일반적으로 이러한 시스템은 테이블 아키텍처의 트랜잭션 오버헤드가 필요하지 않은 경우에도 이러한 오버헤드를 감수해야 합니다.

예를 들어 기본적으로 데이터를 조회해야 하는 사이트는 MySQL의 기본 엔진인 MyISAM 스토리지 엔진을 사용하여 트랜잭션 오버헤드를 방지할 수 있습니다. MyISAM 엔진은 고속 쿼리 및 삽입 기능을 제공하지만 트랜잭션이 불가능하며 테이블 수준의 잠금을 제공하고 인덱스 기능을 지원합니다. 기존의 데이터 웨어하우스에 적합한 엔진입니다.

MySQL 데이터베이스 서버는 여러 가지 내부 스토리지 엔진과 함께 제공됩니다. 외부 스토리지 엔진은 특정 제품 및 상황에 따라 성능이 최적화되도록 조정되며 독립 소프트웨어 공급업체나 MySQL 커뮤니티 모두에서 제공합니다.

여러 스토리지 엔진이 있으면 여러 데이터베이스의 기능이 제공됩니다. 다른 데이터베이스에서 MySQL로 마이그레이션하는 경우 SQL 코드가 같으므로 사용 중인 애플리케이션이 데이터베이스 서버와 상호 작용하는 방식을 변경할 필요가 없습니다. 그러나 내부 데이터베이스를 MySQL 서버로 마이그레이션하는 경우에는 애플리케이션의 요구에 맞는 스토리지 엔진을 선택할 수 있습니다.

예를 들어 트랜잭션 가능한 데이터베이스가 필요하다면 단일 구문을 사용하여 트랜잭션이 불가능한 시스템에서 트랜잭션이 가능한 시스템으로 데이터베이스를 변환할 수 있습니다. 그런 다음 데이터 웨어하우스가 필요하면 명령 하나로 강력한 데이터 검색에 적합하게 조정된 열 중심 데이터베이스를 소유할 수 있습니다. 주요 작업이 데이터를 캡처하고 저장하는 일이라면 아카이브 스토리지 엔진은 대용량 삽입 작업을 효율적으로 처리하고 공간을 적게 차지하도록 데이터를 압축하는 일에 맞게 설계됩니다.


고가용성

ISP 및 메인스트림 비즈니스는 MySQL 서버의 복제 기능이 고가용성 요구에 충분하다는 것을 알 수 있습니다.

고객은 가용성을 늘리기 위해 SAN(Storage Area Network) 기술을 추가하거나 LINBIT에 서 네트워크를 통해 차단 장치 복제를 배포하는 Linux 커널 모듈인 DRBD(Distributed Replicated Block Device)를 추가할 수 있습니다. 고가용성의 "99.999%"가 데이터 노드 간의 동기화된 복제, 자동 페일오버, 클러스터 간의 복제를 수행하는 MySQL 클러스터에 의해 제공됩니다.

MySQL의 기능은 트래픽이 가장 높은 사이트에 최고 수준의 성능을 제공하며 제품 개발에도 쉽게 사용할 수 있습니다. 이러한 특징 덕분에 많은 사용자가 사용하고 있습니다.


비용이 들지 않습니다.

MySQL 사용자의 25%가 개발자입니다. 여러 중소기업의 경우, 특히 사업 초창기에는 개발자가 데이터베이스 관리자이기도 합니다. 기업이 성장하면서 용량과 수익이 커짐에 따라 주요 작업자들은 데이터베이스 관리 이외의 활동에 더 많은 시간을 사용하게 됩니다. 높은 안정성과 인력 비용이 점점 중요해집니다. 이 시점에서 MySQL Enterprise를 구입하면 모니터링 기능 및 기타 지원되는 기능을 활용할 수 있기 때문에 경제적으로 효율적입니다.

Enterprise 버전이 업데이트를 더 자주 수행하지만 커뮤니티 버전의 MySQL과 MySQL Enterprise 버전은 그 기능이 동일합니다. 이러한 기능에는 GUI 관리 도구, 다른 서버의 데이터를 마이그레이션할 수 있는 마이그레이션 툴킷, JDBC 및 ODBC용 커넥터 등이 있습니다. 커뮤니티에서 문서 및 사용자 포럼에도 무료로 액세스할 수 있습니다. MySQL을 사용하여 무료로 개발할 수 있으며, 개발 성능을 수평으로 확장하거나 유료 버전의 MySQL로 이전할 수도 있습니다.


결론

썬 마이크로시스템즈는 Java 기술용 오픈 소스 모델, Solaris 운영 체제 및 기타 속성을 포괄함으로써 오픈 소스 커뮤니티에 세계 최대의 기업 공헌자가 되었습니다. 이미 세계 최대의 오픈 소스 데이터베이스인 MySQL은 썬 소프트웨어 스택의 중요한 틈새를 채워 줍니다. MySQL은 썬의 사용 범위와 자원을 기반으로 더욱 널리 사용될 것입니다. 그렇게 되면 썬, MySQL, 개발자 커뮤니티, 대기업 및 중소 기업 고객 모두에게 혜택이 돌아갈 것입니다.


자세한 정보

'Database' 카테고리의 다른 글

MSSQL에서 LPAD 함수 만들기  (0) 2011.07.08
치환  (0) 2011.05.20
초보자를 위한「MySQL 백업·복구」강좌  (2) 2008.04.18
MySQL 속에 이미지 저장하기  (0) 2008.04.05
MySQL 명령어들  (0) 2008.03.13