ポリグロットの問題:”正しい”データベースのパラドックスを解く

(レゼク・グラスナー/)

2011年に最初に導入されたPolyglot Persistenceは、現在ではほぼ規範的な法律です。 だから、私が言わなければならないことは冒涜として出くわすかもしれません。

今日のほとんどの組織は、データを照会、分析、展開するさまざまな方法に基づいて、さまざまな異なるデータストレージテクノロジを展開する、ポリグロット また、キー/値、グラフ、時系列、JSONデータストアの成長と普及により、開発者は適切な仕事に適したデータツールを選択するための豊富な選択肢を提供しました。

しかし、開発者としての私たちへの要求は急速に進化しており、ポリグロットの永続性はすぐにペースを維持するのに苦労すると信じています。 または、多分、それはすでにあなたが今日直面している現実です。 どうして? 私たちが持っている仕事は困難であり、開発チームはすでに薄く伸びているからです。

データベースの多様性

私たちは、それぞれ独自のクエリ言語を持つデータベース技術の広いスペクトルの専門家である必要があります。 ますます多くのユースケースで効率的な結果を提供するためには、アプリケーションが必要です。 また、さまざまなデータモデルと展開を必要とする数百から数千の多様なデータ駆動型アプリケーションを構築し、管理することが求められています。 あなたはまだ別の技術やクエリ言語を習得し、維持することを想像できますか? あと五人はどうだ? あと10?

ソフトウェアは世界を食べており、私たちの開発努力は成長するだけであり、複数のデータストアを統合するための時間とコストは支持できず、開発者は必死に限られたデータベース技術に集中する必要があります。

さらに重要なことに、ユースケースは高度化しており、データに求めるものは複数のデータモデルの使用を必要とします。 クエリを計算するためにアプリケーションコードに回避策を構築することは、持続可能でもスケーラブルでもありません。 私は、組織が技術ポートフォリオを簡素化し、適切な仕事のために適切なデータモデルを選択する柔軟性を持つことを可能にするハイブリッドアプローチを模索する時が来たと信じています。

データモデルの探索

どのデータモデルがさまざまな用途に適しているのか、これらをどのように組み合わせることができるのかを理解すると役立

JSONドキュメントデータベース

JSONは非構造化データや構造化データに非常に汎用性があります。 JSONの再帰的な性質により、サブドキュメントと可変長リストの埋め込みが可能になります。 さらに、テーブルの行をJSONドキュメントとして保存することもでき、最新のデータストアはデータの圧縮に非常に優れているため、リレーショナルデータベースと 構造化データの場合、拡張可能なHTTP APIを使用して、必要に応じてスキーマ検証を実装できます。

グラフデータベース

グラフデータベースは、関係のための優れたデータモデルです。 多くの現実世界のケースでは、グラフは非常に自然なデータモデルです。 これは、関係をキャプチャし、各エッジと各頂点とのラベル情報を保持することができます。 JSONドキュメントは、このタイプの頂点データとエッジデータを格納するための自然なフィット感です。

グラフデータベースは特に”graphy”クエリに適しています。 ここで重要なことは、クエリ言語が”shortest path”や”graph traversal”のようなルーチンを実装しなければならないことです。

マルチモデルデータベース

マルチモデルデータベースは、ドキュメント、キー/値、グラフデータベースの機能を組み合わせたものです。 これにより、運用上のオーバーヘッドが少ないさまざまなデータモデルを選択できます。 単一のデータベースエンジンで複数のデータモデルを使用できるようにすると、運用上のオーバーヘッドが少なく、データ同期が少なくなるため、データモデリングの柔軟性が飛躍的に向上するため、異なるデータモデルを同時に使用する際のいくつかの課題が軽減されます。

異なるデータモデルが必要な場合でも、関連するデータを同じデータストアにまとめておくオプションが突然あります。 単一のクエリ内で異なるデータモデルを混在させることができるため、アプリケーションの設計とパフォーマンスの最適化のオプションが増加します。 また、永続化レイヤーを複数の異なるデータベースインスタンスに分割することを選択した場合(同じデータモデルを使用していても)、単一のテクノロジを さらに、データモデルのロックインが防止されます。

Polyglotソリューション

Polyglot永続性は、一つのモノリシックなデータベース技術に妥協することを避けることができたため、受け入れられました。 私たちは、クラスターがますます大きくなるにつれて、ポリグロットの永続性は複雑さ、パフォーマンスへのコスト、一貫性と可用性へのコストが犠牲にな しかし、すべてではないにしても、私たちのほとんどは、データモデルの柔軟性の利点がこれらのコストをはるかに上回っていると感じています。

