【初心者】Neo4jをMicrosoft Azure上で動かしてみました

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

はじめに

Neo4jは、オープンソースのグラフデータベースで、人気のグラフデータベースの一つです。
様々な業界や企業で導入されており、ソーシャルグラフや顧客管理グラフ、資産管理グラフなどの用途で利用されています。
Javaで実装されており、githubにソースが公開されています。
https://github.com/neo4j

Microsoft Azure で簡単に利用できるので、実際に試してみました。

導入

MarketplaceにCognosys社の「Hardened Neo4j on Ubuntu 14.04 LTS」があるのでこちら利用します。
Azure Portalにログインし、「NEW」を選択し、「neo4j」と検索します。

すると「Hardened Neo4j on Ubuntu 14.04 LTS」があるのでこちらを選択します。この説明に書かれているPasswordはNeo4jにログインする際に必要なので覚えておきます。
ss75

パスワード情報や仮想マシンのサイズを選択して、どんどん進みます。
ss76

数分かかりましたが、無事デプロイされました。
ss80

ローカルのブラウザから仮想マシンにアクセスします。
https://PublicIP/neo4j

UserとPasswordを入力します。ここでのPasswordは「Hardened Neo4j on Ubuntu 14.04 LTS」の説明部分に記載されています。
ss78

ログインしたら試しにグラフを作成してみましょう。
画面上部のEditerに:play movie graphと入力します。

するとMovie Graphのtutorialが表示されるのでこれに従って試してます。
ss82

→を押して次に進みます。

グラフの作成

画面右側にNeo4jのクエリが表示されます。このクエリをNeo4jではCypher QL(Cypher Query Language)と呼び、とても複雑な関係のデータ処理のために開発されたクエリ言語です。

このクエリをクリックすると、上部のEditerにそのままコピー&ペーストされます。
ss83

Editer右側の△をクリックします。

俳優と映画、監督に関するグラフが作成されました。
graph

検索

グラフを作成できました。次はデータを抽出してみます。
Cypher QLのMatch構文を利用します。

例えば、俳優の名前がTom Hanksであるデータを検索するには

MATCH (tom {name: "Tom Hanks"}) RETURN tom

とEditorに入力します。

80年代生まれの人を検索してみます。

MATCH (eighties:Person) WHERE eighties.born > 1980 AND eighties.born < 1990 RETURN eighties.name

ss84

Natalie Portmanさんら3名がヒットしました。

グラフからパターン検索をしてみます。
先程80年代生まれので検索結果に表示されたNatalie Portmanさんが出ている映画を検索してます。

MATCH (tom:Person {name: "Natalie Portman"})-[:ACTED_IN]->(nataliePortmanMovies) RETURN tom,nataliePortmanMovies

graph-1

一つヒットしました。V for Vendettaに出演していらっしゃるようです。

もう少し複雑な検索もしてみます。
V for Vendetta に出演している人を検索してみます。以下のクエリで検索できます。

MATCH (people:Person)-[relatedTo]-(:Movie {title: "V for Vendetta"}) RETURN people.name, Type(relatedTo), relatedTo

9名ヒットしました。

graph-2

映画と出演者の関係性がシンプルに表示されていて、とてもわかり易いです。

面白いのでもう一つやってみます。

shortestPathを使うと最短経路を検索することができます。
では、これを使ってNatalie PortmanさんとTom Hanksさんの関係性を調べて見ましょう。

MATCH p=shortestPath(
(bacon:Person {name:"Natalie Portman"})-[*]-(meg:Person {name:"Tom Hanks"})
)
RETURN p

graph-3

この図からNatalie PortmanさんはAndy WachowskiさんがプロデュースしたV for Vendettaに出演しており、Tom HanksさんはAndy Wachowskiさんがディレクターの作品であるCloud Atlasに出演しているのが簡単にわかります。
つまり、Natalie PortmanさんとTom Hanksさんの共通の知人はAndy Wachowskiさんということですね。

終わりに

今回はMicrosoft Azure上でNeo4jを簡単に試してみました。
Neo4jのようなGraphDBを初めて触りましたが、クエリなど、直感的で分かりやすかったです。
また、使いどころも色々ありそうなので、今後もっと普及して、効果的かつ効率的にデータ分析を行えれば良いですね。

公式ドキュメント : https://neo4j.com/docs/

 

 neo4jNeo4j の詳細については下記をご覧ください!
https://sios.jp/products/oss-integration/service/oss_on_cloud/neo4j.html

 

アバター画像
About サイオステクノロジーの中の人です 88 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる