背景
私たちは、祭りの長所と短所と環境基本構造の研究の特徴のNeo4jオブジェクトとしてデータベースを描いているものを理解しています。
今、私たちはのNeo4jにcsvファイル内のデータに保存された通話記録について話行く、とあなたは、データとCQLによる輸入の関係を照会するために行くことができます
1. [インポート方法
輸入のNeo4jの道がたくさんありますが、私はおそらくまとめ:
- サイファーCREATE文を、データごとにCREATEを書きます
- サイファーLOADのCSV CSV形式に文のデータは、データがLOADのCSVによって読み取られます。
- ジャワによる公式API - バッチサーター
- ダニエルによって調製バッチインポートツール
- 公式のNeo4jインポートツール
比較長所と短所:
文を作成します | 負荷のcsv声明 | バッチInseter | バッチインポート | Neo4jインポート | |
---|---|---|---|---|---|
該当シーン | 1〜1ワットのノード | 1ワット〜10ワットのノード | 万個の以上のノード | 万個の以上のノード | 万個の以上のノード |
スピード | 非常に遅い(千のノード/秒) | 一般(5000個のノード/秒) | 非常に高速(数十ノード/秒の何千もの) | 非常に高速(数十ノード/秒の何千もの) | 非常に高速(数十ノード/秒の何千もの) |
利点 | 使いやすく、リアルタイムの挿入。 | 使いやすく、ローカルにロードすることができます | リモートCSV;リアルタイムの挿入 | すでにデータをインポートすることができ、データベースに存在しています。ベースのバッチサーターは、直接のjarパッケージを実行するためにコンパイルすることができます | 公式には、バッチインポートは、より少ないリソースを占有するよりも、生産しました |
短所 | 遅いです | 私たちは、csvファイルにデータを変換する必要があります | CSVに有効にする必要があり、唯一のJAVAに、停止したときのNeo4j挿入する必要があります | Neo4jを停止する必要があります。私たちは、CSVに変身する必要があります | CSVに変身する必要があります。のNeo4jは停止しなければならない。唯一の新しいデータベースを生成し、データが既に挿入されたデータベースに存在することはできません |
そこに起因我々は、インポート大量のデータを、見ることができますインポートする多くの方法があるので、私はここで選択した最後のものであるのNeo4j-インポート、あなたはまた、他の方法をインポートすることを選択できます
Neo4jインポートの使用
私たちは、開かれた使用のNeo4j-インポートをこの抜粋を見ることができるWebサイトを
巨大なデータセットの超高速バッチ輸入CSVが最適ですLOAD
小さなインポートする-つまりレコードは範囲10Mまで、中規模のデータを。
大規模なデータセットの場合、すなわち100Bレコードが範囲内に、我々はへのアクセス持っている
専門の一括インポートツールを。私たちは、のNeo4jに類似した注文データをインポートするためにそれを使用する:顧客、
受注、製品が含まれていました。ツールは、パス/に/のNeo4j / binに/のNeo4jインポートに位置し、として使用される
次の
この通路の一般的な意味は、私たちは私たちのビジネスニーズを満たすために、データのロードのcsvを大量に使用することはできませんので、我々はこのように、ここで我々が選んだのNeo4jインポートをインポートするための新しい方法を選択しなければならなかったということです、次は、インポートされ例
bin/neo4j-import --into retail.db --id-type string \
--nodes:Customer customers.csv --nodes products.csv \
--nodes orders_header.csv,orders1.csv,orders2.csv \
--relationships:CONTAINS order_details.csv \
--relationships:ORDERED customer_orders_header.csv,orders1.csv,orders2.csv
例えば、データ構造は:
あなたが呼び出す場合neo4j-import
のパラメータなしでスクリプトを、それが包括的なヘルプページの一覧が表示されます。
これは--into retail.db
明らかにターゲット・データベースであり、既存のデータベースを含めることはできません。
繰り返す--nodes
と--relationships
パラメータは、(おそらくスプリット)CSVファイル群、すなわち、同じカラム構成を有する複数の同一のエンティティです。
各グループのすべてのファイルが一つの大きなファイルに接続されていると考えられます。ファイルヘッダ行の最初のグループが必要とされ、それも、その中にマルチGB単一行のテキストファイルより文書を処理し、編集が容易であり得る含まれていてもよいです。また、圧縮ファイルをサポートしています。
customers.csv
直接のと同じように:Customer
ノードラベルを直接プロパティファイルから、導入されます。- 以下のために
:LABEL
同じ真GETノードラベル列製品です。 - 三つのファイル、1つのタイトルと2つのコンテンツファイルからの受注は、ノード。
- 入力受注を含め、製品に含まれ、作成するためにそのIDを介してラインアイテムの関係を。
:CONTAINS
order_details.csv
- カラムに関連しない無視:異なるヘッダ使用している顧客に接続するため再度CSVファイルを使用して注文、今回
ID列は英数字の値であることが(のみデジタルIDが含まれています。-id型ストリングは、すべてを表します最適化)。
ノードのプロパティ名との関係のための列名は、いくつかの追加の特定の列のマークがあります
name:ID
- それ以降のノードの列を介して再接続のためのグローバルID列、- あなたがプロパティ名を残す場合は、それが(一時的に)保存されません、これはの意味の範囲内-id型であります
- あなたは、クロスエンティティIDを繰り返している場合は、括弧内のエンティティ(ID-グループ)を提供しなければなりません
:ID(Order)
- あなたのIDは、グローバルに一意である場合、あなたはそれをオフにすることができます
- :ラベル - ラベル列ノード、複数のラベルはデリミタによって分離することができます
:START_ID
、:END_ID
- 使用されるID-グループに使用書類カラム、基準ノードID、:END_ID(注文):TYPE
- リレーショナル列- 他のすべての列は、プロパティと考えられるが、スキップが空である場合、または時にコメントされています。IGNORE
- このようなことなどによって、背中の名前を追加することにより、型変換
:INT
、:BOOLEAN
等
インポートデータコールログ
csvファイルでは、当社の通話記録を終えた後のデータは次のとおりです。
-
ノードをノードとしてphones.csvは、電話番号リストを記録しました
-
phone_headerヘッダファイルデータの一方のみ行
phone:ID
-
ファイルレコード情報は、確立された関係との特性の間の関係として添加した後、レコードを呼び出すcall.csv
:左から右のフィールドの意味の最初の行
125の合計を再生5301から150 **** 136 **** 0743とき分長い電話、125分の平均 -
call_header.csv呼レコードヘッダ情報は、
本明細書に:START_ID
出発点との間の関係を指し、:END_ID
それは、終端点との間の関係を指します
これらのCSVファイルの準備ができたら、私たちはこれらのファイルを実行するシェルスクリプトを作成します。
import()
{
#导入命令
neo4j stop
cd /usr/local/Cellar/neo4j/3.5.0/libexec/data/databases
rm -rf graph.db
cd /Documents/归档/data
neo4j-admin import \
--database=graph.db
--nodes:phone="../phone_header.csv,phones.csv \
--ignore-duplicate-nodes=true \
--ignore-missing-nodes=true \
--relationships:call="../call_header.csv,call.csv"
neo4j start
}
- ここで我々は、既存のライブラリを削除することを選択した、新しいデータベースがすでに存在している予防し、その後インポート
- 私が最初に近いのNeo4jを覚えています
表示結果
インポートが完了したら、我々は輸入のブラウザルックのNeo4j結果を開いて
、我々はオープンにhttp:// localhostを:/ブラウザは、7474
/ まずは、見てみましょうデータベース情報
ここでは、ノードの既存の番号、どのように多くの関係を見ることができ、データベース情報の保管スペースを占有
し、我々は、電話番号、ソーシャルサークルを参照してください。
match (p:phone{phone:"13825259929"})-[r]->(o) return p,o,r;
- 1
対応するノードと、下のプロパティを対応される関係上にマウスが表示されたら
、今我々のデータのインポートが完了している
し、我々が人の通話記録の円を表示するためにspringboot +のNeo4j + D3を使用しています。