Neo4jユーザーグループ勉強会 #7 に行ってきたよ

ということでNeo4jユーザーグループ勉強会 #7 に行ってきましたよ。

今回は恵比寿ガーデンプレイスタワーにあるクラウドワークスさんで開催。
久々の恵比寿です。
前回、恵比寿に行ったのって、岩合光昭氏の写真展「ネコライオン」を観に行った時以来かなあ。

最初に注意が

  • データの注意点・・・?
  • かなり個人情報に触れるデータを使っているので配布資料はなし。
  • デモ用の?データはCSVだけでなく、Neo4jフォーマットでの配布もある!

パナマ文書の概要

  • パナマ文書、わくわくw
  • PanamaPaper特集・・・と言いながら、Graph Connect Europeイベントには実は誰も出席していないとw
    • その代わりビデオは一通り見たと。
  • 15分、20枚のスライド。
  • Mar Cabraさん@ICIJがデータ分析PJのトップ。
  • 以前はオフショアリークス、という分析を以前行った。
  • パナマ文書のサイズ:2.6TB 21万社の企業。
  • 3人でパナマ文書のデータ解析をやった。
  • パナマ文書からわかったことの一部
    • ターゲット。政治家、政治家の親族(ここがグラフデータベースの強み)
    • 世界中の大きな銀行が関わっている。英国の不動産業者も。
  • ICIJでこの情報をどう扱っているのか。
    • Oxwall(OSSのジャーナリスト間のデータ共有ソフトウェア)
  • Neo4jで扱っているのは、Database format、300万ファイル。
    • これだけ多いのでまだ未分析のものも多い。
  • 前処理
  • オフショアリークの時にはSQL ServerJavascriptで可視化していた。
  • パナマ文書のときには、Neo4j+LINKURIOUSを採用
  • 前処理としてETLを実施。talendを使用。
  • 出来上がったデータ
    • 950000 node, 1.2million edge (4GBデータ)

v3.0発表

  • Creationlineの李さんから説明。
V2までのおさらい。
  • RDBMSとグラフデータベース
    • 定義はエンティティ。しかし現実のデータ処理はレコードレベルの処理、このため大変。
  • Neo4jの歴史
    • CypherQueryが入ったことがやっぱり大きいと思うな。
  • バルクデータ処理もできるよー!
  • SQLとCpypherとの対応の話。Cypher全文検索とトリガ、プロシージャが未実装なのが課題なのだよなー。
コミュニティ版とエンタープライズ
3.0の話
  • Scale and Performance
    • データ数制限が実質上なし?(340億ノード)
    • Dynamic poinnter compression.
  • インデックスフリーの隣接性改善
    • pointer hop という技法でエッジなしでもトラバース可能にする?これでウルトラ高速化!とのこと。
  • オプティマイザ改善
    • 2.0まではWriteはRuleベースだった。
    • 3.0からはRead/WriteもCostベース
  • 開発者向け機能
    • 公式SDK。3.0 Bolt+Langage Driver. JavaだけでなくPython等も。
    • Bolt + Java Stored Procedure
      • 例えばMySQLに接続してJDBC経由で情報を取得してNeo4jにデータが投入できる。
    • Neo4j Browser Sync.
  • Docker上でもクラウド上でも使えるように。
  • 座標情報関数のサポート。つまりGis対応はじまた?
  • 最短経路(shortestPath)改善。
  • 3.0への移行
    • 3.0はJDK8対応。
    • 旧バージョンからの移行はそんなに大変ではない。
    • configure fileが1つに統合された。このへんは要注意。

