インフラ

MariaDBとMySQLとPostgreSQLどれを選ぶべきか選択フローチャート

更新日

MariaDBとMySQLとPostgreSQL、どれを選べば良いか

それぞれのDBの良い点をリストして、どのDBが良いのか分からないという記事はよく見かけると思います。
ここでは、貴方にどのRDBが良いか、結論として得られるフローを提供します。
なお、ここではあくまでこの3つのRDBで悩んでいる場合のみ想定し、それ以外のNO SQL系DB等は検討対象に入れていないものとします。


RDB選択フローチャート

問1 WordPressとごく一般的なWebアプリだけを運用するつもりだ。JSON型データやGISのサポートは不必要
はい => MariaDB
いいえ => 問2

問2 WordPressの活用は暫く考えていない。機能要件はただのWebアプリを超える部分がある(モバイルアプリも開発したい / データは構造化し切れないのでJSONが適切な部分もある / GIS(地理情報システム)の要件も入ってくる / より大規模なデータ量を扱いパフォーマンスが重要になる)
はい => PostgreSQL
いいえ => 問3

問3 WordPress運用基盤と他システムに使おうとしているRDBは別々の基盤になっても、人的・サーバー的運用コストの上昇は問題ない
はい => MariaDBとPostgreSQL
いいえ => MariaDB


選択フローの背景理由


MySQLよりMariaDBを選ぶ理由

– MySQLはOracle配下に入った事に対する懸念等で、OSSのLinuxディストリビューションの多くはMariaDBの方を採用している
– MySQLの元開発者がMariaDBを開発した&Oracleは内部にOracleという商品RDBもあるという事もあって、結果MySQLを全力で機能拡張させるの難しい立場。という事もあり現在MariaDBの方がMySQLより高機能になっている
なので、基本的に、MariaDBかMySQLかで悩んだ場合は、その答えはMariaDBを選ぶで問題ないです。


MariaDBを選ぶ理由

– WordPressはMariaDBとMySQLしかサポートしない(=PostgreSQLは正式サポート外)
WordPressはWebサイトでのシェアが35%を超え、WordPressだけでシステムを作る事はなくても、WP対応出来る基盤の保持は必要になる為
– MariaDB(MySQL)はDB管理ツールとしてPostgreSQLより優れたツールがある(WorkBenchA5:SQL Mk-2等)。
– 日本ではMariaDB(MySQL)経験者の方が多い(海外に比べPostgreSQL経験者は少ない)
– PostgreSQLと両方を維持するのは人的・サーバー的維持コストが上がってしまう


PostgreSQLを選ぶ理由

– PostgreSQLはJSON型はNative Indexをサポートしている為、中途半端なVirtual Columnという仕組みでIndexを模してるMariaDB(MySQL)とは、JSON型で速度が必要になった場合速度が断然違う(速い)
– REST APIを提供するPostgREST、GraphQL APIを提供するGraphileといったものがあり、JSON利用が簡単&性能が出る=モバイルアプリ&Single Aage App開発がより少ない負担で出来る
PostGISによるGIS機能のサポートが充実
– MariaDBより機能が多い
– 処理性能がMariaDBより速い
– データのエラー判定がMariaDBより厳格で、想定外の値処理による不正な値処理の正常扱い通過が起きにくい


ちなみに世の中の実情は?

2020/02時点の求人数比較です。

Indeed日本

MySQL14125
PostgreSQL7976
MariaDB394

Indeed米国

MySQL14438
PostgreSQL5969
MariaDB643

green-japan

MySQL896
PostgreSQL398
MariaDB62

性能が採用を決めるものではない、MariaDBは後発で先にMySQLを使っている所は切り替えられない、とした上で、まだMySQLの方が圧倒的に数は多いですね。
性能もあるけど、既に存在する企業では、スイッチする&混ぜる、インセンティヴが足りないか。

PostgreSQLは日本より海外の方が採用進んでいるだろうと思っていましたが、意外と日本の方がシェアが高い状態でした。
マイナーという割合ではなく、案件によってはいつ巡り合ってもおかしくない割合があります。


関連記事

  1. MariaDBのインストール・設定方法
  2. PostgreSQLのインストール・設定方法