第1回graphDB勉強会

第1回graphDB勉強会

The Definition of GraphDB
@doryokujin
GraphDBとは何か、その定義や特徴について丁寧に解説します。他のNoSQLとは全く異なる独自の世界に触れて下さい。

NOSQL
neo4j?

1.graphの種類

ほぼコレ
無向グラフ→有向グラフ

すべての辺の頂点は同じ。
node
edge
KV
property
スキーマレス

propertyグラフで全ての事象を現すことができる。
ほぼカバーできるため。

Hypergraph
線ではなくて集合で現すイメージ
infinitグラフ
トリニティ?(マイクロソフト)

2.graphに対するクエリ
taraversals?

頂点がグニャグニャ動く?

辺のレリーションの集合
とかをとってくる場合、ステップを考えないといけない。
探索が大事ってこと?

他のDBとは違い、nodeを特定しておいて、自分との関係から集合を取ってくる。
普通は集合から個を探すイメージ

と解釈。

全体から個を選択するか
個から全体を選択するか

全体から探すのには向いていない
(データ構造)
RDBでjoinが必要な場合向いている?

クエリタイプによってRDBむきかgraphDB向きか

localityと呼ぶ


3.graphDBとは何か


index free adjacency

indexを持っていない
クエリはnodeからnodeへの移動であり、indexをpickupしてこない
それぞれのnodeの中に近傍の情報をもっている
ダイレクトポインタを持っている

sonner?index

nodeのupdate、delete、insertについて

nodeのリレーションを操作するイメージ
でもinsertは難しい?

                                                          • -

「An Introduction to Neo4j」
Neo4jの特徴と機能を詳細に紹介します。

neotecnology


ヨーロッパで盛んに行われている

javaでかかれていて、NOSQLでは珍しくトランザクションを実装している

luceneのinndexをpropertyを利用している
(他は使っていない。珍しいDB?)

enterpriseを意識している。
トランザクションがある
・24時間365日耐えられるシステム

エラーでたら、ロールバックする

探索が幅優先なのか深さ優先なのかを指定し、どの辺を探すのかというのをしてする
関係性を何かっていうこと(どの辺をたどるか)


jrubyscalaで書くことも可能
Cypher(これは言語かな?)

javaで書いている部分をこの言語で書くと、シンプルになる

SQLライク


有償機能
マスター スレーブ
自動でのマネジメント
ズーキーパー

mongodbとはまた別

きっとそれぞれのメリットデメリットがあるのかもしれない。

オリエントDB?

shellも使える
neoclipse


NOSQLの良さは一体なんなんだろう?
何回も続けて勉強会に参加すればわかるかな?
lucneでindexはれるところがいいね。

gremlin?

neo4jについての資料を探す

あと公開されるよね?ppt

                                                        • -

An Introduction to Tinkerpop

tinkerpopとは
思想?
統一的に扱えるやつ?

blueprints pipes reXster gremlin とかいろいろある?
 
opensourceでgithubで公開している

restインターフェース

gremlin:対話的言語


graphを書くツールってことかな?

ege属性ってなに?


今後の勉強会の流れ
mixiはgraphdb使っている
productはいっぱいある。
neo4j周辺のproductを調べて発表するのがいいかも?

                                                      • -

GraphDB with Python、Tornedo, Rexster, Bulbs を使ったGraphApplicationのデモ



fluent


アクセスする方法
大まかに通り
1.ネイティブドライバ
プロダクト毎、かなりAPIに差がある

2.DB固有のHTTP
プロダクト毎、かなりAPIに差がある

3.グレムリン経由
インターフェースが共通化
java groovy

4.REXSTER経由
インターフェースは良い

ヴァージョンの追いかけが大変

とあって、どれも微妙

bulnflow(python)

ユーザーAの友達にまだなっていない友達の友達を取ってくるクエリ


デモ





  • -