SlideShare a Scribd company logo
1 of 9
neo4j 触ってみた
neo4j とは
これ
https://learn.microsoft.com/ja-jp/dotnet/architecture/cloud-native/relational-vs-nosql-data
環境構築・起動
docker run --rm -p 7474:7474 -p 7687:7687 ¥
--volume=$HOME/neo4j/data:/data ¥
--volume=$HOME/neo4j/conf:/conf ¥
neo4j
docker で起動
ポートを転送
ブラウザで
http://localhost:7474/
へアクセス
neo4j/neo4j
追加/読み取り
python から
import os
import neo4j # pip install neo4j
from dotenv import load_dotenv
from neo4j.graph import Node
def main():
load_dotenv()
uri = os.environ.get("URI", "bolt://localhost:7687")
user = os.environ["USERNAME"]
pw = os.environ["PASSWORD"]
driver = neo4j.GraphDatabase.driver(uri, auth=(user, pw))
names = []
with driver.session() as session:
records = session.run("match (n) return n")
for record in records:
node: Node = record["n"]
names.append(node["name"])
print(names) # ['千代田区', '中央区', ... ]
driver.close()
import os
from dotenv import load_dotenv
import neo4j
NEIGHBOURS = {
"千代田区": ["中央区", "港区", "新宿区", "文京区", "台東区"],
"中央区": ["千代田区", "港区", "台東区", "墨田区", "江東区"],
…
}
def main():
load_dotenv()
uri = os.environ.get("URI", "bolt://localhost:7687")
user = os.environ["USERNAME"]
pw = os.environ["PASSWORD"]
driver = neo4j.GraphDatabase.driver(uri, auth=(user, pw))
with driver.session() as session:
for k, vs in NEIGHBOURS.items():
for v in vs:
session.run(
"match (a:City{name:$a}), (b:City{name:$b}) create (a)-[:Neighbour]->(b)",
{"a": k, "b": v},
)
driver.close()
隣の隣
?
?
?
?
?
https://ja.wikipedia.org/wiki/Template:%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8C%BA%E9%83%A8_imagemap
感想
● 思っていたよりはすんなりと試せた。
● where を作るときはしっかりとした理解が必要になりそう。
● グラフのビジュアライザがもっと賢いと嬉しい。
○ 実は何かあるかもしれない。

More Related Content

Similar to neo4j 触ってみた

Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
Ryan Poy
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
Nanha Park
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 

Similar to neo4j 触ってみた (20)

Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
オンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用についてオンプレでPrivate Registry使ったDockerイメージの運用について
オンプレでPrivate Registry使ったDockerイメージの運用について
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 

More from NipponAlgorithm (7)

Keyboard Input Hackathon 2023に参加してみた
Keyboard Input Hackathon 2023に参加してみたKeyboard Input Hackathon 2023に参加してみた
Keyboard Input Hackathon 2023に参加してみた
 
Rust使ってみた
Rust使ってみたRust使ってみた
Rust使ってみた
 
Excelドキュメントのちょこっと改善ツール
Excelドキュメントのちょこっと改善ツールExcelドキュメントのちょこっと改善ツール
Excelドキュメントのちょこっと改善ツール
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
VR勉強会2
VR勉強会2VR勉強会2
VR勉強会2
 
Glideで遊ぼう
Glideで遊ぼうGlideで遊ぼう
Glideで遊ぼう
 
Scoop!
Scoop!Scoop!
Scoop!
 

Recently uploaded

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

neo4j 触ってみた

Editor's Notes

  1. まず neo4j とは何かについて説明します。 データベースの種類として、リレーショナルデータベースではない、 NoSQL というものがいくつかあり、 そのうちのグラフベースデータベースと呼ばれているものの一つです。
  2. 環境構築です。 普通にインストールする方法もあるようですが、Virtual Box で作成した ubuntu の中で docker を使いました。 ポートが2つ必要で、片方は vscode が自動的転送してくれたのですが、もう片方は手動で設定する必要がありました。 起動したらブラウザから管理画面を開くことが出来ます。
  3. こういう独自の言語で記述します。 それぞれのノードとリレーションはクラスっぽいものを持っていて、ラベルと呼ばれているようです。 Pref とか City とか付けてるやつです。 「match」は「一致」というよりは「パターンマッチ」的な考えの方が近いと思います。 最初にプレビューした段階だと、ノードの位置にただの丸が書かれていますが、右の overview からどれを表示させるか選ぶことが出来ます。
  4. python からだとこういう感じになります。 サンプルコードを参考にして、特に迷うことは無いと思います。
  5. 全部追加しました。 プレビューはこんな感じになって、ちょっとよくわからないですが、多分ちゃんと追加出来てます。
  6. グラフDBっぽいこと、ということで、隣の隣を取得してみました。 隣のものや、自分自身も含まれてしまっています。 隣の隣であることに変わりはないので取得できてしまっています。
  7. このように修正しました。 掛け算の形で、複数のリレーションを表現することも出来るらしいです。 ちゃんと望み通りのデータが取得できています。 江東区が含まれているのは大田区と接しているためです。
  8. (読む)