MySQL は世界で最も人気のあるオープンソースのリレーショナル データベースの一つです。この人気は、e コマースサイト、ソーシャル メディア、および Drupal、Joomla、Magento、WordPress などのアプリケーションで広く使用されていることによるものです。また、広く利用されている Linux-Apache-MySQL-PHP/Perl/Python(LAMP)ウェブ アプリケーション スタックにも欠かせない要素であり、多くの一般的なアプリケーション、ウェブサイト、サービスで利用されています。これは、DB-Engines で世界で 2 番目に人気のあるデータベースです。
Google Cloud のマネージド リレーショナル データベース、Cloud SQL for MySQL が運用コストの削減と効率化にどのように役立つかをご覧ください。
MySQL はオープンソースのリレーショナル データベース管理システムです。他のリレーショナル データベースと同様に、MySQL では行と列で構成されるテーブルにデータが保存されます。ユーザーは、一般に SQL と呼ばれる構造化クエリ言語を使用して、データの定義、操作、制御、クエリを行うことができます。MySQL はオープンソースであるため、25 年以上にわたりユーザーと緊密に連携して開発された数多くの機能が含まれています。
MySQL はオープンソースです。つまり、GNU General Public License の条項の下で無償で使用できます。これは、誰でもソフトウェアのソースコードを自分で使用するために自由に変更できることを意味します。これにより、MySQL は MariaDB や Percona Server for MySQL のようなデータベースの他のバリアントにフォークすることになりました。MySQL は他の商用ライセンスの下でも利用できます。
MySQL は、リレーショナル データベース管理システム(RDBMS)と呼ばれるデータベースのカテゴリに属します。リレーショナル データベースとは、データを列と行の 1 つ以上のテーブル(「関係」)にあらかじめ格納している事前定義済みの関係でデータを整理して表示するための情報のコレクションで、さまざまなデータ構造が互いにどのように関係しているか簡単に確認して理解します。関係は、テーブル間の相互作用に基づいて確立された、異なるテーブル間の論理接続です。
MySQL は商用プログラミング言語 SQL の拡張機能として作成されました。SQL は、Edgar F. Codd の論文に記載された関係モデルをベースにしたものです。David Axmark、Allan Larsson、Michael Widenius によって設立されたスウェーデンの MySQL AB は、1995 年に MySQL を開発してリリースしました。「MySQL」という名前はMichael Wildenius の娘の名前「My」「SQL」は、Structure Query Language(SQL)を指します。Sun Microsystems は 2008 年に MySQL AB を買収しました。2010 年の Sun Microsystems の買収以降、MySQL は現在 Oracle Corporation の所有となっています。
MySQL は元々 C および C++ プログラミング言語で開発されましたが、多くのオープンソースや独自のオペレーティング システムで利用できることから、長年にわたって多くのバージョンで高い人気を博してきました。データベースの最新バージョンである MySQL バージョン 8.0 は 2018 年にリリースされました。
MySQL プロジェクトは、さまざまな理由から何年にもわたって何度もフォークされ、一部のフォークは存在しなくなりました。残っているフォークプロジェクトの中で最も人気のあるプロジェクトは、MariaDB と Percona Server for MySQL です。MariaDB は、Oracle を買収したことで商品化の懸念が生じても、MySQL がオープンソースであり続けることを保証するために、MySQL の創始者によってフォークされました。Percona Server for MySQL は、MySQL のもう 1 つのオープンソース ディストリビューションであり、MySQL との緊密な互換性を維持することを目的としています。MySQL のバージョンと MySQL を取り巻くエコシステム全体の詳細をご覧ください。
MySQL には、グラフィカル ユーザー インターフェース(GUI)またはコマンドライン インターフェース ツールからアクセスできます。
グラフィカル ユーザー インターフェース(GUI)
GUI は、ボタンとインタラクション ウィジェットで構成される統合環境を提供するため、コマンドライン インターフェースでテキストベースのコマンドを使用するのではなく、アプリケーションのクエリや開発を視覚的に行うことができます。MySQL のオープンソース プロジェクトとサードパーティ インテグレータの両方が開発した MySQL GUI が数多くあります。よく使われるのは MySQL Workbench です。これもオープンソースで、MySQL AB によって開発されました。よく知られている GUI としては、ウェブ アプリケーション開発でよく利用されている管理ツールの phpMyAdmin や、MySQL 以外のデータベースの管理に使用できるオープンソースの管理ツールである HeidiSQL もあります。
コマンドライン
MySQL にはコマンドライン ツールからもアクセスできます。 これらのツールは MySQL ユーティリティとも呼ばれ、MySQL ディストリビューションに付属し、MySQL シェルや Percona ツールキットなどの他のコマンドライン インターフェース ツールでテキスト コマンドを使用して呼び出されます。
ユーザーは、MySQL をオープンソース コードを使用して自分の物理マシンに手動でデプロイすることも、パッケージ化されたディストリビューションのいずれかをダウンロードしてデプロイすることもできます。MySQL は、最も一般的に単一インスタンスまたはマシンにインストールされ、パフォーマンスを向上させる主な方法として垂直スケーリングが使用されます。ただし、MySQL は 1 つのプライマリ ノードと多数のセカンダリ ノードを持つ複製された構成で設定できます。セカンダリ ノードは、インスタンスに障害が発生した場合にプライマリに昇格できます。
MySQL をホストするもう 1 つの人気のある方法は、クラウド サービス プロバイダ(CSP)を介する方法です。クラウド サービス プロバイダの環境に MySQL をデプロイするには、いくつかの方法があります。一つは、MySQL を仮想マシンに直接インストールして自己管理する方法です。もう一つは、クラウド サービス プロバイダのマネージド サービスを使用することです。これにより、MySQL の管理に関する多くの運用面に対応することで、MySQL の管理が大幅に簡素化されます。Google Cloud では、Cloud SQL という形でマネージド サービスが提供されます。Cloud SQL for MySQL は、Google Cloud での MySQL リレーショナル データベースの設定、維持、管理、管理者を支援するフルマネージド データベース サービスです。セキュリティ、高可用性、オブザーバビリティに関する付加価値サービスを提供することで、データベース管理者の労力を軽減し、組織のイノベーションを支援します。MySQL の Cloud SQL インスタンスの設定方法については、Cloud SQL for MySQL インスタンスの設定に関するベスト プラクティスの記事をご覧ください。オンプレミスの MySQL やクラウド サービス プロバイダの別のデータベースから Cloud SQL for MySQL への移行は非常に簡単で、多くのツールとオプションを利用できます。
Cloud SQL for MySQL のフルマネージド サービスとセルフマネージド MySQL の利点と相違点については、MySQL ホスティング オプションの記事をご覧ください。
MySQL は高速で信頼性に優れ、スケーラブルで簡単に使用できます。MySQL は、他のアプリケーションやウェブサーバーなどとともに、デスクトップやノートパソコンで快適に実行できます。特に注意を払う必要はほとんどありません。マシン全体を MySQL 専用にする場合は、設定を調整して、使用可能なすべてのメモリ、CPU パワー、I/O 容量を活用することができます。MySQL は、ネットワークで接続されたマシンのクラスタまでスケールアップすることもできます。
MySQL を使用してデータを管理、保存することには、他にも次のような多くの利点があります。
高可用性
MySQL の高可用性(HA)とは、障害なく長期間動作できるデータベース エンジンの能力を指します。MySQL の HA は設定が非常に複雑で、各ユーザーの特定の可用性要件と MySQL のデプロイ方法によって異なります。MySQL で HA を設定するには、データ レプリケーション、障害検出、フェイルオーバーとフェイルバックのメカニズム、フェイルオーバー後のセカンダリ インスタンスへのデータベース トラフィックのリダイレクトについて考慮する必要があります。Cloud SQL for MySQL では、高可用性を実現するシンプルで簡単なプロセスを実現します。Google Compute Engine 上の MySQL の高可用性または Cloud SQL for MySQL のフルマネージドの高可用性エクスペリエンスの詳細をご覧ください。
セキュリティ
MySQL のセキュリティに関する考慮事項は、さまざまな要因におよびます。データ保護に関して重要なものとして、データ冗長性メカニズムや一般的なセキュリティ プロセス(パスワードと権限、アクセス制御、ネットワーク セキュリティなど)を使用してデータを破損から保護する機能が挙げられます。Google Cloud のフルマネージド MySQL サービスである Cloud SQL for MySQL のセキュリティの詳細をご確認ください。
バックアップと復元
MySQL は、サードパーティ製ツールを含む複数のメカニズムを使用してデータのバックアップと復元をサポートしています。MySQL をバックアップおよび復元するには、mysqldump ユーティリティを使用する、バイナリログを使用した増分バックアップ、レプリケーションを使用するなどの方法があります。Cloud SQL for MySQL には、自動バックアップまたはオンデマンド バックアップを可能にする独自のバックアップと復元機能が備わっています。
柔軟性
全体的なデータベース構造の変更や既存のアプリケーションに影響を与えることなく、必要に応じてテーブルや関係の追加、更新、削除や、データ変更を簡単に行うことができます。
使いやすさ
SQL を使用して複雑なクエリを簡単に実行でき、初めて使用するユーザーがデータベースを直感的に操作できます。
パフォーマンスの最適化は、データベース管理の重要な要素です。MySQL には多くの機能とチューニング オプションが用意されており、高性能なアプリケーションを簡単に開発できます。このような機能の詳細については、MySQL のパフォーマンス最適化のヒントに関する記事をご覧ください。クエリの調整に関するこの記事では、パフォーマンスを高めるための具体的なベスト プラクティスも紹介しています。
MySQL は ACID(アトミック性、整合性、独立性、永続性)プロパティをサポートしています。これにより、エラー、障害、その他の潜在的な問題に関係なく、データの有効性を保証できます。
MySQL は汎用性が高いため、さまざまなユースケースで使用できます。以下にいくつかご紹介します。
MySQL は現在、オープンソースの LAMP スタックを使用して構築された多くのウェブ アプリケーションに不可欠な要素です。LAMP では、オペレーティング システムが Linux、ウェブサーバーが Apache、データベースが MySQL、プログラミング言語が PHP、Python、Perl のいずれかになっています。LAMP を使用すると、デベロッパーは MySQL などのデータベースから最新の情報を取得する必要がある動的ウェブ アプリケーションを構築できます。情報には、ユーザー アカウント、ユーザーの詳細、商品名、顧客レコード、売上などが含まれます。SQL を使用して、ユーザーはデータベースに保存されている情報に簡単にアクセスして操作できます。詳しくは、LAMP とウェブ アプリケーションの構築に LAMP を使用する方法をご覧ください。
昨今の多くのアプリケーションでは、多数の人による大量のデータベース トランザクションを迅速に処理できる、MySQL などのデータベースを必要としています。MySQL のような OLTP データベースは、金融取引、旅行予約、記録保持など、多くの日常的なウェブ トランザクションの基盤となっています。オンライン トランザクション処理のユースケースをサポートするため、MySQL は ACID の原則、XML と JSON のサポート、ストアド プロシージャ、クラスタリング、パーティショニングをサポートしています。また、さまざまなストレージ エンジンから選択できるため、さまざまなテーブルタイプのデータを柔軟に統合できます。
MySQL は、ユーザー、消費者情報、財務データを管理し、不正行為を防止するための傾向分析を必要とする e コマース アプリケーションでよく利用されているデータベースです。MySQL のようなリレーショナル データベースを使用して、情報をテーブル(プロダクト、顧客、注文)に整理できます。また、必要に応じてテーブルを追加することもできます。Airbnb、Uber、Netflix、Booking.com、Spotify、eBay などの世界最大級の組織のいくつかは、MySQL を使用して e コマース アプリケーションを強化しています。MySQL をハイブリッド デプロイにデプロイして、e コマースのユースケースを完全にサポートすることもできます。MySQL は構造化データ用のリレーショナルデータベースとして、また商品の詳細やマーケティング情報などの非構造化データ用の非リレーショナル データベースとして使用できます。
SaaS アプリケーションは通常 24 時間 365 日稼働しているため、最小限のダウンタイム、セキュリティ、ニーズの変化に応じたスケーリング機能が必要です。MySQL は、デプロイ、管理、スケーリングが容易なことから、SaaS アプリケーションを構築するための一般的なデータベース オプションとして台頭しています。オープンソースであるため、デベロッパーはプロプライエタリ ソフトウェアのライセンス料を支払うことなく、すぐに利用を開始できます。MySQL のグローバル コミュニティは活発で、追加機能を提供するプラグインの開発に貢献しています。
MySQL は、WordPress や Drupal などのコンテンツ管理システム(CMS)向けの一般的なデータベースです。CMS は、投稿、ページ、画像、コメント、カテゴリ、タグ、カスタム フィールド、ユーザー、その他の設定を MySQL データベースに保存します。CMS には多くの場合、1 日に数千、場合によっては数百万ものアカウントがあるため、MySQL では大規模なテーブルや複数のクエリを同時に処理できます。ユーザーの増加に合わせて、MySQL はビジネスニーズに合わせて垂直方向または水平方向にスケーリングできます。
ソーシャル メディア アプリケーションの重要な側面は、ユーザー、グループ、コメントなどのさまざまなデータストア間のつながりの必要性です。このようなユースケースではソーシャル メディア アプリケーションにリレーショナル データベースが好まれるようになり、MySQL が最良の選択肢となります。注目すべき例には、Twitter、Pinterest、LinkedIn などがあります。
Cloud SQL for MySQL がイノベーションにどのように役立つかをご覧ください。 ドキュメントを見る