6章グラフデータベースの内部
本章では、グラフデータベース実装の内部をのぞいて説明し、複雑で半構造化された密接なつながりのあるデータの格納やクエリのための他の手段とどのように違うかを示します。グラフデータベースでも1つであらゆる状況に対応するアーキテクチャパターンが存在しないのは事実ですが、本章ではグラフデータベースで見かける最も一般的なアーキテクチャパターンとコンポーネントを説明します。
本章では、いくつかの理由からNeo4jグラフデータベースを使って説明します。Neo4jは、ネイティブ処理機能とネイティブグラフストレージを備えたグラフデータベースです(ネイティブグラフ処理とストレージの説明は1章を参照してください)。Neo4jは、本書の執筆時点で最も一般的に使われているグラフデータベースであることに加え、オープンソースであるという透明性の利点があるので、冒険好きな読者がコードをさらに深く調べるのが容易です。最後に、Neo4jは著者がよく知っているデータベースでもあります。
6.1 ネイティブグラフ処理
本書では、プロパティグラフモデルを何度も取り上げてきました。今では、ノードが名前付き有向関係でつながれており、ノードと関係の両方がプロパティのコンテナの役割を果たしているという概念には慣れたでしょう。モデル自体はグラフデータベース実装全般でかなり整合性がありますが、データベースエンジンのメインメモリ内でグラフをコード化して表す方法は多数存在します。グラフデータベースがさまざまなエンジンアーキテクチャにおいてインデックスなし隣接性と呼ばれる特性を示している場合、ネイティブ処理機能を持っていると言えます。
インデックスなし隣接性を活用するデータベースエンジンでは、各ノードが隣接ノードへの直接参照を保持しています。そのため、各ノードが他の隣接ノードのマイクロインデックスとして働き、グローバルインデックスを使うよりもはるかにコストがかかりません。これはクエリ時間がグラフの全体サイズに関係なく、検索されるグラフの量にだけ比例することを意味しています。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access