【書評】グラフデータベース
グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門
- 作者: Ian Robinson,Jim Webber,Emil Eifrem,佐藤直生,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/03/25
- メディア: 大型本
- この商品を含むブログ (2件) を見る
1年ほどの積ん読を経て、やっと読みきった(遅っ)
代表的グラフデータベースの1つ、Neo4jの開発に関わっている人が執筆している。そのためNeo4jを基準に解説されているが、内容は具体的でわかりやすい。データがどのようにストレージに保存されているのか、どうやって検索しているのかなど、実装についても触れているところがおもしろい。
”関係性”が重要なデータはグラフで表すのが適切である。グラフデータベースはその名の通り、グラフ構造でデータを保存できる。関係性はセマンティックな方向性に関係なく、双方向でストレージに保存されるため、ノード間をどちらの方向にも高速に辿ることができる。ここが一般的なリレーショナルデータベースとの大きな違いで、例えばRDBはインデックスを構築しておくことで高速に検索が可能だが、それはあくまでインデックスを順に辿る場合である。逆方向にインデックスを辿ろうとすると、テーブル全体の検索が必要になるため、とても時間がかかる。そこでいい感じにテーブル設計を行うのも可能だが、複雑になる上、スキーマ変更となると苦労するのは目に見えてる。
グラフデータベースはスキーマレスで変更にも強い。ただしグラフの構成が下手くそだと検索や拡張で苦労する。そこはRDBと同じく経験が必要かな。RDBより優れているというわけではなく、型にはまったときはすごい強力だと思う。スキーマが決まってるデータのまとまりをたくさん保存するにはRDBがいい。
アプリケーション観点ではグラフから最短経路を探索したり、SNSような人の関係性からコミュニティを見つけたり、新たなつながりを予測したりなどに応用できる。なんか使えそうなんだけど、世の中の事象をグラフで表せないか日頃から考察しないとな。それとグラフ理論を勉強したほうがいいなぁ。