今回は、データベースマネジメントシステム(DBMS)を用途に合わせて変えるべきか否か、という話をします。
ちょっと前から用途に合わせてDBMSを変えるお客様は増えてきている印象なので、今更感は拭えませんが…。
某パブリッククラウドベンダーのA社(というよりはO社以外?)は、「用途/やりたいことに合わせてDBMSは変える方が良い」というコンセプトを以前から強く打ち出しており、用途に応じたDBMSサービスを提供しています。
一方、某O社は「1つのDBMSで全ての用途を包含して管理するのだ」というコンセプトを打ち出しています。
さて、どちらの方が良いのでしょうか?
まず、1つのDBMSのみでさまざまな用途に対応するケースを見てみます。
いわゆる、業務システムごとにデータベースを持たせるとして、一般的なOLTP処理、データ分析処理、JSON等のドキュメント処理、ブロックチェーン処理で使用されるさまざまな形式や処理パターンのデータを1つのDBMSで処理させる形になります。
こちらのケースでは、導入・構築手順、クエリ発行イメージ(あくまでイメージ)、運用・監視の方式について、1つのやり方でほぼほぼ賄えることが一番のメリットです。
また、使用・購入するライセンスも1社からとなり、ライセンス管理もそこまで複雑ではないです。
インフラエンジニアとしてはありがたい話ですね。
ただ、当たり前の話ですが、それぞれの用途で使用するデータの論理/物理配置の仕方、発行するクエリは、それぞれの用途ごとに変えてあげる必要があります。(※これを怠ると期待しているパフォーマンスが出ない、ということにつながることもあります。)
また、機能面、パフォーマンス面ではそれぞれの用途に特化したDBMSに劣るケースもあります。(詳細は、別途技術ブログにて掲載予定です。)
もし機能やパフォーマンスがそれほど重視されず、包括ライセンス等を持っていれば、こちらの形が望ましいかもしれません。
次に、用途ごとにさまざまなデータベース(RDBMS)を使い分けるケースを見てみましょう。
上記に記載した内容の逆の話になるだけですが、念のため説明すると、
用途ごとに、例えば、OLTPはPostgreSQL、データ分析はAWS Redshift、ドキュメント処理はMongoDB、といった感じで、様々なDBMSを使用する形になります。
こちらのケースは、当然、各DBMSごとに設計、構築、運用、監視の方式が異なるため、1つのDBMSで完結させる場合と比較すると、それぞれのDBMSごとに検討が必要となり、どうしても手間だなぁ、と感じてしまうことだと思います。(特にインフラエンジニアの方にとっては)
また、使用ライセンスについても複数社から購入という形となるので、この点も手間となります。
しかし、最近はパブリッククラウドのDBaaS等を使用するケースも増えてきているので、設計、構築、ライセンス管理の手間は以前と比べてそれほどではない印象です。
機能面、性能面でも用途に特化したDBMSの為、データ管理、クエリ発行のお作法が異なる点を乗り越えれば、期待した動作とパフォーマンスを得られます。
ただ、使用するプロダクトによってはナレッジが少ない、問題が発生した時の調査がやり辛い等の課題もあります。
(こちらも、パブリッククラウドのDBaaSであれば、多少は苦痛が少なくて済むかもしれません。)
個人的には、『用途ごとにDBMSを変える方』推しです。
確かに、慣れ親しんだOracleやPostgreSQL、SQL ServerでJSONの処理ができたり、地理情報を扱えたりすることはありがたい、素晴らしいことですが、データの管理方法やクエリの発行の仕方、チューニング手法が異なるなら、無理しなくてもいいのでは、と思ってしまいます。
その一方、色々と覚えることは増えてしまいますが、何より、新しい学びの機会を得られることと、それによって既存のDBMSに対する見方・理解も深めることができるのでは、などとも考えています。
最後に、本件について、詳しく話を聞きたい、議論したい、という方は、弊社までお問い合わせいただければと思います。