MySQL

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:Infobox MySQL(マイエスキューエル)は、オラクルが開発するRDBMSリレーショナルデータベースを管理、運用するためのシステム)の実装の一つである。

概要

オープンソースで開発されており、GNU GPLと商用ライセンスのデュアルライセンスとなっている。

他の多くのオープンソースプロジェクトと異なり、スウェーデンの単一の営利企業「MySQL AB」によって保持されていた。2008年2月26日にMySQL ABがサン・マイクロシステムズに買収されたことによってサン・マイクロシステムズの所有となった。またトレードマークおよび著作権サン・マイクロシステムズが所有していた。2010年1月27日サン・マイクロシステムズオラクルに買収された。

シェア

世界でもっとも普及しているオープンソース・データベースとして知られており[1]、市場シェアではPostgreSQLなどの他のオープンソース・データベースを圧倒している[2]。日本でも2009年になってPostgreSQLを超えるシェアを獲得している[3]。初期のMySQLで文字コードのサポートが悪かったのが影響したが、現在はEUC、SJIS、多言語面を含むUTF-8などをサポートしている。

利用企業数の割合
地域 MySQL PostgreSQL 調査機関
世界 82.1% 27.1% 451 Group (2009年)[4]
日本 60.5% 51.9% IPA (2009年)[3]

ストレージエンジン

データの保存とアクセスを行うストレージエンジンがSQLパーサとは分離独立しており、用途に応じたストレージエンジンを選択できる「マルチストレージエンジン」方式を採用している。

バージョン3.23.34以降で組み込まれているInnoDBストレージエンジンは、オープンソースソフトウェア企業のInnobase社が開発したストレージエンジンであり、高い堅牢性とMVCCによる高い並列性を兼ね備えており、あらゆるアプリケーションに対応出来る人気のストレージエンジンとなっている。InnoDBはメディア障害時の更新ログによるリカバリもサポートしている。

また、InnoDB登場以前から搭載されているMyISAMストレージエンジンも検索が高速であり、更新よりも参照の頻度の高いWebアプリケーションなどで活用されている。全文検索が利用できるのも、MyISAMの利点である。

以前はMyISAMの方が高速であると言われることが多かったが、InnoDBの性能改善が進んだことから、高速性を求めるためにMyISAMを利用するということも減ってきている。

トランザクション

MySQLでは、トランザクション管理はストレージエンジンの役割であり、トランザクションを利用したければ対応したストレージエンジンを使用すればよい。

InnoDBは、ACIDに準拠したトランザクションをサポートしている。一方MyISAMでは、トランザクションをサポートしていない。トランザクションが必要でないシーンは徐々に減ってきているので、最近MyISAMの出番も減りつつあるようである。

その他の機能

副次問い合わせ(サブクエリ)は、バージョン4.1以降でサポートされている。バージョン5.0以降では、SQL99にストアドプロシージャビュートリガーが実装され、機能の面でも他のRDBMSに追いつきつつある。

その他、標準でマスタスレーブ方式のレプリケーション機能を備えており、堅牢なデータストレージの構築が比較的容易である。

ライセンス

MySQLは GPLコマーシャルライセンスのデュアルライセンス方式で提供されている[5]。 基本的に、MySQLのサーバ本体とクライアントライブラリはGPLで提供される。このため、MySQLを改造し、それを再頒布する場合は、GPLに従う必要がある。

GPLのクライアントライブラリを利用してMySQLに接続するアプリケーションを開発した場合、そのアプリケーションもGPLライセンスとしなければならない可能性がある。ただし、クライアントライブラリに関しては、アプリケーションが既定のオープンソースライセンスで公開されるのであれば、GPL以外のオープンソースライセンスで再頒布することも可能である[6]

サポートやツールが提供される有料サブスクリプションのMySQL Standard Edition, Enterprise Editionでは、コマーシャルライセンス版のバイナリが提供される。[7]。コマーシャルライセンス版では、GPLによる制約は受けない。

歴史

  • 1995年5月23日 - 内部的に MySQL の最初のバージョンがリリース。
  • 1998年1月8日 - 最初の Windows 版がリリース。Windows 95 や NT 向け。
  • 2001年1月 - Version 3.23 プロダクションリリース。ベータ版は2000年6月にリリース。
  • 2003年3月 - Version 4.0 プロダクションリリース。ベータ版は2002年8月にリリース。union搭載。
  • 2004年10月 - Version 4.1 プロダクションリリース。ベータ版は2004年6月にリリース。R木B木、サブクエリー、prepared statements搭載。
  • 2005年10月 - Version 5.0 プロダクションリリース(5.0.15よりGA)。ベータ版は2005年3月にリリース。cursors, stored procedures, triggers, views, XA transactions搭載。
  • 2008年2月6日 - サンマイクロシステムズがMySQL ABを買収。
  • 2008年7月1日 - サン・マイクロシステムズ株式会社がMySQL株式会社(MySQLの日本法人)を吸収合併。
  • 2008年11月 - Version 5.1 プロダクションリリース(5.1.30よりGA)。ベータ版は2005年11月にリリース。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。
  • 2010年6月1日 - 日本オラクル株式会社がサン・マイクロシステムズ株式会社を統合。
  • 2010年12月15日 - Version 5.5 プロダクションリリース(5.5.8よりGA)。デフォルトのストレージエンジンが InnoDB になり、マルチコアCPUでのパフォーマンスが改善した[8]。ベータ版(Version 5.4)は2009年4月にリリース。
  • 2013年2月5日 - Version 5.6 プロダクションリリース(5.6.10よりGA)。InnoDB、NoSQLの機能を強化[9][10]

