はじめに
EDW2019にて、某大手投資銀行がサービス(機能)ごとにアプリケーションを作り、それを組み合わせてシステムを作成するマイクロサービスアーキテクチャ実現のための取り組みについて事例を発表していました。その際、日本ではあまり聞いたことがないワードが使われていました。それは、ポリグロット・パーシステンス(polyglot persistence)とマルチモデルデータベース(Multi Model Database)です。これら2つのワードは優れたマイクロサービス型システムを構築する上で重要なコンセプトです。マイクロサービスが今後のスタンダードになることを想定し、これら2つのワードが日本でもっと認知され、皆様がシステム構造を検討する際の参考となるようにご紹介します。
ポリグロット・パーシステンスとは
ポリグロット・パーシステンスについて説明する前に、まずマイクロサービスと従来型のシステムの構造の特徴について理解する必要があります。
従来型のシステムは、1つのソフトウェアの中にユーザインターフェースとビジネスロジックを組み込み、全てのロジックで共有するデータベースを持つ形で実現されています。そのため、各機能をバラすことが難しく、1システム=1種類のデータベースが当たり前でした。
一方、マイクロサービス型のシステムは、小さな機能(サービス)を複数組み合わせることで1つのシステムを構築します。各機能が完全に独立しているため、機能ごとに異なる技術(プログラミング言語やデータベースの種類等)を使うことが出来ます。これはマイクロサービスアーキテクチャを採用する際のメリットの1つです。
<従来のシステムとマイクロサービスの違い>
マイクロサービスにおいては、もちろん従来のシステムと同様に1種類のデータベースだけを使うこともできますが、その特性を最大化するため「データの特性ごとに適材適所のデータベースの種類を使おう」というコンセプトが生まれました。
それが「ポリグロット・パーシステンス」です。
実際、マイクロサービスアーキテクチャを採用している欧米の先進企業はすでに、機能ごとにデータベースをうまく使い分けているようです。
<ポリグロット・パーシステンスの例(ECプラットフォーム)>
ポリグロット・パーシステンスの考え方は様々なデータに対応することができる一方で、各データがそれぞれの特性に応じたデータベースで個別に管理されるため、以下のような懸念事項があります。
- データがサイロ化し横断的に活用しづらい
- データの一貫性がとりづらい
- データの操作が複雑になる
マルチモデルデータベースとは
リレーショナル、キー・バリュー、ドキュメント、グラフなどの異なるデータ構造で管理されているデータを、それぞれのデータ構造のまま取り扱うことができるDBMSです。
マルチモデルデータベースを用いることで、物理的にはサイロ化しているデータベースを1つのデータベースのように扱うことができるため、データの横断的な活用や一貫性の維持が容易になります。またデータベースごとにDBMSを用意する必要がなく、一度の命令で複数のデータベースを操作することができます。
<従来とマルチモデルデータベースの比較>
おわりに
今回はポリグロット・パーシステンスとマルチモデルデータベースについてご紹介しました。
データの特性や管理/処理要件に応じて、データ構造やデータベースも選ぶ時代になってきました。それぞれの強み、弱みを知り、適材適所に使用することが、より良いシステムを作るコツになっていきそうです。