MySQL

出典: Wikipedio


Template:Infobox Software MySQL(マイエスキューエル)は、RDBMSリレーショナルデータベースを管理、運用するためのシステム)の実装の一つである。

目次

概要

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

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

世界で最も有名なオープンソース・データベースとして知られており、市場シェアでは他のPostgreSQLなどのライバルを圧倒している<ref>http://www-jp.mysql.com/why-mysql/marketshare/</ref>。ただし日本ではPostgreSQLとほぼ互角のシェアである<ref>http://www.ipa.go.jp/software/open/ossc/seika_0803.html</ref>。

データの保存とアクセスを行うストレージエンジンがSQLパーサとは分離独立しており、用途に応じたストレージエンジンを選択できる「マルチストレージエンジン」方式を採用している。特に InnoDB ストレージエンジンはトランザクションに対応し、高い堅牢性とMVCCによる高い並列性を兼ね備えており、あらゆるアプリケーションに対応出来る人気のストレージエンジンとなっている。また、InnoDB登場以前から搭載されているMyISAMストレージエンジンも検索の高速性に定評があり、更新よりも参照の頻度の高いWebアプリケーションなどで活用されている。全文検索が利用できるのも、MyISAMの利点である。

トランザクション

MySQLでは、トランザクション管理はストレージエンジンの役割であり、トランザクション利用したければ対応したストレージエンジンを使用すればよい。バージョン3.23.34以降で組み込まれているInnoDBは、オープンソースソフトウェア企業のInnobase社が開発したストレージエンジンであり、ACIDに準拠したトランザクションをサポートしている。InnoDBはメディア障害時の更新ログによるリカバリもサポートしている。

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

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

その他の機能

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

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

ライセンス

MySQLは GPL とコマーシャルライセンスのデュアルライセンス方式で提供されている<ref>MySQLのライセンスポリシー</ref>。

基本的に、MySQLのサーバ本体とクライアントライブラリはGPLで提供される。 このため、MySQLを改造し、それを再頒布する場合は、GPLに従う必要がある。 また、GPLのクライアントライブラリを利用してMySQLに接続するアプリケーションを開発した場合、 そのアプリケーションもGPLライセンスとしなければならない。

ただし、クライアントライブラリに関しては、アプリケーションが既定のオープンソースライセンスで公開されるのであれば、GPL以外のオープンソースライセンスで再頒布することも可能である<ref>FOSS License Exception</ref>。

サポート付きの有料パッケージであるMySQL Enterpriseでは、デフォルトでGPL版のバイナリが提供されるが、必要に応じてコマーシャルライセンス版も利用可能となる<ref>Must I purchase MySQL Enterprise under MySQL's Commercial License in order to receive support?</ref>。 コマーシャルライセンス版では、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 プロダクションリリース。ベータ版は2005年3月にリリース。cursors, stored procedures, triggers, views, XA transactions搭載。
  • 2008年2月6日 - サンマイクロシステムズがMySQL ABを買収。
  • 2008年7月1日 - サン・マイクロシステムズ株式会社がMySQL株式会社(MySQLの日本法人)を吸収合併。
  • 2008年11月 - Version 5.1 プロダクションリリース。ベータ版は2005年11月にリリース。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。
  • 2009年4月 - Version 5.4 ベータ版公開。

利用状況

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

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

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

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

だが、そのような状況は徐々に変遷し、2009年の段階ではMySQLのほうがPostgreSQLよりも多く利用されているという報告がある。<ref>http://ossipedia.ipa.go.jp/doc/201</ref><ref>http://www.itmedia.co.jp/enterprise/articles/1005/12/news011.html</ref>

プラットフォーム

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

開発言語

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

日本語処理

MySQL5は、sjis(Shift JIS)、cp932(Microsoftコードページ932)、utf8(UTF-8)、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の管理ツール

脚注

<references />

関連項目

Template:Portal

リンク

Template:Commonscat

Template:Sun Microsystemsaf:MySQL ar:ماي إس كيو إل az:MySQL bg:MySQL bs:MySQL ca:MySQL cs:MySQL da:MySQL de:MySQL el:MySQL en:MySQL eo:MySQL es:MySQL et:MySQL eu:MySQL fa:مای‌اس‌کیوال fi:MySQL fr:MySQL ga:MySQL gl:MySQL he:MySQL hr:MySQL hu:MySQL id:MySQL it:MySQL kab:MySQL km:MySQL ko:MySQL ku:MySQL lt:MySQL lv:MySQL mg:MySQL mk:MySQL mn:MySQL ms:MySQL nl:MySQL no:MySQL pl:MySQL pt:MySQL ro:MySQL ru:MySQL simple:MySQL sk:MySQL sl:MySQL sr:MySQL sv:Mysql ta:மைசீக்குவெல் th:มายเอสคิวเอล tk:MySQL tr:MySQL uk:MySQL uz:MySQL vi:MySQL zh:MySQL

個人用ツール