利用状況

世界的にはこのMySQLの方が、ライバルであるFirebirdPostgreSQLよりも多く使用されており、ウェブサイトの構築に用いるソフトウェア環境として、LAMP (Linux, Apache, MySQL, PerlPHPPython) の略称が知られている。Yahoo!FacebookTwitterなどの巨大なウェブサイトでの適用例も多く、WebアプリケーションのXOOPSWordPressSugarCRMなどもバックエンドのデータベースとしてMySQLを利用している。また、ウィキペディアのためのソフトウェアであるMediaWikiでもこのソフトウェアを使用している[11]。他にも、社内用WebアプリケーションのサイボウズもMySQLを利用しており、MySQLを改造するため、有償契約をしている。

世界的な傾向に反し、以前日本ではPostgreSQLの適用例がMySQLを上回っていた。2003年の時点で、オープンソース系のデータベースとして、日本では8割以上がPostgreSQLだった。

その理由として、以下の理由が指摘されている。

  • 欧米において、MySQLの広報が積極的だった。
  • MySQLの日本ユーザ会の立ち上げが遅れた。
  • 日本でのPHPのバイブル本である「PHP徹底攻略」と「PHP4徹底攻略」がPostgreSQLとの接続を想定して記述されていた。
  • PostgreSQLの開発に日本人であるSRA石井達夫が関わっていた。彼は上記二冊の執筆も一部担当している。
  • Javaを開発するSun Microsystemsが、MySQLよりもPostgreSQLを推していた。
  • かつてのMySQLでUnicodeのサポートが不十分だった。
  • アプリケーションの頒布形態によってはGPLではなく商用ライセンスを選択しなければならないケースがある。

だが、そのような状況は徐々に変遷し、2009年の段階ではMySQLのほうがPostgreSQLよりも多く利用されているという報告がある。[12][13]

プラットフォーム

MySQL 5.5は次のプラットフォームでサポートされている。[14]

MySQL 5.0は以下のプラットフォームでサポートされている。

開発言語

C, C++, Eiffel, Smalltalk, Java(JNI), Lisp, Perl, PHP, Python, Ruby, TclはMySQLのAPIを介してデータベースにアクセスできる。またODBCインターフェース (MyODBC) もサポートされている。MySQL自体はCおよびC++で開発されている。埋め込みSQLによる開発はサポートされていないため、オープンソースプロジェクトのOpen ESQL等が利用される[15]

日本語処理

MySQL5は、sjis (Shift_JIS)、cp932(Microsoftコードページ932)、utf8(UTF-8(3バイトまで))、utf8mb4(UTF-8(4バイトまで/MySQL5.5以降でサポート))、ujis (EUC-JP) といった文字セットを指定することで、日本語の文字を含む入出力を正しく扱うことができる。

sjisは、JIS X 0201およびJIS X 0208に準じたものであるが、同じ「Shift_JIS」でも、Windows環境で使用される文字の一部を正しく扱えない場合がある。これは、Windowsでは、前記の規格以外の拡張文字を含む、拡張されたShift_JISを使用しているためである。これらの文字をMySQLで正しく扱うには、sjisではなくcp932を指定する。

たとえば、Microsoft AccessからUTF-8で格納するテーブルにODBCリンク経由でアクセスする場合は、MyODBCの文字セット設定をcp932にしておけば、正しく入出力できる。

cp932がMySQLでサポートされたのは4.1.12からであり、それまでは、「sjisで格納し、sjisで入出力」するという設定を行い、入出力時の文字コード変換を避けることで、Windowsの拡張シフトJISで問題が起きないようにする、というのが、日本国内における「常識」であった。cp932のサポートの前にはすでにUnicodeがサポートされていたが、それらを積極的に使用する人はあまりいなかった。なぜなら、Unicodeで格納するテーブルに対してsjisで入出力を行うと、Windows環境において拡張文字が適切に変換されず文字化けが発生するため、それが「Unicode対応が不完全」「Unicodeはまだ使いものにならない」という評価を生む一因となっていたからである。

Ruby on RailsCakePHPのデフォルトはutf8だが、データベース接続設定でencodingをutf8と明示的に使用宣言しておく必要がある。

MySQLの管理ツール

脚注

テンプレート:脚注ヘルプテンプレート:Reflist

関連項目

テンプレート:Portal

リンク

テンプレート:Sister

テンプレート:Sun Microsystems
  1. http://db-engines.com/en/ranking
  2. http://www-jp.mysql.com/why-mysql/marketshare/
  3. 3.0 3.1 http://www.ipa.go.jp/software/open/ossc/seika_1004.html
  4. 451 Group survey highlights user concerns over Oracle’s proposed ownership of MySQL
  5. MySQLのライセンスポリシー
  6. FOSS License Exception
  7. MySQL Editions
  8. 1.5. What Is New in MySQL 5.5
  9. Oracle>About>Press Room>Oracle Announces General Availability of MySQL 5.6
  10. Oracle Japan>Media centre home>ニュースリリース>MySQL5.6の一般提供開始を発表
  11. なお、ウィキペディア自体はMySQLからフォークしたMariaDBの利用へと移行している。
  12. http://ossipedia.ipa.go.jp/doc/201
  13. http://www.itmedia.co.jp/enterprise/articles/1005/12/news011.html
  14. http://www-jp.mysql.com/support/supportedplatforms/database.html
  15. Open ESQL