MySQL とは

MySQL は世界で最も人気のあるオープンソースのリレーショナル データベースの一つです。この人気は、e コマースサイト、ソーシャル メディア、および DrupalJoomlaMagentoWordPress などのアプリケーションで広く使用されているためです。 また、広く利用されている Linux-Apache-MySQL-PHP/Perl/Python(LAMP)ウェブ アプリケーション スタックにも欠かせない要素であり、多くの一般的なアプリケーション、ウェブサイト、サービスで利用されています。これは、DB-Engines で世界で 2 番目に人気のあるデータベースです。

Google Cloud のマネージド リレーショナル データベース、Cloud SQL for MySQL が運用コストの削減と効率化にどのように役立つかをご覧ください。

MySQL の定義

MySQL はオープンソースのリレーショナル データベース管理システムです。他のリレーショナル データベースと同様に、MySQL では行と列で構成されるテーブルにデータが保存されます。ユーザーは、構造化クエリ言語(一般に SQL と呼ばれます)を使用して、データの定義、操作、制御、クエリを行うことが可能です。MySQL はオープンソースであるため、25 年以上にわたってユーザーと緊密に連携して開発された多くの機能が含まれています。

MySQL ソフトウェアはオープンソースです

MySQL はオープンソースです。GNU General Public License の条件に基づき料金なしで使用できます。また、ソフトウェアのソースコードは自由に修正できます。このため、MySQL は MariaDBPercona Server for MySQL など、他種のデータベースにフォークされ、他のライセンスで商用利用することも可能です。

リレーショナル データベース

MySQL は、リレーショナル データベース管理システム(RDBMS)と呼ばれるデータベースのカテゴリに属します。リレーショナル データベースとは、データを列と行の 1 つ以上のテーブル(「関係」)に格納している事前定義済みの関係でデータを整理した情報のコレクションで、さまざまなデータ構造が互いにどのように関係しているか簡単に確認して理解できます。関係は、テーブル間の相互作用に基づいて確立された、異なるテーブル間の論理接続です。

履歴

