人気のあるグラフDB Neo4jの環境をこちらとこちらの手順で構築した手順をまとめます。
##事前準備
javaが必要※な為、Java最新Version install
yum -y install java-1.8.0-openjdk
##Neo4jのインストールと確認
yumでのインストールはこちらの手順
rpm --import https://debian.neo4j.org/neotechnology.gpg.key
vi /etc/yum.repos.d/neo4j.repo
[neo4j]
name=Neo4j RPM Repository
baseurl=https://yum.neo4j.org/stable
enabled=1
gpgcheck=1
yum -y install neo4j-3.4.9
neo4j --version
##Neo4jサービスの起動
サービス起動時に管理ツールがhttp://localhost:7474 で起動される
systemctl enable neo4j
systemctl start neo4j
##リモートアクセスの許可
neo4l.confの設定
vi /etc/neo4j/neo4j.conf
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=XX.XX.XX.XX:7474 #サーバーのIPアドレス
dbms.connector.bolt.listen_address=0.0.0.0:7687 #Boltプロトコルコネクタ
(0.0.0.0追加 :漏れていると下記エラー)
systemctl restart neo4j
firewall-cmd --add-port=7474/tcp --zone=public --permanent
firewall-cmd --add-port=7687/tcp --zone=public --permanent
firewall-cmd --reload
※エラー: “WebSocket connection failure. Due to security constraints in your web browser, the reason for the failure is not available to this Neo4j Driver”
##管理コンソール
http://XX.XX.XX.XX:7443にneo4j/neo4j (デフォルトパスワード)でアクセス
##グラフDBの用語
- ノード: データレコード 例)従業員、会社、都市
- リレーションシップ: ノード間の関係 例)会社のCEO、会社の所在都市
- プロパティ: ノード/リレーションシップの持つ属性 例)従業員の名前、CEOの在任期間、
##Nodeの追加
目的)Aさん(所属: 開発部) はBさん(所属: 経理部)を知っているというデータを登録
ノード追加)まずAさん(所属: 開発部)とBさん(所属: 経理部)を登録。
Neo4jではsql likeな Cypher を使って記述する。
CREATE (a_san:Person { name: "Aさん", 所属: "開発部" }), (b_san:Person { name: "Bさん", 所属: "経理部" })
RETURN a_san, b_san;
##リレーションシップの追加
AさんはBさんを知っている
MATCH (a_san: Person), (b_san: Person)
WHERE a_san.name = "Aさん" AND b_san.name = "Bさん"
CREATE (a_san)-[r:知っている]->(b_san)
RETURN r;
##チュートリアルの実施
下記コマンドでチュートリアルを呼び出す
:play movie graph
例)俳優Kevin Baconから、4つ先までの関係する映画/俳優
例)Kevin BaconからMeg Lyanまでの映画/俳優関係の最短パス
##Neo4j : 主な用途
Amazon グラフデータベースとは?より
-
不正検出
リレーションシップにより、購入トランザクションをほぼリアルタイムに処理可能
例)これから購入予定の人が、既知の不正事例に含まれるEメールアドレスとクレジットカードを使おうとしていることを検出
また、同じEメールアドレスや、同じIP アドレスを共有する複数の人物の関係性も検出可能 -
レコメンデーション
DB内に、顧客の興味、友人、購入履歴等のリレーションシップを保持し、購入履歴が似ている他のユーザーが購入した製品に基づいて、ユーザーに製品を推奨することが可能
また、共通の友人がるが、互いに知り合いでない人々に友人関係の推奨を行うことも可能