Neo4jのインストールと簡単な使い方
I. Neo4jとグラフデータベースの紹介
neo4jは、グラフデータベースを記述するためのJavaベースの言語である。グラフとは、ノードとそのノードを結ぶ関係の集合のことである。グラフデータベースは、グラフデータベース管理システムまたはGDBMSとしても知られています。
Neo4jは有名なグラフデータベースです。その他、Oracle NoSQL Database、OrientDB、HypherGraphDB、GraphBase、InfiniteGraph、AllegroGraphなどがある。
Neo4jグラフデータベースの主な構成要素は以下の通りです。
- ノード:グラフの基本単位である。キーと値のペアを持つ属性を含む
- リレーションシップ:2つのノードを結ぶもので、単方向と双方向の方向がある。各リレーションシップには、「開始ノード」(from node)と「終了ノード」(end node)が含まれる。また、リレーションシップには、属性をキーと値のペアとして含めることができます。
- 属性:グラフのノードと関係を記述するために使用されるキーと値のペアです。キー = 値、ここでキーは文字列で、値は任意のNeo4jデータ型を使用して表現することができます。
- タグ:ノードを集合にグループ化する。共通の名前をノードまたはリレーションシップのセットに関連付ける。ノードまたはリレーションシップには、1つまたは複数のタグを含めることができる。既存のノードまたはリレーションシップに新しいタグを作成できる。既存のノードまたはリレーションシップから既存のタグを削除することができる。
- データブラウザ。CQLコマンドを実行し、出力結果を表示するために使用します。
II. Neo4jのインストール
私の環境はWin10なので、以下はWin10へのインストールを説明します。
2.1 Java JDKのインストール
neo4j は Java で書かれたグラフィカルなデータベースであり、実行時に JVM プロセスを起動する必要があるため、JAVA SE 用の JDK をインストールする必要があります。
JAVA SE JDK ダウンロード
インストール後、cmdタイプ
java -version
をクリックして、インストールされているかどうかを確認します。
2.2 Neo4jのダウンロードとインストール
Neo4jのダウンロードはこちらから
公式サイト
Neo4j Communityの最新版をダウンロードする。ダウンロードには会員登録が必要です
ダウンロードして、置きたいディスクなどに解凍してください。E:\Program Files (x86)\neo4j-community-3.4.0
Neo4j アプリケーションの主なディレクトリ構成は、以下のとおりです。
- binディレクトリ: Neo4jの実行ファイルを格納するディレクトリです。
- conf ディレクトリ: Neo4j の起動を制御するための設定ファイルです。
- data ディレクトリ: コアデータベース・ファイルを格納するために使用されます。
- plugins ディレクトリ: Neo4j のプラグインを格納します。
2.3 システム環境変数の作成
computer-propertiesにシステム環境変数を作成する
NEO4J_HOME
を設定し、ホームディレクトリ(E: \Program Files (x86)✰neo4j-community-3.4.0 )に変数の値を設定してください。
NEO4J_HOME=E:\Program Files (x86)\neo4j-community-3.4.0
次に、パスに
%NEO4J_HOME%\bin
.
2.4 Neo4jの起動と停止
方法1:コンソールからNeo4jアプリケーションを起動する
CMD管理者として実行(必ず管理者としてCMDを入力してください、そうしないと警告が表示されます。警告 このコマンドは管理者権限で実行されていないようです。一部のコマンドは失敗する可能性があります(例:Start/Stop)
入力してください。
neo4j.bat console
方法2:Neo4jをサービスとしてインストールする
サービスのインストールとアンインストール
neo4j install-service
neo4j uninstall-service
サービスの開始、サービスの停止、サービスの再起動、サービスの状態の問い合わせを行う。
neo4j start
neo4j stop
neo4j restart
neo4j status
(なお、ここに問題がある可能性があるので、https://blog.csdn.net/weixin_42103075/article/details/80473283 を参照し、直らない場合は
管理者として
(cmdを実行)
ブラウザで http://localhost:7474 を開くと、デフォルトでジャンプします。
http://localhost:7474/browser、Neo4jのインターフェースが表示されれば、インストールは成功です。
初期パスワード:neo4j 中に入ると、パスワードを変更することができます
もし
neo4j stop
は、neo4jを停止することができません。
使用方法
kill -s 9
を使用すると、プロセスを強制的に終了させることができます。
2.5 データベースの切り替え
neo4jを起動するたびに、1つのデータベースしか読み込むことができません。デフォルトではGraph.dbデータベースです。
方法1:設定ファイルを修正する
Neo3.x を使用すると、既存のデータベースを削除せずに新しいデータベースを作成することができるので、単に
$NEO4J_HOME\conf
を検索してください。
dbms.active_database=
別の名前に置き換えて、再度neo4jを起動します。今度は、そのディレクトリ名の下に新しいデータベースが作成されます。以前のデータベースへ戻すには、この手順を繰り返し、設定ファイルの新しい値を graph.db に置き換えるだけです。
注意:neo4jの起動中に設定ファイルを変更した場合、ブラウザのページを更新するために一旦再起動する必要があります。
方法2:ソフトコネクションを作成する
linux での方法の詳細は、https://blog.csdn.net/programmer_at/article/details/69570987 を参照してください。
III. Neo4jのCQL操作
CQLとは、Cypher Query Languageの略です。Oracle DatabaseにSQLというクエリ言語があるように、Neo4jにもCQLというクエリ言語があります。
Neo4jを起動した後、ソフトウェアのウィンドウでデータベースの作成場所を選択すると、Neo4jが自動的にデータベースを作成してくれます。
-
リレーショナル・データベースにおけるプライマリー・キーのような、インデックス効果を持つ一意性制約を作成します。これは、まだデータベースにデータが挿入されていないときにのみ設定できることに注意してください。
CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;
-
インデックスを作成します。
CREATE INDEX ON :Person(name);
-
すべてのノード数とエッジ数の表示
MATCH (n) RETURN count(n); MATCH ()-->() RETURN count(*);
-
ノードを挿入します。Person」カテゴリのノードを挿入し、このノードには属性名と属性値 Andres が設定されています。
CREATE (n:Person { name : 'Andres'});
-
エッジを挿入します。エッジクラスがFollowであるaからbへの有向エッジを挿入する。
MATCH (a:Person),(b:Person) WHERE a.name = 'Node A' AND b.name = 'Node B' CREATE (a)-[r:Follow]->(b);
-
ノードを更新します。Person」カテゴリのノードを新しい名前で更新します。
MATCH (n:Person { name: 'Andres' }) SET n.name = 'Taylor';
-
ノードとその接続エッジの削除 Neo4j では、ノードに接続されたエッジがある場合、ノードだけを削除することはできま せん。
MATCH (n:Person { name:'Andres' }) DETACH DELETE n;
-
エッジを削除します。
MATCH (a:Person)-[r:Follow]->(b:Person) WHERE a.name = 'Andres' AND b.name = 'Taylor' DELETE r;
グラフデータベースとして、いくつかのユニークなクエリ文があります。
-
最短経路。
MATCH (ms:Person { name:'Andres' }),(cs:Person { name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
-
2つのノードの関係を問い合わせる。
MATCH (a:Person { name:'Andres' })-[r]->(b:Person { name:'Taylor' }) RETURN type( r);
-
あるノードのすべてのFollowerを問い合わせます。
MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person) RETURN Person.name;
-
すべてのデータをクリアする(すべてのノードとリレーションシップを削除する)
MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r
上記の方法でノードとリレーションの両方が削除されますが、この削除では一部の情報(Propertyキーなど)が消去されずに残ってしまうため、linuxでは以下の方法でデータベースを完全削除しています。
>bin/neo4j stop >rm -rf data/databases/graph.db >bin/neo4j start
Windowsでは、data/databases/graph.dbやその他の指定されたdbにあるデータをすべて削除することができます。
その他は、以下のNeo4jユーザーマニュアルをご覧ください。 Neo4j ドキュメント
IV. csvファイルのインポート
まず、MySQLデータベースからcsvファイルをエクスポートし、インポートフォルダにコピーします。
E:\Program Files (x86)\neo4j-community-3.4.0\import
を実行し、次のステートメントを実行します。
//import node Movie type == note type conversion
LOAD CSV WITH HEADERS FROM "file:///genre.csv" AS line
MERGE (p:Genre{gid:toInteger(line.gid),name:line.gname})
//import nodes Actor information
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS line
MERGE (p:Person { pid:toInteger(line.pid),birth:line.birth,
death:line.death,name:line.name,
biography:line.biography,
birthplace:line.birthplace})
// Import node movie information
LOAD CSV WITH HEADERS FROM "file:///movie.csv" AS line
MERGE (p:Movie{mid:toInteger(line.mid),title:line.title,introduction:line.introduction,
rating:toFloat(line.rating),releasedate:line.releasedate})
// import relationship actedin who acted in the movie 1-to-many
LOAD CSV WITH HEADERS FROM "file:///person_to_movie.csv" AS line
match (from:Person{pid:toInteger(line.pid)}),(to:Movie{mid:toInteger(line.mid)})
merge (from)-[r:actedin{pid:toInteger(line.pid),mid:toInteger(line.mid)}]->(to)
//import relationship What type is the movie == 1 to many
LOAD CSV WITH HEADERS FROM "file:///movie_to_genre.csv" AS line
match (from:Movie{mid:toInteger(line.mid)}),(to:Genre{gid:toInteger(line.gid)})
merge (from)-[r:is{mid:toInteger(line.mid),gid:toInteger(line.gid)}]->(to)
参考URLです。
W3Cschool-neo4jチュートリアル
(推奨)
Neo4j公式チュートリアル
(推奨)
Neo4jの概要
win10にneo4jをインストールする
Neo4jインストール&スタート&いくつかの長所と短所
映画知識グラフに基づくスマートなクイズシステム (II) - Neo4jによるCSVファイルの取り込み
(連載, 非常に完成度の高い, java+spark)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例