MySQL

 

[image]
웹사이트
1. 개요
2. 라이선스
3. 이용 현황
4. 버전
5. 관련 문서


1. 개요


1995년에 발표된 오픈 소스 DBMS. '마이에스큐엘'이라고 읽는다. 'SQL' 부분을 '스큐엘'로 읽는게 공식인[1] PostgreSQL과는 달리 MySQL은 SQL을 '에스큐엘'로 끊어서 읽는게 공식으로 정해진 발음이다.
제작사는 MySQL AB이다. 이 회사는 썬 마이크로시스템즈에게 10억 달러에 인수되었는데, 이후 2010년 오라클이 썬을 72억 달러에 인수하면서 같이 넘어갔다. 따라서 MySQL의 실질적인 소유주는 오라클이다. 그런데 오라클은 자체 상용 DBMS인 오라클 데이터베이스를 가지고 있고, 오픈 소스에 대해 호의적이지 않은데다 프로그램이 갈수록 복잡해지고 있어서 MySQL 사용자들 사이에서도 불안감이 커지고 있다.
그래서 오픈 소스 진영에서 MySQL을 모태로 MariaDB라는 DBMS를 만들었다. 리눅스 배포판 중 페도라오픈수세는 MySQL을 버리고 MariaDB를 장착했다. 기사1 기사2 애플OS X 서버 버전에서 MySQL을 버리고 PostgreSQL을 채용했다.
상징 동물은 돌고래이다.

2. 라이선스


라이선스는 제품 종류에 따라 GPL과 자체적인 상용 라이선스 두 가지가 적용된다.
제품 종류는 무료와 유료로 나뉘는데, 무료 버전은 커뮤니티 에디션(Community Edition)이라는 이름이고, "영리 목적"으로 사용하려면 유료 버전을 써야 한다. 유료 버전의 가격은 2,000~10,000달러 사이이다. 무료 버전은 GPL이 적용되어 있어 소스 코드 수정 시[2] 수정된 코드를 공개해야 하지만, 유료 버전은 자체 상용 라이선스이기 때문에 소스 공개의 위험이 없다. 대신 유료 버전은 고객 지원을 빵빵하게 해주지만 무료 버전은 안 해 준다.
하지만 무료 GPL 버전도 개인이 사용하는 데는 전혀 문제가 없고, 기업이 사용하는 일반적인 목적에도 사실상 문제가 없다. 여기서 말하는 "영리 목적"이란 MySQL 소프트웨어를 가져다가 대폭 수정해서 고객에게 납품하는, 즉 "배포하는" 경우에 수정한 내용의 소스를 공개하지 않는 목적을 말하는 것이지, 기업에서 일반적인 인터넷 서비스를 만들 때 사용하는 "영리" 목적을 가리키는 게 아니다. 인터넷 서비스 회사 같은 경우 보통 서비스에서는 소프트웨어를 수정했든 안 했든 소프트웨어는 서버에서 돌아갈 뿐이지 직접 배포되지 않기 때문에 GPL 버전을 사용해도 소스를 공개할 필요가 없기 때문이다. GPL은 소프트웨어를 배포할 때 소스를 같이 배포하는 게 조건이지 인터넷 서비스처럼 서버 입/출력만 외부에 공개되는 경우에는 소스를 배포하라는 제약이 없다.[3][4] 하지만 종종 오라클이나 오라클의 리셀러들은 고객에게 이런 사실을 정확히 알리지 않은 채 "영리 목적"으로는 유료 버전을 써야 한다고 공포 마케팅을 벌리고는 하는데 사실과 다르다. 보통 그들도 GPL이 정확히 어디까지 허용하는지 모른다.
커뮤니티 버전과 상용버전의 차이는 기술지원에만 있는 것이 아니다. 상용 버전에는 Standard, Enteprise, Cluster 세가지 제품이 있으며, 백업, 모니터링, HA등의 기능을 사용하려면 상용버전을 구매해야 한다.
참고로 오픈 소스 소프트웨어의 경우 이런 방식의 유료화가 많다. 리눅스, 오픈오피스, 각종 서버 관련 프로그램 등등. 기업에서 중요한 것은 돈이 들더라도 문제가 생겼을 때 빠르게 해결할 수 있어야 하는데, 오픈 소스는 그런 면에서 기업에 메리트가 없다. 물론 오픈 소스 커뮤니티에서 지지고 볶고 하면 답이 나오지만, 시간이 돈인 기업에서 그런 짓을 하겠는가? 또, 오픈 소스 진영에서도 수익금이 들어와야 서버 유지 같은 돈이 드는 곳에 투자를 할 수 있다.
이렇게 기업 입장에서는 일반적인 상용 소프트웨어보다 저렴한 비용을 내며 사후지원을 받을 수 있고[5], 오픈 소스 그룹 입장에서는 스폰서 등을 받지 않아도 수익 수단이 생겨서 좋은 Win-Win 전략이 고객지원에 대한 요금부과이다. 다만 MySQL의 경우 이와 같은 서비스를 제공하는 게 오픈 소스의 적인 그 오라클이다 보니 망했어요.

3. 이용 현황


점유율은 상당히 높다. 설치형 블로그나 게시판 등등 상당수의 CMS(컨텐츠 관리 시스템)가 MySQL을 지원한다. 한국에서는 제로보드그누보드가 이걸 지원하면서 폭발적으로 점유율을 높였다. 세계적으로도 미디어위키워드프레스, phpBB 등의 유명한 웹 프로그램에서 사용되고 있다. 전통적으로 리눅스에 설치하는 APM 패키지(Apache+PHP+MySQL)에 기본 포함될 정도로 인기가 많다. 물론 윈도우용도 있다.
그런데 오라클에 넘어간 이후로 MySQL에서 발을 빼는 기업들이 늘어났다. 2010년부터 시작된 구글 vs. 오라클Java 저작권 소송을 보고 저작권 분쟁 위협을 느낀 일부 기업들은 서서히 MySQL을 걷어내고 MariaDB, PostgreSQL 등으로 넘어가고 있다. 그러나 오라클은 예상과 달리 MySQL에 대해서는 저작권 관련 분쟁을 일으키지 않아서 이런 불안감은 점차 사그러들었고, 2019년 기준 MySQL은 오라클 DB, MS SQL과 더불어 3대 DBMS라는 위상을 굳건히 지키고 있다.

4. 버전


1995년 5월 23일에 첫 버전이 출시되었고, 2020년 10월 기준 8.0.22 버전이 최신이다. 8.0으로 업데이트되면서 새로운 기능을 넣기 위해 하위호환을 많이 포기했으므로, 버전 업데이트 시 주의할 필요가 있다.
한국의 웹 호스팅은 EUC-KR일 경우 MySQL의 버전이 4.0에서 머물러 있는 경우가 많은데, 제로보드가 4.1 이후 버전을 지원하지 않기 때문이다. UTF-8의 경우에는 이런 문제가 없기에 대부분 최신 버전이다.
이모지에는 3바이트짜리 이모지도 있고 4바이트짜리 이모지도 있는데, 4바이트짜리 이모지를 지원하려면 MySQL 버전이 최소 5.5는 되어야 한다.[6] 인코딩 옵션에 utf8mb4라는 게 있으면 4바이트 이모지를 정상적으로 지원하는 MySQL 버전이라고 볼 수 있다. 이렇게 된 이유는 MySQL 쪽에서 최적화를 위해 3바이트까지만 저장되는 BMP만 지원했다가 나중에 4바이트짜리 이모지가 쓰이기 시작해서 부랴부랴 추가한 것이다.
날짜를 저장하는 자료형인 Timestamp의 경우에는 최신 버전에서도 2038년 문제가 해결되지 않아서 문제가 되고 있다.

5. 관련 문서



[1] 정확히는 Post+Gres+Q+L로 끊어 읽는 것이다. SQL의 S를 앞과 합쳐 단어처럼 읽어버린다.[2] 무료 버전은 오픈 소스 소프트웨어이므로 필요 시 소스를 고쳐 쓰는 것도 가능하다.[3] 예를 들어 구글은 오래전부터 MySQL를 사용해 왔고, 현재는 MariaDB로 옮겨 갔으니 유료 라이선스를 구입해서 쓰고 있는 것도 아니다. 구글은 구글의 서비스에 맞춰 MySQL/MariaDB의 많은 부분을 수정해 사용하고 있다고 알려져 있지만 자발적으로 수정사항을 개발자들에게 제출한 것을 제외하면 구글이 내부적으로 정확히 어떻게 수정한 버전을 쓰고 있는지 공개된 적이 없다. GPL 버전을 수정했는데 왜 공개하지 않아도 되냐면 구글은 그 DB 소프트웨어를 직접 배포하지 않기 때문이다.[4] 단, LGPL이나 AGPL의 경우에는 조금 다르다. 자세한 내용은 GPL 문서 참고.[5] 오라클오라클 데이터베이스마이크로소프트의 MS SQL Server는 정말 '''억 단위'''의 비용이 나온다.[6] SMP가 이 버전에서부터 지원된다.