< All Blog

Book Review: "Graph Databases" 2nd Edition

October 01, 2021

本記事では、グラフデータベース及び Neo4j について理解するために適した入門書である 『Graph Databases』2nd Edition について紹介します。

概要

本書は 2015 年 6 月に出版されました。主に Neo4j の内部実装やクエリ言語の Cypher を紹介しながら、グラフデータベースにおけるデータモデリングの手法やリレーショナル・データベースシステムとの違いについてスポットを当てた書籍です。

Neo4j がメインの技術要素となっていますが、初めてグラフデータベースについて触れる方にとっては良い入門書となるでしょう。また、他のグラフデータベースやグラフ理論についての造詣がある人が、Neo4j について知りたい場合にも適しています。

筆者は、Neo4j 創設者兼 CEO である Emil Eifrem、Neo4j の Chief Scientist である Jim Webber、そして元 Neo4j 現 AWS Neptunre の Principal Graph Architect である Ian Robinson らです。

想定している Neo4j のバージョンが流石に 2021 年と比べると古いですが、そもそもチュートリアル本ではないのでコード数が少なく、グラフデータベースのデータモデリング手法や内部実装に焦点を当てた本ですので、内容は色褪せていません。

一方で、題名に反して一般的なグラフデータベースの比較検討などを期待してしまうと、Neo4j 特有の話が多くて期待はずれになってしまうかもしれません。

Chapter 1

"Chapter 1: Introduction" は導入章です。グラフとは何か、グラフデータベースとは何か、グラフデータベースの強みは何かについて簡単な紹介がなされています。

また、グラフデータベースに対してグラフアルゴリズムを適用するプロセスである Graph Compute Entines についても触れています。

Chapter 2

グラフなどの関連性(リレーション)を持つデータをモデリングするとして、リレーショナル・データベース、NoSQL、そしてグラフデータベースそれぞれでモデリングしたときの比較検討を行っています。

グラフデータベースはもちろん銀の弾丸ではありませんが、関連性を持つデータをモデリングする場合には、リレーショナル・データベースや NoSQL よりも優れている理由がなぜかについて説明されています。

Chapter 3

Neo4j グラフデータベースのクエリ言語である Cypher を用いて、実際に幾つかのパターンをデータモデリングしながら解説をする章です。Cypher の基礎について理解できます。また、簡単なグラフネットワークのデータモデリングを通して、土地勘を掴みます。

Chapter 4

前章をより発展させて、時系列データのデータモデリングのパターン紹介や、よくあるノードとリレーションのモデリング時のベストプラクティスについて紹介しています。

その上で、本番環境にグラフデータベースを利用したアプリケーションをデプロイするにあたって、サーバーのクラスター構成をどのようにするか、キャッシュやロードバランス戦略についてどうするか、キャパシティ・プランニングについてはどうするかといった内容について触れられています。

データのインポート方法といった実践的な内容も含んでいます。

Chapter 5

実際にグラフデータベースを用いて作成されたアプリケーションのパターンについて紹介されています。

特に、Social Recommendations (Professional Social Network)、Authorization and Access Control、Geospatial and Logistics の三分野については、具体例と共に深堀りした考察がなされています。

Chapter 6

グラフデータベース、特に Neo4j の内部実装について紹介されています。

ストレージにどのようにノードやリレーションの実態が保存されているか、データベースに対して利用できる公開インターフェースには何があるか、トランザクションやスケール性についてはどうかといった内容について説明されている貴重な章です。

Chapter 7

ダイクストラ法や Triadic closure と呼ばれるグラフ理論における概念、Local bridge について説明しています。

Appendix A: NoSQL Overview

NoSQL の具体的な種類である Document Stores / Key-Value Stores / Column Family / Graph Database のアーキテクチャについて比較検討がなされた追加の章です。Appendix の扱いでは有りますが、NoSQL についての理解を深めるためにおすすめの章です。

最後に

以上、『Graph Databases』2nd Edition について紹介しました。

Recommended Posts

  1. Neo4j Causal Clustering 紹介

    April 22, 2022
    本記事では、Neo4j における Causal Clustering (因果クラスタリング) について説明します。 クラスタリングの目的 データベースを運用する場合、単一のインスタンスを稼働させるか、Causal Clustering を用いてクラスター構成を組むか(クラスタリング)のいずれかを選択することになるでし…
  2. Graph Database 101

    March 21, 2022
    本記事では、グラフデータベースとはそもそも何なのかについて、ソフトウェアエンジニアリングを習いたての人や、他業種からきた人にも伝わる説明を目指してみます。 データベースとは そもそも、データベースとは何でしょうか。 Web エンジニアであれば、MySQL や PostgreSQL などのリレーショナルデータベース(以…