valid,invalid

関心を持てる事柄について

グラフDB(Neo4j)を試してみる (1)グラフDBとは

会社の勉強会でグラフDBが紹介されて興味を持ったので実践してみた。
全然知らない領域だったのでいろいろ整理したい。

グラフDBとは

まずグラフDBとは何か。

グラフ理論をベースとし、ノード(頂点)とエッジ(関係)を構成要素とするNoSQLデータベースの一つ。関係性の表現が目的のため、その探索が用意。また、ノード・エッジはプロパティ(属性)を持つことができる。

とりあえずこんな理解。

一般的な「グラフ」とは意味合いが違うけれども、計算機科学や数学では「グラフ」といえばこちらを指すことが多いのだろうか。ちなみにWikipediaグラフ理論がだいぶ参考になった。

グラフ理論(グラフりろん、graph theory)は、数学の一分野。ノード節点頂点[1])の集合とエッジ[2])の集合で構成されるグラフの性質について研究する学問である。なお「エッジ」をリンク[3]という場合もある。コンピュータのデータ構造アルゴリズムなどに広く応用されている。  
Wikipedia グラフ理論

このグラフ構造はRDBでも実現できるが、リレーションを辿る=結合の繰り返しになるのでクエリが複雑になったりパフォーマンスがひどいものになったりする。FacebookTwitterに代表されるようなリレーションをコアとするアプリケーションでのデータ管理や表現への注目の高まりに応じて、グラフDBも人気が出始めているらしい。

Neo4j

試してみたグラフDBはNeo4j。この他にもいろいろあるらしいけど未知。
グラフデータベース、NOSQL、Neo4jを見ると非OSSが多い印象。

TinkerPop

グラフDBを利用する為のフレームワーク、製品群。
ややキモいキャラクターが各プロダクトのトレードマークっぽい。
TinkerPop - http://goo.gl/zpCCC

今回はこのうちBluePrintsとGremlinを使ってグラフDBへアクセス、読み書きを行ってみた。

長くなりそうなのでコードは次の記事で書く。