今日、私たちはコストなしで多言語永続性の利点が必要であることは明らかです。 私たちは、水平方向に拡張し、さまざまなデータモデルを利用する高性能アプリケーションを構築する柔軟性を持っている必要があります。 私たちは、ネイティブで異なるデータモデル間でクエリを実行できるクエリ言語が必要です。 私たちのプロジェクトが必然的に進化するにつれて、異なるデータモデルを独自の方法で使用する自由と柔軟性を与えるためには、データベースが必

多くの先進的な組織では、プロジェクトのある部分で小さなグラフデータベースを使用したり、別の部分で大きなキー/値の配置を使用したり、グラフ、キー/値、

データの汎用性

いくつかの航空機からなる航空機フリートのような複雑なデータセットを考えてみましょう。”

最適なフリートメンテナンスのためには、組織は階層の異なるレベルでさまざまなデータを格納する必要があります。 部品またはコンポーネント名、シリアル番号、メーカー情報、メンテナンス間隔、メンテナンス日、下請け業者に関する情報、マニュアルおよびドキュメントへのリンク、連絡先、保証およびサービス契約情報など。 この種のデータ階層は、各エッジと頂点の情報を含む異なるデータポイント間の関係をキャプチャするため、グラフデータベースには明らかに自然に適合 しかし、グラフデータベースは、艦隊の保守チームからの重要なクエリに効率的に答えるのに理想的ですか?

グラフデータベースは、質問のためにうまく機能します: “特定のコンポーネント内のすべての部品は何ですか?”そして、それは質問に答えるのを助けることができるかもしれません:”壊れた部品Aを考えると、部品を含み、保守手順がある航空機の最小構成要素は”しかし、グラフデータベースは、この航空機のどの部分が来週メンテナンスを必要とするかなどの一般的な質問ではやや役に立たないでしょうか?”グラフ構造がクエリに適合しないためです。

しかし、そのグラフデータをJSONドキュメントとして保存し、任意のデータを頂点やエッジに関連付けることができれば、その質問はドキュメントクエリで簡単に答えることができます。

ポイントは、そのシステム内のすべてのクエリを高速に実行するには、多くの場合、マルチモデルデータベースと呼ばれる、さまざまなデータモデルとして情報を格納できるデータベースが必要であるということです。 そのグラフデータベースが頂点データに二次索引を実装できればいいのではないでしょうか?

しかし、それは本質的にマルチモデルデータベースになるでしょう。 それは良い最初のステップです。 理想的なシナリオは、グラフ、ドキュメント、およびキー/値データモデルをすべて同時に使用して、最初にメンテナンスが予定されている部品を見つけ、そ 別のデータモデルにアクセスするには、データベースではなくクエリを変更するだけです。 それが我々が行く必要がある場所であり、すぐに。

このフリートのメンテナンス例はユニークではなく、特別なものでもありません。 開発者と話すことで、私はそれが開発者が見ているユースケースの増加と多様性のための単なる良いアナログであることを発見しました。 私の視点から見ると、ポリグロット永続性の基本的な学習は、適切なデータモデルを適切なジョブに使用する必要があることです。 また、データベース技術の革新により、同じデータベースエンジンに複数のものを含めることができます。 さもなければ、私達はPolyglotの持続が私達を限り、結局私達の競争相手の後ろの私達を置く自身の妥協であることを認める必要がある。

著者について: Max NeunhoefferはArangoDBのシニア開発者およびアーキテクトです。 彼の学術的キャリアの中で、彼はコンピュータ代数における新しいアルゴリズムの開発と実装に16年間働いた。 数年前、彼はNoSQLデータベースに焦点を移しました。 ArangoDBでは、Kubernetesへのデプロイを含む「分散されたすべてのもの」を担当していますが、復元力、フェイルオーバー、スケーラビリティも担当しています。 特に、分散トランザクション、自己回復型分散システム、パフォーマンスチューニングなどの分野で活躍しています。 彼の日に48時間があれば、彼はゴルフをし、セーリングに行き、ピアノを演奏し、新しいプログラミング言語を発明しました。

タグ:ArangoDB,graph,json,key-value,マルチモデルデータベース,ポリグロット,ポリグロット永続性,リレーショナル

コメントを残す

メールアドレスが公開されることはありません。