nashcft's blog

時々何か書く。

Neo4jユーザーグループ再結成 & Neo4j 無料セミナーに参加してきた #Neo4jUsersGroup

再結成だったそうで。最初の結成の頃はOrinetDB触ってた頃だけど気づかなかったっぽい。

Neo4jユーザーグループ再結成 & Neo4j 無料セミナー - connpass

Neo4Jユーザグループ再結成のお知らせ: 長瀬嘉秀氏 (株式会社テクノロジックアート)

これまでの活動や活動場所(facebookとかgoogle groupとか)の紹介など。
終わってからgoogle groupを覗いたらメンバー登録しないと閲覧できないみたいだったので面倒くさくてやめた。
個人的な意見だけど、ユーザグループの類のコミュニティがオープンでないとか広める気ないだろうと思ってしまう。

google site: https://sites.google.com/site/japanneo4jusergroup/
google group: https://groups.google.com/forum/#!forum/japan-neo4j-users-group
twitter: https://twitter.com/Neo4jUsersGroup
facebook: https://www.facebook.com/neo4jusersgroup

NeoTechnology社のオンラインプレゼンテーション: David Montag氏 (Neo Technology, Inc.)

スイスにいるエンジニアによるNeo4jの紹介。
Neo4jのこれまでの歩みやグラフデータモデルの特徴・強み、CypherいいよCypher、次期バージョンである2.2で改善されるポイントなど。

接続状態が悪かったのか、途中から非常に聴き取り難くなってしまった。
通訳された鈴木氏がかなり丁寧だったのでとても助かった。

データモデルの話やCypherの記述力、他のデータモデルとの比較やモデリング例に関しては"Graph Databases"に記載されている内容と殆ど一緒だった。

途中でホワイトボードに書いた図をそのままデータモデルとして表せるので設計のハードルが低く、アーキテクトでなくても出来るようになる、といった話があったが、ここでいう「アーキテクト」というのはDBアーキテクチャという専門スキルをもった人間の事を指しているのであって、確かに従来のDBアーキテクトでなくてもGraph DBのデータモデリングは出来るだろうが、より抽象的な「情報アーキテクチャ」みたいなものに関するスキルが必要になるだろうと考えていて、結局必要とされているスキルが異なるだけの話のような気がする。

私がOrientDBであれこれやってた頃、グラフデータモデルはNoSQLデータモデルの中で最も設計に気を遣わなければならないデータモデルで、初期設計に関してはRDBと同じくらいよく考えて行わなければならないという感想を抱いたし、技術者以外がモデリングできるといってもそれなりにデータを精査する能力がないとクソみたいなグラフになってつらい目に遭うと思う*1

あと他データモデルとの比較は話半分くらい聞いた方が良いかなという経験則。確かNeo4j in ActionのChapter 1にあるMySQLとの比較はJava API vs SQLでのパフォーマンスの比較とかで、SOかどこかで叩かれていたのを見た記憶がある。
あとそもそもそのデータモデルが得意とする構造? が異なるのだからそりゃ無理に適用すればつらくもなるわ、という感じ。Graph DBで集合論的な(= RDBが得意とする)データを扱ったり操作したりしたら、まあRDBに惨敗するよねとかそんな。

以下のスライドはその辺も含めてGraph DBのモデリングや適用分野について判りやすくまとめられたすばらしいスライドなのでGraph DBに興味ある方にはオススメ。

「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜

2.2での改善点としては、データ取り込みの高速化、read/writeの高速化。Authenticationに関しては何言ってるのかよく判らなかった上に通訳すら聞き逃したので誰か教えてください。

Readに関してはoptimizerがrule-basedからcost-basedに替えるからとの事。Q&Aで統計情報の取得について訊かれた方がいた。私も気になる。通信状況が良くなかったので上手く聴き取れず、また通訳の方も技術専門という訳ではなかったようで、後日文書で回答するとの事。
docに書かれていると言っていた気がするので後で調べてみようかしら(多分しない)。
似たような疑問でそういえばplanって見られたりするのだろうかとか思った。NoSQL関係でそういう話を聞かないような気がする*2ので、チューニングするときとかどうするのかなーと思った。

