BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Neo4j 3.0がリリース,バイナリ通信プロトコルと標準ドライバを装備

Neo4j 3.0がリリース,バイナリ通信プロトコルと標準ドライバを装備

ブックマーク

原文(投稿日:2016/04/26)へのリンク

今日のGraphConnect Europe 2016で,Neo Technologyが,自社名を冠したデータベースであるNeo4j 3.0のリリースを発表した。処理スケールと開発者の生産性の向上に主眼が置かれている。Neo4jの開発者のひとりでCEOのEmil Efrem氏は基調講演で,新バージョンが従来よりもはるかにスケーラブルであるのは,将来的にモノのインターネット(IoT)によって数十億というデバイスが接続されることを特に意識したものだ,と説明した。これほど多くの接続数に対応するため,ストレージシステムが再設計されると同時に,ノード数(これまでは320億に制限されていた)などのハードリミットのいくつかが大幅に拡大されている。今日のインターネットに接続されているデバイスの数は500億程度だが,10年後には人間の脳のニューロンに匹敵する数のデバイスが接続されることになるだろう,と氏は予想している。

データベースが大量のデータを格納可能になるのに合わせて,バイナリネットワークプロトコル(boltと呼ばれる)と,対応するドライバの標準セットが新たに開発された。最初にサポートされる言語はJava, JavaScript, .Net, Pythonだが,コミュニティが開発したPHPとC用のドライバが間もなくこれに加わる予定だ。ドライバはCyperクエリの実行手段となるもので,例えばJavaScriptのドライバでは実行結果のレコード毎にコールバックを起動する,Javaならばデータオブジェクト処理のためのStreamインスタンスを提供する,といったように,各プラットフォームのイディオムに従ったAPIを通じて実行結果のセットを返す。ドライバは返された結果からデータを自動的にアンパックする。この方法は,特に大規模な結果セットにおいて,(JSONやXML,あるいはその他のリーダブルなフォーマットのように)キーがレコード毎に繰り返されないという大きなメリットがある。データ量の削減はアプリケーションのスピード改善の理由のひとつではあるが,そのメリットを享受するためには,データをJSON応答フォーマットからboltドライバの形式に変更する必要がある。

InfoQは,Neo Technologyの開発関係のエンジニアであるWill Lyon氏と対談し,まずbolt プロトコルとはどのようなものか尋ねてみた。

Lyon: boltはNeo4jの新しいバイナリプロトコルです。これまではすべての要求がHTTPを通るため,ある程度のオーバーヘッドがありました。boltでは,HTTPのオーバーヘッドを削減できるので,Neo4jのデータストリーミングがはるかに速くなります。さらにSparkコネクタなど,他のテクノロジとの接続も可能になります。SparkコネクタはMichael Hunger氏が開発しました。Java標準コネクタを使ってNeo4jからSparkにデータをストリーミングし,Spack内で計算を行なった上で,その結果を直接Neo4jに戻すという処理を,極めて高速に実行します。

InfoQ: boltはバイナリプロトコルだということですが,Webアプリケーションでも使用できるのでしょうか?

Lyon: JavaScript用のドライバとして,Node対応バージョンとJavaScript/WebSockets対応バージョンの2種類のものを用意しています。これによって,JavaScriptアプリケーション内で情報を可視化したり,Bolt over WebSocketを使ってNeo4jに接続して,データをテキスト化することが可能になります。公式には,Java, JavaScript, Python, .Netの4つのドライバのサポートを発表しています。その他として,コミュニティの提供するドライバも利用できます。こういったドライバを使うことで,他のテクノロジとの統合が可能になっています。

InfoQ: ストアドプロシージャはどのように変わりましたか?

Lyon: Neo4jのストアドプロシージャは,データベースにデプロイしてCypherでアクセスするJavaコードです。これまでのNeo4jにはマネージドエクステンションがありましたが,これはNeo4jのREST APIを拡張するもので,Cypherと併用することはできませんでした。そこで今回,新たにAPOCを用意しました。APOCは,データモデルの検査やグラフ探索,他データベースへの接続といった,さまざまな種類のストアドプロシージャを100以上収めたライブラリです。JDBCドライバに接続してデータをインポートし,Cyperを使ってグラフを直接構築するようなことも可能になりました。