MySQL は、Edgar F. Codd の論文で説明されているリレーショナル モデルに基づいた商用プログラミング言語(SQL)の拡張機能として作成されました。スウェーデンの企業 MySQL AB(David Axmark、Allan Larsson、Michael Widenius により設立)は、1995 年に MySQL を開発、リリースしました。「MySQL」という名前は、Michael Wildenius の娘の名前である「My」と「SQL」を組み合わせたもので、構造化クエリ言語(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 の別のオープンソース ディストリビューションで、MySQL との緊密な互換性を維持することを目的としています。MySQL のバージョンと MySQL 全体にわたるエコシステムについて詳しくは、こちらをご覧ください。

ユーザー インターフェース

MySQL にはグラフィカル ユーザー インターフェース(GUI)またはコマンドライン インターフェース ツールからアクセスできます。

グラフィカル ユーザー インターフェース(GUI)

GUI は、コマンドライン インターフェースでテキストベースのコマンドを使用するのとは対照的に、ボタンとインタラクション ウィジェットで構成される統合環境を提供し、アプリケーションのクエリと開発を視覚的に行います。MySQL オープンソース プロジェクトとサードパーティ インテグレータによって開発された MySQL GUI は数多くあります。そのなかで特に人気のあるツールの一つが MySQL Workbench です。これもオープンソースで、MySQL AB によって開発されました。他にもよく知られている GUI には、phpMyAdmin(ウェブ アプリケーション開発で人気のある管理ツール)や HeidiSQL( MySQL 以外のデータベースの管理に使用できるオープンソースの管理ツール)があります。

コマンドライン

MySQL にはコマンドライン ツールからもアクセスできます。 これらのツールは MySQL ユーティリティとも呼ばれ、MySQL ディストリビューションに付属し、MySQL シェルや Percona ツールキットなどの他のコマンドライン インターフェース ツールでテキスト コマンドを使用して呼び出されます。

MySQL のデプロイ

ユーザーは、オープンソース コードを使用して独自の物理マシンに MySQL を手動でデプロイできます。また、パッケージ化されたディストリビューションのいずれかをダウンロードして MySQL をデプロイすることもできます。MySQL は主に、単一のインスタンスまたはマシンにインストールされ、パフォーマンスを改善する主な方法として垂直方向のスケーリングが行われます。ただし、1 つのプライマリ ノードと、インスタンスに障害が発生した場合にプライマリ ノードに昇格できる多数のセカンダリ ノードを備えた複製した構成で MySQL を設定できます。

MySQL をホストするもう一つの方法として、クラウド サービス プロバイダ(CSP)を使用する方法があります。クラウド サービス プロバイダの環境に MySQL をデプロイする方法はいくつかあります。1 つは、仮想マシンに MySQL を直接インストールして、自己管理することです。もう 1 つは、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 は他のアプリケーションやウェブサーバーなどと一緒に、デスクトップやノートパソコンで快適に実行できます。ほとんど意識する必要はありません。マシン全体を 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ウェブ アプリケーションの構築に使用する方法をご覧ください。

オンライン トランザクション処理

現在、多くのアプリケーションで、多数のユーザーからの多数のデータベース トランザクションを迅速に処理できる、MySQL などのデータベースが必要です。MySQL などの OLTP データベースは、金融取引、旅行の予約、記録保管など、日々のウェブ トランザクションの基盤となっています。MySQL は、オンライン トランザクション処理のユースケースをサポートするために、ACID の原則、XML と JSON のサポート、ストアド プロシージャ、クラスタリング、パーティショニングに準拠しています。また、さまざまなストレージ エンジンから選択するオプションも用意されており、多様なテーブルタイプのデータを統合できます。

e コマース

MySQL は、ユーザー、消費者情報、財務データを管理し、トレンドを分析して不正行為を防止する必要がある e コマース アプリケーションでよく利用されているデータベースですMySQL などのリレーショナル データベースを使用して、情報をテーブル(製品、顧客、注文)に整理し、必要に応じてテーブルを追加できます。Airbnb、Uber、Netflix、Booking.com、Spotify、eBay などの世界最大の組織では、MySQL を使用して e コマース アプリケーションを強化しています。MySQL はハイブリッド デプロイでも可能で、e コマースのユースケースを完全にサポートします。MySQL は構造化データ用のリレーショナル データベースとして、また、非構造化データ用の非リレーショナル データベース(商品の詳細やマーケティング情報など)としても使用できます。

SaaS アプリケーション

通常、SaaS アプリケーションは 24 時間 365 日稼働しているため、ダウンタイムを最小化、セキュリティの確保、ニーズの変化に応じたスケーリングが求められます。MySQL は、デプロイ、管理、スケーリングが容易であるため、SaaS アプリケーションを構築する際によく使用されるデータベース オプションとして登場しました。オープンソースであるため、独自のソフトウェアのライセンス料を支払うことなく、すぐに開発を始めることができます。MySQL グローバル コミュニティは活発で、追加機能を提供するプラグインに貢献しています。

コンテンツ管理

MySQL は、WordPress や Drupal などのコンテンツ マネジメント システム(CMS)でよく使用されるデータベースです。CMS は、投稿、ページ、画像、コメント、カテゴリ、タグ、カスタム フィールド、ユーザーなどの設定を MySQL データベースに格納します。CMS には一般に毎日数千から数百万ものアカウントがあるため、MySQL を使用すると、大きなテーブルと複数のクエリを一度に処理できます。オーディエンスの拡大に伴い、MySQL ではビジネスニーズに合わせた垂直方向または水平方向のスケーリングが可能です。

ソーシャル メディア

ソーシャル メディア アプリケーションの重要な側面は、ユーザー、グループ、コメントなどのさまざまなデータストア間の接続が必要なことです。この種のユースケースでは、ソーシャル メディア アプリケーションにリレーショナル データベースが好まれ、MySQL がトップの選択肢となっています。重要な例として、Twitter、Pinterest、LinkedIn などがあります。

MySQL を試す準備はできましたか?

Google Cloud は、MySQL のフルマネージド サービスである、Cloud SQL for MySQL を提供しています。
Cloud SQL の詳細

Cloud SQL for MySQL がイノベーションにどのように役立つかをご覧ください。 ドキュメントを見る

Google Cloud は、オンプレミスのデータセンターの廃止から SaaS アプリケーションの実行、基幹業務システムの移行まで、お客様のビジネスニーズに合わせて構築されたマネージド MySQL データベースを提供します。