Writeはconcurrentに行われるようになる。データの数が多かったりSSDを使っている場合に効果てきめんだそうな。ACIDでconcurrentでロック発生するだろうにどうやってパフォーマンス出しているのという質問があったが、これも聴き取れなくてよく判らないまま。多分ロック範囲が部分的だからとかそんなだと思うけど、それって行ロックと何が違うの感あるので間違ってる気がする。

モニタリングとか管理用のツール... linkuriousとかgrapheneDBとかなのかな?

そういえばCypherいいよCypherという話はアスキーアート的な記述法なので適当なメモや思考がそのままクエリとして記述されて非常に良い。(触っていた当時の)OrientDBのextendedSQLはグラフ操作に関してはクソだったので。APIはGremlinで統一してほしいと思っている。

Neo4Jの導入事例紹介: 鈴木 いっぺい氏 (Suzuki Consulting)

現在特に導入事例が増加しているのはテレコム、金融、医療の3分野なのだそうだ。

どの分野でもマスタデータの管理や手持ちの情報の関係性をモデリングしてビジネスに利用しているところは共通している。
グラフを用いればある程度位置的な情報も得られるのでサービスの最適化にはうってつけらしい。

テレコム分野で特徴的なのは機器構成のモデリングを行い依存度の分析を行っている所。

金融の分野では不正検知のため(異常な条件にマッチするクエリを検知して云々)に使われるなど特徴的な利用をされている。これに関しては以前国内のニュース記事でもとりあげられていた。

導入の決め手としては

と言う感じらしい。

後なんかTSPの話が出ていた気がするけど聞き逃した。

個別の導入事例に関してはのた犬氏の投稿を参照の事。

Neo4jの日本での事業活動: クリエーションライン株式会社 / 鈴木氏

日本の事業拠点ができた。ソリューションの提供とかコンサルとか行うらしい。
Neo4jをビジネスで利用する場合はまずenterprise editionを利用すると思うので必要な存在かと。
そもそもNeo4jのライセンシングを良く理解していないのでどのユースケースだったらこれになる、とか教えてほしい...

次のイベントではNeo TechnologyのCOOが来日してセミナーを行う。

感想

再結成から初回のセミナーという事もあって、ご紹介という色が強かった。後技術技術した雰囲気ではなく商業くささが漂っていたのは気になったけどまあそんなものなのだろう。

Neo4jはオープンソースよりエンタープライズ方面に舵を切っているっぽいので個人的にはうーんという感じ。実際よく解っていないのだけど、もしそうならTitanとかOrientDB使うかなあ...そういえばweaverとかいうのもできたそうな。ただ界隈で一番コミュニティが大きく活発な事もあって、信頼感はNeo4jなんだよなあ。

Neo4jに限らずGraph DB全般が日本国内でもっと注目されてコミュニティの活動が活発になったら良いなあと思います。
とりあえず知識が1年前からあまり更新されていないし全然触れていないのでキャッチアップしないと。

そのほか

始まる前に誰かがGraph Databasesの改訂版が出るといっていたのを聞いた。個人的にこれが一番気になる情報だった。
あとamazon.comでは削除されてしまったが、こういう本が出版されるかもという話があったのは今どうなっているんだろうなあと思っている。

あと、最後の方で行われたじゃんけん大会でTシャツをゲットした。

他の方のまとめ

当日の発表内容を詳しくメモされています。

*1:Graph DatabaseでもChapter3: Data Modeling with Graphsで設計時の注意に関して触れられていた。amazon.comでは微妙な評価だけどGraph DB使うならこの本は一度ちゃんと読んだ方がいいと思う。

*2:これは自分の観測範囲が狭いだけかも知れない