InfoQ: ストアドプロシージャはどのようにインストールするのでしょう?

Lyon: サーバにデプロイするJARファイルを作成するために,テンプレートプロジェクトを用意しています。基本はディレクトリへのファイルコピーですが,3.0リリースでは,ストアドプロシージャのアップロード時にサーバの再起動が必要になります。

InfoQ: パフォーマンス上の変化としては,他にどのようなものがありますか?

Lyon: 数十億というノードやリレーションを扱う場合,これまでは,ファイルストア内のアドレス空間にハードリミットがありました。新しいシステムではファイルストアが書き直されて,このハードリミットが何桁というオーダで拡大されています。さらに,boltプロトコルがデータ転送にバイナリエンコーディングを使用するため,解析が不要になると同時に,システム間のデータ転送もコンパクトになり,アクセスが高速化されました。最後に,Cypherクエリプランナも,読み書き両方でコストベースのプランナを使用することによって性能が向上しています。読み込み用はこれまでもありましたが,書き込み用のコストベースのプランナはありませんでした。コストベースのプランナでは,クエリの構造だけでなく,クエリに関連するデータベース数を推測するメカニズムを使用して,データベース内の実際のデータ量も考慮します。これにより,数百万レコードというインデックス検索は回避して,より少ないデータで効率よく処理する方法を探索し,データ参照方法を修正することが可能になります。

InfoQ: データのインポートについてはどうでしょう?

Lyon: Neo4jには,ファイルストアにデータを直接書き込むインポートツールがあります。これまでのようにトランザクションを経由する必要はなくなりました。数百万という数のドキュメントをロードするため,LoadCSVのメカニズムも改良されました。新しいLoadCSVは,1,000万件のStack Overflowの質問を3分強でNeo4jにインポート可能な,バッチトランザクション更新の能力を備えています。

GraphConnectカンファレンスは,Jim Webber博士による将来への展望で閉幕した。

最後の基調講演の直前に行われた,国際調査報道ジャーナリスト連合(ICIJ, パナマ文書を提供したチーム)のMar Cabra氏によるプレゼンテーションの中で,同グループが標準時間5月9日18:00にリリースする一部のデータをNeo Technologiesがホストし,Cyperで遠隔照会可能であることが公表された。

2.6TBに及ぶリーク情報を支えるテクノロジとして,一連のOCRツール(イメージおよびPDFを可読性と検索性を持つテキストに変換)が使用され,その結果がNeo4jデータベースにインポートされる。ICIJは以前のSwissリークでも,早くからNeo4jを使用していたが,Neo4j自身は今回の論文が発表されるまで,パナマ文書がユースケースであることを認識していなかった。公開されたデータ部分は研究者の調査対象とするためのもので,Neo4jは他のユースを実行するグラフデータベースのホスティングに使用される予定だ,と氏は説明している。このグラフはPower Playersのエクステンションとして,Neo4jデータベース内に格納された団体とその資産との関係情報を,インタラクティブに可視化するものになる。Mar Cabra氏は昨日,次のように書いている

データは当初,SQLで,リレーショナルデータベースに格納されていましたが,ETL(Extract, Transform, Load)ソフトウェアツールのTalendを使うことで,Neo4j(私たちが使用しているグラフデータベースフォーマット)に簡単に変換することができました。データを変換してしまえば,後はそれをLinkuriosに流し込むだけの問題です。数分後にはデータがネットワーク形式で可視化されて,誰でも,世界中のどこからでもログインできるようになります。LinkuriousとNeo4jを選択したもうひとつの理由がこれです — グラフデータの表現が非常に早く,可視化されたデータが誰にとっても分かりやすいものなのです。ハイテクにそれほど明るくないレポータでも資料を魔法のように展開できますし,技術に詳しいレポータやプログラマならば,Neo4jクエリ言語やCypherを使って,例えばある人物と2次以内の隔たりにある人をすべて示す,あるいはすべての結合を示すというような,複雑なクエリを行なうことが可能です。

Neo4jは間もなくダウンロード可能になる予定である,資料やチュートリアルについては,すでに公開されている。

 
 

この記事を評価

関連性
形式
 
 

この記事に星をつける

おすすめ度
スタイル

BT