MySQLとPostgreSQLのそれぞれの特徴や違いを4分で解説
スポンサードリンク
おはようございます。Shotaです。
データベースはシステム開発やアプリ開発において必要不可欠な要素です。「どのデータベースを使えばいいのかわからない」と悩んでいる開発者の方も少なくないでしょう。データベースにも種類があって、それぞれ長所や短所は異なります。自分のサービスにマッチしないデータベースを選んでしまうと、開発に支障をきたしてしまう可能性があります。
特にMySQLとPostgreSQLはよく比べられると思います。両者ともオープンソースのデータベースで、豊富かつ優秀な機能を揃えております。
今回の記事では、MySQLとPostgreSQLのそれぞれの特徴や違いを徹底解説していきます。
それでは早速、本題に入りましょう。
MySQL
MySQLは、Oracle社が開発しサポートするオープンソースのデータベースです。原則無料で使えます。世界で最も使われています。
商用ライセンスを取得すると、完成したソフトウェアを無償で公開する必要がなく、ソフトウェアが自由に使われることがないという点で大きな差があります。商用ライセンス版では、技術サポートを受けられます。
MySQLはリレーショナルデータベース(Relatioal DataBase, RDBと表記)といって、データを表形式で扱います。
MySQLは高い柔軟性や拡張性を持っていて、複数のテーブルを結合しやすいです。処理速度が高速で、使いやすいです。
PostgreSQL
PostgreSQLはオープンソースのリレーショナルデータベースです。すべてオープンソースで無償で利用されます。
MySQLと同じくリレーショナルデータベースで、細かい違いはありますが大まかな扱い方はどちらも同じです。
PostgreSQLはMySQLよりも機能性が高く、使い方が多少難しい文できることが多い特徴があります。より具体的に言えば、プログラミングの際にデータベースの処理を組み込みやすいことが挙げられます。
PostgreSQLはテーブルで継承(一度定義したロジックを使い回せる機能)が使えるので、オブジェクト指向プログラミング言語(例:TypeScript, Python)との相性が最高です。
比較ポイント 2選
それでは、MySQLとPostgreSQLを比較する際に重要なポイントを2つ紹介していきます。
DDL(データ定義言語)操作のノンブロッキング
見出しだけでは何を言っているかわからないと思いますので、初心者にも理解できるようにわかりやすく説明します。
✅DDL(Data Definition Language)――データベース内のデータとその関係性を記述する言語
✅ノンブロッキング(non-blocking)――通信(ある特定の処理)の最中でも処理が進むけど、通信が終わらないとできない処理になったら中断して待つこと
MySQLには、多くのDDLの操作を中断せずに実行できるメリットがあります。また、対象のColumn(行)のみをスキャンする場合は、テーブルをゼロから作る必要がないので処理速度が高速で、サーバ全体の負荷を軽減できるメリットがあります。
PostgreSQLの場合だと、データベースを変更する際にブロックされてしまうので変更だけではなく参照もできなくなります。その際、pg_pack
を使って最小限のロックでデータベースを変更できます。
テーブル結合(JOIN
)のアルゴリズム
次はテーブル結合を比較します。よく利用されるテーブル結合のアルゴリズムには次のようなものがあります。これも専門用語が多いので、わかりやすく説明します。
I:ネステッドループ結合(Nested Loop Join)―テーブルの一部をくっつける。
II:ハッシュ結合(Hash Join)―一方のテーブルの比較対象の列の値からハッシュテーブル(ある値と、それに対応する値のペアを一つの単位としてデータを格納し、キーを指定すると対応する値を高速で取得できる構造)を作り、もう一方のテーブルの列の値で探す
III:ソートマージ結合(Sort Merge Join)―両テーブルのColumnを並べ替えして、先頭から順にくっつける
MySQLはIしか対応していません。MySQLには「複雑なアルゴリズムはなるべくサポートしない」という設計思想があるからです。
MySQLはWebアプリに使われる前、もともとは組み込み用のシステムで使われていました。組み込み機能の非常に容量が小さいディスクやメモリの中でDBを稼働させる必要があるので、複雑なアルゴリズムをなるべく削ぎ落とす方針で設計されてきたのです。
一方で、PostgreSQLは上記のIからIIIの方法すべてをサポートしております。
まとめ
今回の記事では、MySQLとPostgreSQLのそれぞれの特徴や違いを4分で解説しました。
今回の記事を参考に、MySQLやPostgreSQLについてより一層理解を深めていただければ幸いです。
今回の記事はこれで終了です。