SlideShare a Scribd company logo
1 of 26
Blueprints & Titan




                     永江 哲朗
プロパティグラフモデル
                                                 プロパティ
     name=wheel
                  part_of ( = タイプ)   name=car
                                     color=red



      ノード              エッジ

構成要素
 ・ノード (node; 別名 : 頂点 )
 ・エッジ (edge; 別名 : 辺 )
   方向とタイプを有する。 ( ラベル付きで有向 )
 ・プロパティ (property; 別名 : 属性 )
   ノードとエッジにおける属性
グラフ トラバーサル
・グラフ トラバーサル (Graph Pattern Matching with Gremlin 1.1
  http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/ の図を利用 )




                                     knows




   上記の例でノード 1 から出て” knows” という条件でエッジを移動し、ノード 2, 8
    に入ります。このようにエッジの向きやエッジのラベルなどをもとにグラフ
    を移動することを「グラフ トラバーサル」といいます。
グラフ トラバーサルを使ったリコメンデー
            ション
リコメンデーションの例
(“The graph traversal pattern” (http://arxiv.org/abs/1004.1001/ )” Content-Based
   Recommendation に具体名を追加 )
                                                   feature                     8
                                                                            feature
                          Goal                                                  『江戸』
                               2         likes          6
                           resource                   person
               likes
                                 『百日紅』   likes
                           start                                  feature
        1         likes         3          likes         7
      person                 resource                  person

                 likes     『江戸名所図会』



                                4        feature           7
                            resource                    feature

     “( トラバーサル開始ノード ) –( エッジ :feature)-> ( ノード ) <–( エッ
     ジ :feature)- ( トラバーサル終了ノード )” という関係をノード 3 に適用すると
     、ノード 2 がみつかります。
グラフ DB
● グラフ DB の特徴
 ・テーブルにデータを保存しない。グラフというデータ構造だけがあります。
 ・ノードとエッジは隣接する頂点やエッジに直接の参照をもっているの
  で、 RDB でいう「結合」という操作の概念がありません。むしろ、データ構
  造は定義されたエッジによって既に「結合された」状態です。

● メリット
 ・グラフトラバーサルのコストは、グラフの局所的な繋ぎ方 ( トポロジー ) に依
  存する
  → 移動のコストは全体のグラフのサイズによらず、ほぼ一定になります。 ( た
  だし、局所的でないクエリ [ 例えばグラフ全体にまたがる最短パスを求めるな
  ど ] は遅いという印象です )
    cf. RDB での結合ではデータのサイズの増加にともなってクエリのコストも
  増加する

● デメリット
 ・シングルサーバーを超えてスケールするのは難しい。
グラフ DB が有効な分野
・ソーシャルネットワークデータのモデリング
 例 . Twitter でのフォロー、被フォローの関係や、ツイート・リツイ
 ートの関係

・リコメンデーション

・ PageRank

・ RDB でいう Join を多く含むクエリーにも有効な場合があります。

グラフ DB は例えば Neo4j であれば 1 秒あたり百万トラバーサル以上
 を処理できます。この場合、 1 クエリに平均 100 トラバーサルかか
 るとしても1万クエリ以上処理できます。
Blueprints
・ Blueprints はプロパティグラフモデル用のインターフェイスや実装、 API などの
  セットです。

・ Blueprints は異なるグラフバックエンドを交換することを容易にします。そのた
  め、ベンダーロックインを回避することが可能です。

・ Blueprints は人気のあるグラフ DB(Neo4j, OrientDB, DEX, InfiniteGraph) に対する
  コネクターをもっています。

・ Blueprints は人気のあるグラフフレームワーク (JUNG(Java Universal
  Network/Graph Framework 等 ) に対するコネクターをもっています。

・ Blueprints は GraphML や GML, GraphSON といったグラフ ファイルフォーマッ
  トを読み込むことができます。

・ Blueprints とその他の TinkerPop スタックは、 BSD ライセンスのオープンソース
  です。
Blueprints の構成要素
・ Rexster: RESTful なグラフサーバーを実
  現

・ Furnace: グラフアルゴリズムのパッケ
  ージ

・ Frames: ノードとエッジをオブジェクト
  と関係に変換するオブジェクト - グラ
  フ マッパー

・ Gremlin: Pipes にコンパイルされるグラ
  フ トラバーサル言語。
                                https://github.com/tinkerpop/blueprints/wiki/ より抜粋
・ Pipes: lazy( 遅延評価。結果が必要にな
  ったら処理を行う ) なグラフ トラバー
  サルを可能にするデータフローフレー
Gremlin
・ Gremlin はグラフ トラバーサル用の言語です。

・ Gremlin は Blueprints プロパティグラフモデルを実装するグラフデー
  タベースやグラフフレームワークの上で動きます。例えば
  TinkerGraph, Neo4j, OrientDB, DEX, InfiniteGraph, Titan, Rexter, Sail
  RDF Stores など。
Gremlin の例
Gremlin の例 (Graph Pattern Matching with Gremlin 1.1
   http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/
    の図 ” Traversing vs. Pattern Matching” にメモ追記 )




                                                                   goal



                                  start
Rexster
・ Rexster

Rexster は REST にフォーカスしたグラフサーバーです。拡張によってサ
  ーチやスコアリング、ランク、リコメンデーションといった一般的な
  グラフトラバーサルをサポートします。 Rexster は Blueprints, Pipes,
  Gremlin を広範囲に使用します。 Rexster では以下のようなグラフ DB
  上で動作します。

   ・ TinkerGraph in-memory graph
   ・ Neo4j graph database
   ・ OrientDB graph database
   ・ DEX graph database
   ・ Titan graph database
   ・ Sesame 2.0 compliant RDF stores

( 引用元 https://github.com/tinkerpop/rexster )
Pipes
・ Pipes

Pipes はプロセスグラフを使ったデータフローのフレームワークです。
   プロセスグラフとはエッジで繋がった Pipe のノードから構成されま
   す。 Pipe はシンプルな計算のステップを実現しそれは他のオブジェ
   クトと結合して大きな計算を構成できます。それらのデータフロー
   のグラフによって、分割やマージ、ループ、一般的には入力からの
   データを出力に変換することができます。

( 引用元 https://github.com/tinkerpop/pipes/wiki )
グラフ DB のスケール性
従来のグラフ DB では、グラフのサイズ、処理能力が複数サーバーで
 スケールしないという大きなデメリットがあります。

・複数のインスタンスにまたがるグラフデータというものが今まで
なかった ??

→ このデメリットを克服するために分散化グラフ DB の研究開発が進
  められています。
分散グラフ DB
・ Apache Hama: 行列、グラフ、ネットワークのための大規模な科学
  計算用フレームワーク。 HDFS 上で動作します。

・ Pregel: Google の分散グラフ・プラットフォーム (closed) 。 BSP( バ
  ルク同時並列 ) という概念を基盤とします。

・ Apache Giraph: Hadoop 環境上で動作する Pregel の実装です

・ Titan: Blueprints の関係者 (Aurelius) が開発を進めている分散グラフ
  データベース。現時点 (2012 Oct) では始まったばかりでバージョン
  も 0.1 です )
Pregel
・ Bulk Synchronous Parallel ( BSP 、バルク同期並列)




 ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
 グラフ問題に特化したバルク同期並列「 Pregel 」
 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
Titan
・ Titan は分散化グラフデータベースです。大規模なグラフを複数のマ
  シン上で処理することができます。

・分散化のストレージとして、現在は Cassandra と HBase をサポート
 しています。

・ Titan はネイティブな Blueprints-enable なデータベースであり、すべ
  ての TinkerPop スタックをサポートします。
Titan の利点
・ Titan は、シングルノードのサーバーが提供できる量を超えた容量と処
  理能力を必要とするような巨大なグラフを処理することをサポートでき
  るように設計されました。これは Titan の基本的なメリットです。

【一般的な Titan の利点】
 ・サーバークラスターにマシンを追加することによって、巨大なサイズ
 のグラフを分割して複数のインスタンスで使用できるようにします。

 ・マシンをクラスターに追加することで、並列的なトランザクションを
 サポートします。 ( 複数マシンにまたがるグラフは並列化できないのか
 調査中です )

 ・グラフトラバーサル用の言語 Gremlin をサポートします。

 ・ Rexster と容易に連携できます。
Titan でキーとなるアイデア
・ edge compression ( エッジ圧縮 )
  Titan におけるエッジ圧縮は次のようなことを可能とするために様々な
  手法によって構成されます。
  ・それそれのエッジのメモリ使用量をできるだけ小さくすること
  ・すべてのエッジの情報を、連続したメモリブロックに格納すること
  。
  これらによってデータの取得を速くすることができます。

・ vertex centric query support ( ノード中心クエリのサポート )
  Vertex centric queries allow users to query for a specific set of edges by
  leveraging vertex centric indices and a query optimizer. ( ノード中心のイン
  デックスとクエリオプティマイザーを利用することで、特定のエッジ
  の集合をクエリすることができます )

・ graph partitioning ( グラフパーティショニング )
  アクセスされる頻度が高いデータが同じサーバー上に載るように複数
  のマシンにグラフを分散させます。
グラフパーティショニング
・グラフパーティショニング




“Titan: The Rise of Big Graph Data” by Marko Rodriguez p.138
(http://www.slideshare.net/slidarko/titan-the-rise-of-big-graph-data)
まとめ
・グラフ トラバーサル

・ Blueprints

・ Gremlin

・分散化グラフ DB

・ Titan
参考文献
・” The Graph Traversal Pattern”, Marko A. Rodriguez, Peter Neubauer, Apr 2010
   http://arxiv.org/abs/1004.1001/
・ Graph Pattern Matching with Gremlin 1.1
   http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/
・ Blueprints wiki https://github.com/tinkerpop/blueprints/wiki/
・ InfoQ “ グラフデータベース、 NOSQL 、 Neo4j”
   http://www.infoq.com/jp/articles/graph-nosql-neo4j
・ Graph Pattern Matching with Gremlin 1.1
    http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/
・ ODBMS Industry Watch “On Big Graph Data. ”
   http://www.odbms.org/blog/2012/08/on-big-graph-data/
・” Pregel: A System for Large-Scale Graph Processing”
   http://www.slideshare.net/shatteredNirvana/pregel-a-system-for-largescale-graph-processing
・グラフ問題とバルク同期並列の常識を Giraph で体得
   http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/01.html
・ Titan: The Rise of Big Graph Data http
   ://www.slideshare.net/slidarko/titan-the-rise-of-big-graph-data
・ Titan wiki https://github.com/thinkaurelius/titan/wiki
・ ODBMS Industry Watch “On Big Graph Data.” http://
   www.odbms.org/blog/2012/08/on-big-graph-data/
BSP superstep (1)
以下のようなグラフで、東京から那覇への最小コストのパスを求める場合
(分散環境では、各都市の処理は異なったプロセッサで処理され、スケーラブル
 な構成になります)。

                        東京


              1                     6             ( エッジについている数字
                              9                   は移動のコストを示しま
                                                  す)
    名古屋           1     大阪                  福岡          2        那覇



                          3


  ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
  グラフ問題に特化したバルク同期並列「 Pregel 」
  (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) を参考にしました
BSP superstep (2)
step1:
始点「東京」は隣接する「名古屋」、「大阪」、「福岡」に時間を送信
 します。
                          東京
                           0

                1                      6
                              9


         名古屋              大阪                   福岡                     那覇
          ∞                ∞                    ∞                      ∞




     ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
     グラフ問題に特化したバルク同期並列「 Pregel 」
     (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
BSP superstep (3)
step2:
・名古屋では、現在値∞とメッセージの 1 より時間を「 1 」にし、隣接する大阪、福
    岡へ「 1 +それぞれへの時間」を送信。
・大阪では、現在値∞とメッセージの 9 より時間を「 9 」に更新します。
・福岡では、現在値∞とメッセージの 8 より時間を「 8 」にし、隣接する那覇へ「 6
    +そこへの時間」を送信します。
                         東京
                          0




               1+1                                       6+2
     名古屋                 大阪                   福岡                     那覇
     ∞→1                 ∞→9                  ∞→6                     ∞

                                 1+3

    ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
    グラフ問題に特化したバルク同期並列「 Pregel 」
    (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
BSP superstep (4)
step3:
・大阪では、現在値「 9 」とメッセージの 2 より時間を「 2 」に更新します。
・福岡では、現在値「 6 」とメッセージの 4 より時間を「 6 」にし、隣接する那
    覇へ「 4 +そこへの時間」を送信します。
・那覇では、現在値∞とメッセージの 8 より時間を「 8 」に更新します。

                        東京
                         0




    名古屋                 大阪                   福岡         4+2        那覇
     1                  9→2                  6→4                   ∞→8



   ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
   グラフ問題に特化したバルク同期並列「 Pregel 」
   (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
BSP superstep (5)
step4:
・那覇では、現在値「 8 」とメッセージの 6 より時間を「 6 」に更新し
 ます。
                          東京
                           0




         名古屋              大阪                   福岡                     那覇
          1                2                    4                     8→6




     ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得”
     グラフ問題に特化したバルク同期並列「 Pregel 」
     (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋

More Related Content

What's hot

Asakusaではじめるhadoop sparkプログラミング
Asakusaではじめるhadoop sparkプログラミングAsakusaではじめるhadoop sparkプログラミング
Asakusaではじめるhadoop sparkプログラミングTadatoshi Sekiguchi
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンMapR Technologies Japan
 
Spark GraphFrames のススメ
Spark GraphFrames のススメSpark GraphFrames のススメ
Spark GraphFrames のススメNagato Kasaki
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR Technologies Japan
 
DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析Yuki Morishita
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
1000人規模で使う分析基盤構築  〜redshiftを活用したeuc1000人規模で使う分析基盤構築  〜redshiftを活用したeuc
1000人規模で使う分析基盤構築 〜redshiftを活用したeucKazuhiro Miyajima
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15MapR Technologies Japan
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方Takahiro Inoue
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR Technologies Japan
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料Recruit Technologies
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションMapR Technologies Japan
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するTakahiro Inoue
 
Hadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いHadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いRyuji Tamagawa
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてcyberagent
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...MapR Technologies Japan
 

What's hot (20)

Asakusaではじめるhadoop sparkプログラミング
Asakusaではじめるhadoop sparkプログラミングAsakusaではじめるhadoop sparkプログラミング
Asakusaではじめるhadoop sparkプログラミング
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
 
Spark GraphFrames のススメ
Spark GraphFrames のススメSpark GraphFrames のススメ
Spark GraphFrames のススメ
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
 
DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析
 
Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
1000人規模で使う分析基盤構築  〜redshiftを活用したeuc1000人規模で使う分析基盤構築  〜redshiftを活用したeuc
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
 
Hadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いHadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食い
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
 

Similar to Blueprintsについて

Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介Ohsawa Goodfellow
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014鉄平 土佐
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編順也 山口
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介Masayoshi Kondo
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うかYutaka Tachibana
 
WWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph AlgorithmsWWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph Algorithmscyberagent
 
A Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.jsA Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.js博三 太田
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8鉄平 土佐
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoHideo Harada
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)Hadoop / Spark Conference Japan
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 
pgGeocoderのご紹介
pgGeocoderのご紹介pgGeocoderのご紹介
pgGeocoderのご紹介Ko Nagase
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +αkobexr
 

Similar to Blueprintsについて (20)

Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
StreamGraph
StreamGraphStreamGraph
StreamGraph
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
 
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
WWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph AlgorithmsWWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph Algorithms
 
A Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.jsA Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.js
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 Hokkaido
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
MapReduce解説
MapReduce解説MapReduce解説
MapReduce解説
 
pgGeocoderのご紹介
pgGeocoderのご紹介pgGeocoderのご紹介
pgGeocoderのご紹介
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +α
 

More from Tetsuro Nagae

オブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxオブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxTetsuro Nagae
 
RDBのインデックスについて.pptx
RDBのインデックスについて.pptxRDBのインデックスについて.pptx
RDBのインデックスについて.pptxTetsuro Nagae
 
Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Tetsuro Nagae
 
purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明Tetsuro Nagae
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapTetsuro Nagae
 

More from Tetsuro Nagae (7)

オブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxオブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptx
 
RDBのインデックスについて.pptx
RDBのインデックスについて.pptxRDBのインデックスについて.pptx
RDBのインデックスについて.pptx
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 
Hoare論理
Hoare論理Hoare論理
Hoare論理
 
Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明
 
purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heap
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Blueprintsについて

  • 1. Blueprints & Titan 永江 哲朗
  • 2. プロパティグラフモデル プロパティ name=wheel part_of ( = タイプ) name=car color=red ノード エッジ 構成要素  ・ノード (node; 別名 : 頂点 )  ・エッジ (edge; 別名 : 辺 )    方向とタイプを有する。 ( ラベル付きで有向 )  ・プロパティ (property; 別名 : 属性 )    ノードとエッジにおける属性
  • 3. グラフ トラバーサル ・グラフ トラバーサル (Graph Pattern Matching with Gremlin 1.1 http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/ の図を利用 ) knows 上記の例でノード 1 から出て” knows” という条件でエッジを移動し、ノード 2, 8 に入ります。このようにエッジの向きやエッジのラベルなどをもとにグラフ を移動することを「グラフ トラバーサル」といいます。
  • 4. グラフ トラバーサルを使ったリコメンデー ション リコメンデーションの例 (“The graph traversal pattern” (http://arxiv.org/abs/1004.1001/ )” Content-Based Recommendation に具体名を追加 ) feature 8 feature Goal 『江戸』 2 likes 6 resource person likes 『百日紅』 likes start feature 1 likes 3 likes 7 person resource person likes 『江戸名所図会』 4 feature 7 resource feature “( トラバーサル開始ノード ) –( エッジ :feature)-> ( ノード ) <–( エッ ジ :feature)- ( トラバーサル終了ノード )” という関係をノード 3 に適用すると 、ノード 2 がみつかります。
  • 5. グラフ DB ● グラフ DB の特徴  ・テーブルにデータを保存しない。グラフというデータ構造だけがあります。  ・ノードとエッジは隣接する頂点やエッジに直接の参照をもっているの で、 RDB でいう「結合」という操作の概念がありません。むしろ、データ構 造は定義されたエッジによって既に「結合された」状態です。 ● メリット  ・グラフトラバーサルのコストは、グラフの局所的な繋ぎ方 ( トポロジー ) に依 存する   → 移動のコストは全体のグラフのサイズによらず、ほぼ一定になります。 ( た だし、局所的でないクエリ [ 例えばグラフ全体にまたがる最短パスを求めるな ど ] は遅いという印象です )     cf. RDB での結合ではデータのサイズの増加にともなってクエリのコストも 増加する ● デメリット  ・シングルサーバーを超えてスケールするのは難しい。
  • 6. グラフ DB が有効な分野 ・ソーシャルネットワークデータのモデリング  例 . Twitter でのフォロー、被フォローの関係や、ツイート・リツイ ートの関係 ・リコメンデーション ・ PageRank ・ RDB でいう Join を多く含むクエリーにも有効な場合があります。 グラフ DB は例えば Neo4j であれば 1 秒あたり百万トラバーサル以上 を処理できます。この場合、 1 クエリに平均 100 トラバーサルかか るとしても1万クエリ以上処理できます。
  • 7. Blueprints ・ Blueprints はプロパティグラフモデル用のインターフェイスや実装、 API などの セットです。 ・ Blueprints は異なるグラフバックエンドを交換することを容易にします。そのた め、ベンダーロックインを回避することが可能です。 ・ Blueprints は人気のあるグラフ DB(Neo4j, OrientDB, DEX, InfiniteGraph) に対する コネクターをもっています。 ・ Blueprints は人気のあるグラフフレームワーク (JUNG(Java Universal Network/Graph Framework 等 ) に対するコネクターをもっています。 ・ Blueprints は GraphML や GML, GraphSON といったグラフ ファイルフォーマッ トを読み込むことができます。 ・ Blueprints とその他の TinkerPop スタックは、 BSD ライセンスのオープンソース です。
  • 8. Blueprints の構成要素 ・ Rexster: RESTful なグラフサーバーを実 現 ・ Furnace: グラフアルゴリズムのパッケ ージ ・ Frames: ノードとエッジをオブジェクト と関係に変換するオブジェクト - グラ フ マッパー ・ Gremlin: Pipes にコンパイルされるグラ フ トラバーサル言語。 https://github.com/tinkerpop/blueprints/wiki/ より抜粋 ・ Pipes: lazy( 遅延評価。結果が必要にな ったら処理を行う ) なグラフ トラバー サルを可能にするデータフローフレー
  • 9. Gremlin ・ Gremlin はグラフ トラバーサル用の言語です。 ・ Gremlin は Blueprints プロパティグラフモデルを実装するグラフデー タベースやグラフフレームワークの上で動きます。例えば TinkerGraph, Neo4j, OrientDB, DEX, InfiniteGraph, Titan, Rexter, Sail RDF Stores など。
  • 10. Gremlin の例 Gremlin の例 (Graph Pattern Matching with Gremlin 1.1 http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/ の図 ” Traversing vs. Pattern Matching” にメモ追記 ) goal start
  • 11. Rexster ・ Rexster Rexster は REST にフォーカスしたグラフサーバーです。拡張によってサ ーチやスコアリング、ランク、リコメンデーションといった一般的な グラフトラバーサルをサポートします。 Rexster は Blueprints, Pipes, Gremlin を広範囲に使用します。 Rexster では以下のようなグラフ DB 上で動作します。 ・ TinkerGraph in-memory graph ・ Neo4j graph database ・ OrientDB graph database ・ DEX graph database ・ Titan graph database ・ Sesame 2.0 compliant RDF stores ( 引用元 https://github.com/tinkerpop/rexster )
  • 12. Pipes ・ Pipes Pipes はプロセスグラフを使ったデータフローのフレームワークです。 プロセスグラフとはエッジで繋がった Pipe のノードから構成されま す。 Pipe はシンプルな計算のステップを実現しそれは他のオブジェ クトと結合して大きな計算を構成できます。それらのデータフロー のグラフによって、分割やマージ、ループ、一般的には入力からの データを出力に変換することができます。 ( 引用元 https://github.com/tinkerpop/pipes/wiki )
  • 13. グラフ DB のスケール性 従来のグラフ DB では、グラフのサイズ、処理能力が複数サーバーで スケールしないという大きなデメリットがあります。 ・複数のインスタンスにまたがるグラフデータというものが今まで なかった ?? → このデメリットを克服するために分散化グラフ DB の研究開発が進 められています。
  • 14. 分散グラフ DB ・ Apache Hama: 行列、グラフ、ネットワークのための大規模な科学 計算用フレームワーク。 HDFS 上で動作します。 ・ Pregel: Google の分散グラフ・プラットフォーム (closed) 。 BSP( バ ルク同時並列 ) という概念を基盤とします。 ・ Apache Giraph: Hadoop 環境上で動作する Pregel の実装です ・ Titan: Blueprints の関係者 (Aurelius) が開発を進めている分散グラフ データベース。現時点 (2012 Oct) では始まったばかりでバージョン も 0.1 です )
  • 15. Pregel ・ Bulk Synchronous Parallel ( BSP 、バルク同期並列) ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
  • 16. Titan ・ Titan は分散化グラフデータベースです。大規模なグラフを複数のマ シン上で処理することができます。 ・分散化のストレージとして、現在は Cassandra と HBase をサポート しています。 ・ Titan はネイティブな Blueprints-enable なデータベースであり、すべ ての TinkerPop スタックをサポートします。
  • 17. Titan の利点 ・ Titan は、シングルノードのサーバーが提供できる量を超えた容量と処 理能力を必要とするような巨大なグラフを処理することをサポートでき るように設計されました。これは Titan の基本的なメリットです。 【一般的な Titan の利点】  ・サーバークラスターにマシンを追加することによって、巨大なサイズ のグラフを分割して複数のインスタンスで使用できるようにします。  ・マシンをクラスターに追加することで、並列的なトランザクションを サポートします。 ( 複数マシンにまたがるグラフは並列化できないのか 調査中です )  ・グラフトラバーサル用の言語 Gremlin をサポートします。  ・ Rexster と容易に連携できます。
  • 18. Titan でキーとなるアイデア ・ edge compression ( エッジ圧縮 ) Titan におけるエッジ圧縮は次のようなことを可能とするために様々な 手法によって構成されます。 ・それそれのエッジのメモリ使用量をできるだけ小さくすること ・すべてのエッジの情報を、連続したメモリブロックに格納すること 。 これらによってデータの取得を速くすることができます。 ・ vertex centric query support ( ノード中心クエリのサポート ) Vertex centric queries allow users to query for a specific set of edges by leveraging vertex centric indices and a query optimizer. ( ノード中心のイン デックスとクエリオプティマイザーを利用することで、特定のエッジ の集合をクエリすることができます ) ・ graph partitioning ( グラフパーティショニング ) アクセスされる頻度が高いデータが同じサーバー上に載るように複数 のマシンにグラフを分散させます。
  • 19. グラフパーティショニング ・グラフパーティショニング “Titan: The Rise of Big Graph Data” by Marko Rodriguez p.138 (http://www.slideshare.net/slidarko/titan-the-rise-of-big-graph-data)
  • 20. まとめ ・グラフ トラバーサル ・ Blueprints ・ Gremlin ・分散化グラフ DB ・ Titan
  • 21. 参考文献 ・” The Graph Traversal Pattern”, Marko A. Rodriguez, Peter Neubauer, Apr 2010 http://arxiv.org/abs/1004.1001/ ・ Graph Pattern Matching with Gremlin 1.1 http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/ ・ Blueprints wiki https://github.com/tinkerpop/blueprints/wiki/ ・ InfoQ “ グラフデータベース、 NOSQL 、 Neo4j” http://www.infoq.com/jp/articles/graph-nosql-neo4j ・ Graph Pattern Matching with Gremlin 1.1 http://markorodriguez.com/2011/06/15/graph-pattern-matching-with-gremlin-1-1/ ・ ODBMS Industry Watch “On Big Graph Data. ” http://www.odbms.org/blog/2012/08/on-big-graph-data/ ・” Pregel: A System for Large-Scale Graph Processing” http://www.slideshare.net/shatteredNirvana/pregel-a-system-for-largescale-graph-processing ・グラフ問題とバルク同期並列の常識を Giraph で体得 http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/01.html ・ Titan: The Rise of Big Graph Data http ://www.slideshare.net/slidarko/titan-the-rise-of-big-graph-data ・ Titan wiki https://github.com/thinkaurelius/titan/wiki ・ ODBMS Industry Watch “On Big Graph Data.” http:// www.odbms.org/blog/2012/08/on-big-graph-data/
  • 22. BSP superstep (1) 以下のようなグラフで、東京から那覇への最小コストのパスを求める場合 (分散環境では、各都市の処理は異なったプロセッサで処理され、スケーラブル な構成になります)。 東京 1 6 ( エッジについている数字 9 は移動のコストを示しま す) 名古屋 1 大阪 福岡 2 那覇 3 ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) を参考にしました
  • 23. BSP superstep (2) step1: 始点「東京」は隣接する「名古屋」、「大阪」、「福岡」に時間を送信 します。 東京 0 1 6 9 名古屋 大阪 福岡 那覇 ∞ ∞ ∞ ∞ ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
  • 24. BSP superstep (3) step2: ・名古屋では、現在値∞とメッセージの 1 より時間を「 1 」にし、隣接する大阪、福 岡へ「 1 +それぞれへの時間」を送信。 ・大阪では、現在値∞とメッセージの 9 より時間を「 9 」に更新します。 ・福岡では、現在値∞とメッセージの 8 より時間を「 8 」にし、隣接する那覇へ「 6 +そこへの時間」を送信します。 東京 0 1+1 6+2 名古屋 大阪 福岡 那覇 ∞→1 ∞→9 ∞→6 ∞ 1+3 ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
  • 25. BSP superstep (4) step3: ・大阪では、現在値「 9 」とメッセージの 2 より時間を「 2 」に更新します。 ・福岡では、現在値「 6 」とメッセージの 4 より時間を「 6 」にし、隣接する那 覇へ「 4 +そこへの時間」を送信します。 ・那覇では、現在値∞とメッセージの 8 より時間を「 8 」に更新します。 東京 0 名古屋 大阪 福岡 4+2 那覇 1 9→2 6→4 ∞→8 ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋
  • 26. BSP superstep (5) step4: ・那覇では、現在値「 8 」とメッセージの 6 より時間を「 6 」に更新し ます。 東京 0 名古屋 大阪 福岡 那覇 1 2 4 8→6 ※ “ グラフ問題とバルク同期並列の常識を Giraph で体得” グラフ問題に特化したバルク同期並列「 Pregel 」 (http://www.atmarkit.co.jp/fjava/rensai4/bigdata_java05/02.html) より抜粋