2015年2月10日火曜日

Neo4j 説明会「NeoTechnology社のオンラインプレゼンテーション」David Montag氏 (NeoTechnology COO)

スイスからオンラインでの話らしい! エンジニア。NeoTechnologyはスウェーデンにある会社で、シリコンバレーにもオフィスがある。アメリカ、ヨーロッパで半分半分くらいで開発。人数は60-70名(→80-100人)。最近出資を受けて開発人員増強中。
 Neo4j、ビックデータとの立ち位置、他のNoSQLとの違いについて語る予定。新しい2.2の説明も。
 ネット経由&スピーカ(&私がそもそも英語が苦手)のため聞きづらかったが、通訳がとても丁寧で助かった……。


【Neo4jの概要、強み、特徴とか】

Neo Technology Overview。世界をリードするグラフ型DB。グラフ型DBとしては筆頭くらいに知名度が高い。ダウンロード数も多く、コミュニティも大きい。NoSQLの中では伸び率が高い。2000年にモデルができた。コンテンツ管理の内部プロジェクト。RDBの性能上の問題を解消するために独自のデータモデルへ。2003年にFirst native grahp DB。2007にOpenSourceへ。(生まれたのは2007年と解釈。)2009年には世界で2000のCustomer。2012年にはオライリー書籍が出た。サイファーと呼ばれるQueryLanguageで他のNoSQLと差をつけている。2013年にラベル機能。現在150社の客。月に5万ダウンロード。イベントも活発(年間500以上)。
 非常に細かく、いろいろな範囲に適用されている。eBay、cisco、NetApp、hp等大手もあり。特定の用途ではなく汎用的に評価されている。人、モノ、機器など、オブジェクトに関する関係性を表す必要があるのはどの業界も同じ。データモデリングの仕組みで強い。Social、Recomendationエンジン、Search&Discovery(ドキュメントと人間、事象をつなげる)、Network&Data Center(ネットワーク機器の接続状態で障害予知検知)、MasterDataManagement(RDBの制限から開放される)、Identity&Access(誰が何に、誰が誰の上司、権利をどのレベルで、などモデル化しやすい)、GEO(位置情報。地図情報。ロジスティックス。最短距離計算)。
価値としては、従来のデータモデリング、管理の方式と比較し、制限から開放してくれる、が大きな特徴。データ表現のしかたの自由度が大きく広がる。付随して、アクセスをかけたときの性能が良い。リアルタイム検索。(スケーラブルにすると)大きくなっても速度に影響を与えない。
特に、ビジネス要件の「量が増える」(モバイル、IoT)に着目し、いかにリアルタイムで処理するか。トランザクションの量、つなぐべきDB、接続しなければならないデータソースの数。請求書処理一つとっても、数字だけではなく、請求先、過去の購買履歴、友人などで分析し、将来的なサービスの付加価値をつけるとか。データソースを統合した運用のしかたを。
Neo4jが目指すのは、一つのベクトルから分析、ではなく、周辺含め将来含めより広いところで分析を。従来、ある一つの答えを見出すソリューションだったのが、広い範囲で求められており、それができるデータ管理ソリューションを作っていくのが狙い。グラフ型DBはわりと早い段階から存在しており、それを使っていた会社は成功している。(Early adoptersとして、Linkedin、Google、Facebook)
Cypher(さいふぁー、とよむ。Cypher Query)はPowerful and Expressive Query Language。LABELとPROPERTY、NODE。
例:MATCH(:Person{name:"Dan"})-{:LOVES]->(:Person{name:"Ann"}
一秒に400万のマッチクエリを1コアのマシンで出せる。他のRDBにくらべて非常に早い。
企業の組織の中で上司がいて、その部下、さらにその部下の名前を出す、を検索するために、SQL Queryではかなり長いものを書くことになるが(A4を2枚びっしり、くらい)、Cypher Queryでは4行程度。ある変更が加わった時の変更労力が大きく異なる。
従来のRDB(Relational Database)では関係性(Relationships)をうまく扱えないし、パフォーマンスが落ちるし、JOINが増えるとQueryが複雑になるし、新しいRelationshipsを追加するとスキーマの再設計(Schema redesign)が必要。不可能ではなく、複雑な構造をとらざるを得ず、性能が影響受けてしまう。
また、NoSQLの他のDBも、関係性を取り扱うわけではない。MongoDB、CouchDB、Cassandra…… データを簡素化して検索する、に特化したDBで、関係性を表すクエリは作りこみが必要。JOIN構造を持つDB、ACID特性を維持できないものもある。
Neo4jは、グラフとしてデータをRe-Imagineする。Agile development、High performance、Verical and horizontal scale、Seamless evolution。データのモデリングを自然な形で構築し、自然な形で検索することで、開発労力を削減。Enterpriseでの実績もあり信頼の出来る技術に成長している。
ホワイトボードに書いたモデルが、Physical Modelになる。モデリングのプロセスとして、データの関係を表記すると、そのまま直結できる。データベースアーキテクトが要らない世界。技術者である必要もなく、マーケティング部門がアプリ設計時にDB関係柄をホワイトボードに書いてDBが設計できる、垣根の低い技術として評価されている。
特徴として、Native Graph Storage、Ntive Graph Processing、Whiteboard Friendry Data Modeling、High Data Integrity(Filly ACID transactions)、Powerful Expressive Query Language(10-100倍コードが短い。MySQLとくらべて1/50に減った例あり)、Scalability and High Availability(クラスタは商用版のみ?)、Built-in ETL、Integration。敷居が低いが保全性はRDB並み。


【Neo4j 2.2で変わったこと】

現在2.1。近々2.2。いくつか性能の問題が指摘されていたが、今回のリリースで大きく改善した。
  •  2.1ではInitial Import:csvからの初期時の読み込み(Load csv機能)。複数のcsvを同時に読み込み可能。DBpedia(?)  2.2ではオンプレミスだけではなくオンラインも読み込みができるNew Bulk Import機能。非常に高速。ベンチマークで非常に大量のロードを実施。
  •  Cypher Architecture。従来のRule-Based OptimizerからCost-Based Optimizerになり、クエリー速度を改善し、ベンチマークで1800ms→23ms、870→43、16→0.9。コストベースは、どういう順番で計算すればよいかを考えている。
  •  Concurrent Writes。ディスクへの書き込みの並列化。従来はシーケンシャル。Small Transaction(小さな書き込みを大量に)では5-15倍早くなった。(Transactions per second TPSで。)SSDだと5-100倍。並列処理でSmall Transactionの改善効果が大きい。特にSSDでは。
  •  Authentication。セキュリティ面の強化。ユーザ認証機能追加。(これまで無かったの???)

【質疑応答】

  • コストの計算方法は? →難しいので別途文章で。
  • RDBとのコスト計算の違いは? →
  • モニタリングは? →APIは準備している。OSSで公開されているサードパーティのはある。
  • ACID特性準拠による性能への影響は? ロックとか →ノードとリレーションシップとでロック(?) 解除されたら次が入る(?)

0 件のコメント:

コメントを投稿