読者です 読者をやめる 読者になる 読者になる

Pseudo Engineer

ソフトウェアの話とか書いてくよ

【書評】グラフデータベース

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

1年ほどの積ん読を経て、やっと読みきった(遅っ)
代表的グラフデータベースの1つ、Neo4jの開発に関わっている人が執筆している。そのためNeo4jを基準に解説されているが、内容は具体的でわかりやすい。データがどのようにストレージに保存されているのか、どうやって検索しているのかなど、実装についても触れているところがおもしろい。

”関係性”が重要なデータはグラフで表すのが適切である。グラフデータベースはその名の通り、グラフ構造でデータを保存できる。関係性はセマンティックな方向性に関係なく、双方向でストレージに保存されるため、ノード間をどちらの方向にも高速に辿ることができる。ここが一般的なリレーショナルデータベースとの大きな違いで、例えばRDBはインデックスを構築しておくことで高速に検索が可能だが、それはあくまでインデックスを順に辿る場合である。逆方向にインデックスを辿ろうとすると、テーブル全体の検索が必要になるため、とても時間がかかる。そこでいい感じにテーブル設計を行うのも可能だが、複雑になる上、スキーマ変更となると苦労するのは目に見えてる。

グラフデータベースはスキーマレスで変更にも強い。ただしグラフの構成が下手くそだと検索や拡張で苦労する。そこはRDBと同じく経験が必要かな。RDBより優れているというわけではなく、型にはまったときはすごい強力だと思う。スキーマが決まってるデータのまとまりをたくさん保存するにはRDBがいい。

アプリケーション観点ではグラフから最短経路を探索したり、SNSような人の関係性からコミュニティを見つけたり、新たなつながりを予測したりなどに応用できる。なんか使えそうなんだけど、世の中の事象をグラフで表せないか日頃から考察しないとな。それとグラフ理論を勉強したほうがいいなぁ。