パナマ文書:データ分析作業の話。

  • 4種類のCSVになっていて、それをNeo4jにロード可能。
  • なお、Neo4jフォーマットでも入手できる。
  • パナマの法律事務所(Mossack Fonseca)がデータ元。
    • そこがハッキングされて外部流出している(と事務所側は主張している)。
    • ドイツの新聞社がまずそれを受け取った。
      • 新聞社で独自に解析。Nuixでメタデータ抽出を試みたが失敗。
  • そこでICIJと協業することに。
  • ETL/Neo4jでデータベースか、Linkriousで可視化。5/9にデータ公開。211MB、840Kノード、1.27Mエッジ。
  • これは2ndPlatform側
  • ノードの抽出
    • クライアント、企業、住所、役員(企業、個人)
    • 属性情報(ドキュメント番号、日付等)
  • 関係柄の抽出
    • 直接的なものは、データベースそのもの見れば分かる。
    • 間接的なもの:同じ住所、メール、似たような名前。
  • 今後、ICIJで拡張を考えていること。
    • イメージ、PDF、Eメール
      • 例えばEメールからの関係の分析
    • 外部情報源の参照(国際調査情報やSNS情報)
    • 企業活動・キャッシュフロー分析
  • 1st Platform(イメージ、PDF等)側の分析。
    • 個人企業と関連ドキュメントの関係、人間関係の関係、企業登記情報
    • ここが機械化できない。自動化できている2nd Platformと連携。
パナマ文書の話
  • 今はパナマからバハマなど別の国にオフショアする動きになっている。
  • MF社使ったTax Havenの国はパナマだけじゃない。実は米国内の州も可能。
  • 仲介している銀行。香港、スイス、イギリスなど。
  • パナマ文書に載ってる会社=Tax Havenを使っているわけではないよ!そこは留意してねとのこと。

ETL(Talend)の話

  • Talendはオープン版、商用版の2つがある。
  • 日本の顧客、いろいろ使っている。DATAやCOMでも使っている。
  • ICIJでも使っていた。
  • 某キャリアでのNW機器情一元管理・・・どこなんだろう・・・。
  • システム移行
  • Talendは単なるETLではないよ。データの統合連携基盤だよ。
  • 無償版と有償版の違い
    • 無償版はデスクトップ向け、有償版はサーバ上、運用監視など。
  • Neo4jとあんまり関係なかったけど、Talendは調査しておかないといけないかな(社畜的に)
Neo4jを使用したパナマ文書データ検索デモ
  • クリエーションラインの木内さん。
  • デモに使ったデータは加工・匿名化してる。
  • 4種類のノード
    • Ofiicer(役員), Address(住所), Entity(オフショア会社・個人), Intermediary(仲介業者)
Officer ----> Addeess
  |  |
  |  +------------+
  |               |
  o               o
Entity <---- Intermediary
  • ETL済み、配布ファイルは210MB、展開後470MB
  • プロパティは実はディスク上に置かれている。ノードとエッジをオンメモリに。
    • インデックスもオンメモリに。
    • これ、知らんかった。基本、ノードとエッジがオンメモリだから探索が高速なのか。
  • CSVロードしちゃうと時間めっさかかるよー。なぜならクエリ内で変換しちゃうから。
  • リレーションはMATCH/MERGE文を使って手動でつけないといけない。エッジが多いととてつもなく時間がかかる。
  • LOAD CSVの説明
  • neo4j-importはLinuxコマンドとして実行。データベースと、CSV群を指定。
  • クエリ例
    • 日本人は何人いる? (2317人)
      • もっとも日本人ではない名前もあるし、逆もしかり。
  • パナマ文書で明らかになった人数は。
  • ある人間からリレーションをたどるデモ。
  • Officerが一杯・・・しかも同一住所。
  • 香港にEntityが何社あるか。
    • ただし、struck_off_date (活動停止)の会社も含む。
    • じゃあ、アクティブな会社は?
  • 香港のとある地区の活動中の会社役員の日本人の数は?
  • あるノードからあるノードを辿りつつ条件を指定できるのがCypherQueryの特徴。
    • 何らかの理由で繋がっている日本人の組

恒例:Neo4jじゃんけん大会

  • Neo4jTシャツと、Neo4j水ボトル、Neo4jガラス、Cpypher本、シール10枚
    • 残念、今回は勝てなかった。

懇親会