第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日耐えられるシステム
エラーでたら、ロールバックする
探索が幅優先なのか深さ優先なのかを指定し、どの辺を探すのかというのをしてする
関係性を何かっていうこと(どの辺をたどるか)
jrubyやscalaで書くことも可能
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の友達にまだなっていない友達の友達を取ってくるクエリ
- -