データベース設計の分野では、マルチモデルデータベースとは、単一の統合バックエンドに対して複数のデータモデルをサポートするように設計されたデータベース管理システムです。これに対し、ほとんどのデータベース管理システムは、データの整理、保存、操作方法を決定する単一のデータモデルを中心に構成されています。 [ 1 ]ドキュメント、グラフ、リレーショナル、キーバリューモデルは、マルチモデルデータベースでサポートされる可能性のあるデータモデルの例です。
関係データモデルは、1970年にエドガー・F・コッドによって発表されて以来、普及しました。水平スケーラビリティとフォールトトレランスに対する要求の高まりにより、 2009年以降、 NoSQLデータベースが注目を集めるようになりました。NoSQLデータベースはさまざまなデータモデルを使用しており、ドキュメントモデル、グラフモデル、キーバリューモデルが人気です。[ 2 ]
マルチモデルデータベースとは、複数のモデルでデータを格納、インデックス付け、クエリできるデータベースのことです。従来、データベースはリレーショナルデータベース、ドキュメント指向データベース、グラフデータベース、トリプルストアなど、主に1つのモデルのみをサポートしていました。これらの多くを組み合わせたデータベースがマルチモデルデータベースです。これは、異なるデータモデルではなく、異なるメディアタイプ(画像、動画、音声、テキスト)の統一的な管理に重点を置くPixeltableやApertureDBなどのマルチモーダルデータベースシステムとは混同しないでください。
しばらくの間、リレーショナルデータベース以外のデータベースモデルが存在することはほとんど忘れ去られていた(あるいは無関係だと考えられていた)。リレーショナルモデルと第三正規形の概念は、あらゆるデータストレージのデフォルト標準だった。しかし、リレーショナルデータモデリングが主流となる以前の1980年頃から2005年頃までは、階層型データベースモデルが一般的に使用されていた。2000年か2010年以降は、ドキュメント、トリプル、キーバリューストア、グラフなど、リレーショナルではない多くのNoSQLモデルが普及している。地理空間データ、時系列データ、テキストデータも別個のモデルと言えるかもしれないが、インデックス付きでクエリ可能なテキストデータは、一般的にデータベースではなく「検索エンジン」と呼ばれる。
「マルチモデル」という言葉が初めてデータベースに関連付けられたのは、2012年5月30日にドイツのケルンで開催されたルカ・ガルッリ氏の基調講演「NoSQLの採用 – 次のステップは?」の中でのことでした。[ 3 ] [ 4 ]ルカ・ガルッリ氏は、第1世代のNoSQL製品が、複数のユースケースで使用できるより多くの機能を備えた新しい製品へと進化することを構想しました。
マルチモデル データベースの概念は、1990 年代初頭のオブジェクト リレーショナル データ管理システム (ORDBMS)に遡ることができ、さらに広い範囲では 1980 年代初頭のフェデレーテッドおよび統合 DBMSにまで遡ることができます。ORDBMS システムは、ドメイン固有のデータ型、関数、およびインデックス実装を DBMS カーネルに組み込むことにより、リレーショナル、オブジェクト、テキスト、空間などのさまざまな種類のデータを管理します。マルチモデル データベースは、Martin Fowler が説明したように、それぞれ異なるモデルを扱う複数のデータベース製品を結合してマルチモデル機能を実現する「ポリグロット パーシステンス」アプローチに直接対応したものです。[ 5 ]この戦略には、運用上の複雑さが大幅に増加することと、個別のデータ ストア間でデータの一貫性を維持するサポートがないという 2 つの大きな欠点があります。そのため、マルチモデル データベースはこのギャップを埋めるようになりました。
マルチモデルデータベースは、多言語永続性[ 5 ]のデータモデリングの利点を、その欠点なしに提供することを目的としている。特に、単一のデータストアを使用することで、運用上の複雑さが軽減される。[ 2 ]
マルチモデルデータを扱うためのプラットフォームがますます多く提案されるにつれ、マルチモデルデータベースのベンチマークに関する研究もいくつか行われています。例えば、Pluciennik [ 6 ] 、Oliveira [ 7 ]、UniBench [ 8 ]は、既存のマルチモデルデータベースをレビューし、マルチモデルデータベースと他の SQL および NoSQL データベースをそれぞれ比較する評価を行いました。彼らは、マルチモデルデータベースがシングルモデルデータベースよりも優れている点として、以下の点を指摘しています 。
利用可能なマルチモデルデータベースの主な違いは、そのアーキテクチャに関連しています。マルチモデルデータベースは、エンジン内またはエンジンの上の異なるレイヤーを介して、異なるモデルをサポートできます。ドキュメントとグラフをサポートするエンジンを提供する製品もあれば、キーキー ストアの上にレイヤーを提供する製品もあります。[ 9 ]階層型アーキテクチャでは、各データ モデルは独自のコンポーネントを介して提供されます。
単一のデータ ストアで複数のデータ モデルを提供するだけでなく、一部のデータベースでは開発者がカスタム データ モデルを簡単に定義できます。この機能は、高性能でスケーラブルな ACID トランザクションによって実現されます。カスタム データ モデルが同時更新をサポートするには、データベースが複数のキーにわたる更新を同期できる必要があります。ACID トランザクションは、十分なパフォーマンスがあれば、このような同期を可能にします。[ 10 ] JSON ドキュメント、グラフ、リレーショナル テーブルはすべて、基盤となるデータ ストアの水平スケーラビリティとフォールト トレランスを継承する形で実装できます。
従来の関係理論では、マルチモデルデータベースシステムを正確に記述するには不十分です。最近の研究[ 11 ]は、これらのシステムのための新しい理論的基盤の開発に焦点を当てています。圏論は、さまざまなデータモデルをモデル化、統合、変換するための統一的で厳密な言語を提供できます。マルチモデルデータをセットとして、それらの関係をセットカテゴリ内の関数または関係として表現することで、さまざまなデータモデルとその相互作用を記述、操作、理解するための形式的なフレームワークを作成できます。
{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)