Neo4j 가져 오기의 관계를 이용하여 데이터 가져 오기 및

배경

여기에 그림 삽입 설명
우리는 축제 장점과 단점 및 환경 기초 구조의 연구의 특성 neo4j 객체로 데이터베이스를 끌고있다 이해.
이제 갈 우리는 neo4j로 CSV의 데이터에 저장된 통화 기록에 대해 이야기하고, 당신은 데이터를 쿼리 갈 수와 관계 CQL 수입

1. 가져 오기 방법

수입 neo4j 방법이 많이있다, 나는 아마 요약 :

  1. 사이퍼 쓰기, 데이터의 각 부분에 대한 CREATE를 CREATE 문
  2. 사이퍼 는 LOAD를 CSV CSV 형식으로 문 데이터는 데이터로드 CSV 읽습니다.
  3. 자바에서 제공하는 공식 API - 일괄 삽입
  4. 다니엘에 의해 준비 일괄 가져 오기 도구
  5. 공식 neo4j 가져 오기 도구

비교 장점과 단점 :

문을 만들 부하 CSV 문 일괄 Inseter 일괄 가져 오기 neo4j 가져 오기
적용 현장 1 ~ 1w 노드 1w ~ 10w 노드 백만 개 이상의 노드 백만 개 이상의 노드 백만 개 이상의 노드
속도 매우 느린 (1000 개 노드 / S) 일반 (5000 개 노드 / S) 매우 빠른 (수십 노드 / s의 수천) 매우 빠른 (수십 노드 / s의 수천) 매우 빠른 (수십 노드 / s의 수천)
이점 사용하기 쉬운, 실시간 삽입. 사용하기 쉽고, 로컬로드 할 수 있습니다 원격 CSV, 실시간 삽입 이미 데이터를 가져올 수 있습니다 데이터베이스에 존재;를 기반으로 배치 지대는 직접 항아리 패키지를 실행하는 컴파일 할 수 있습니다 공식은 일괄 가져 오기 적은 자원을 점유보다 생산
결점 천천히 우리는 CSV로 데이터를 변환 할 필요가 CSV로 설정해야합니다;에만 JAVA에서, 정지 때 neo4j 삽입해야합니다 neo4j를 중지해야합니다, 우리는 CSV로 설정해야합니다 CSV로 설정해야합니다; Neo4j는 중지해야합니다에만 새 데이터베이스를 생성, 데이터가 이미 삽입 데이터베이스에 존재 할 수 없다

이 때문에 우리가 가져 많은 양의 데이터로 볼 수 있습니다 가져올 수있는 많은 방법이 있습니다, 그래서 여기에서 선택한 마지막 Neo4j - 가져 오기 , 당신은 또한 다른 방법으로 가져 오도록 선택할 수 있습니다

neo4j 가져 오기 사용

우리는 열 은 Using neo4j 가져 오기를 발췌을 볼 수있는 웹 사이트를

거대한 데이터 집합에 대한 슈퍼 빠른 일괄 가져 오기는 CSV가 좋은 곳입니다 LOAD
작은 수입 - 기록 범위 10M까지 즉, 중간 크기의 데이터를.
대용량 데이터 세트의 경우, (100B)의 기록 범위 즉, 우리는에 액세스 할 수있는
전문 대량 수입을.

고객 : 우리는 비슷한 주문 Neo4j에 데이터 가져 오기를 사용하려는
주문 및 제품을 포함한다.

이 도구는 경로에 있습니다 / / neo4j / 빈 / 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 한 줄의 텍스트 파일보다 문서를 편집하는 것이 더 쉬울 수 있습니다 안에 포함 할 수있다 필요합니다. 또한 압축 파일을 지원합니다.

  1. customers.csv직접와 마찬가지로 :Customer노드 레이블을 직접 등록 정보 파일에서 소개된다.
  2. 를 들어 :LABEL같은 사실 GET 노드 레이블 열 제품입니다.
  3. 세 개의 파일을 하나 개의 제목과 두 개의 콘텐츠 파일에서 주문 노드입니다.
  4. 입력 명령을 포함하고 제품에 포함 생성하기 위해 ID를 통해 광고 항목의 관계를.:CONTAINSorder_details.csv
  5. 순서를 다시 CSV 파일을 사용하여 주문 고객에 연결,하지만 이번에는 다른 머리글 사용 : 열 관련이없는 무시
    로 ID 열이 숫자 값을 포함 (만 디지털 ID : 문자열이 모든 표현 형을 -id 최적화).

노드 속성 이름 및 관계에 대한 열 이름은, 몇 가지 추가 특정 열 표시가 있습니다

  • name:ID - 나중에 노드의 칼럼을 통해 다시 연결을위한 글로벌 ID 열,
    • 당신이 그것을 (일시적으로) 저장되지 않습니다 속성 이름을두면이의 의미 내에서 -id 형이다
    • 당신이 교차 엔티티 ID를 반복 한 경우에는 괄호 엔티티 (ID 그룹)을 제공해야합니다 :ID(Order)
    • 당신의 ID가 전 세계적으로 유일한 경우이를 해제 할 수 있습니다
  • : LABEL - 라벨 항목 노드는, 다수의 라벨은 분리에 의해 분리 될 수있다
  • :START_ID, :END_ID- 사용되는 ID 그룹들에 사용되는 서류 칼럼, 참조 노드 ID : END_ID (순서)
  • :TYPE - 관계형 열
  • 다른 모든 열은 호텔로 인정하지만, 스킵이 비어있는 경우, 또는 때 주석됩니다 무시
  • 등로로, 뒷면의 이름을 추가하여 변환을 입력 :INT, :BOOLEAN
데이터 가져 오기 통화 로그

CSV에서 우리의 전화 기록을 마친 후 데이터는 다음과 같습니다

  1. 노드를 노드로 phones.csv 전화 번호 목록을 기록
    여기에 그림 삽입 설명

  2. phone_header 헤더 파일의 데이터를 하나 개의 라인
    phone:ID

  3. 파일 레코드 정보 설정된 관계로 덧셈과의 특성의 관계 후, 기록을 호출 call.csv
    여기에 그림 삽입 설명
    : 우익수 의미 왼쪽에서 첫 번째 행
    (125)의 총 재생 **** 150 136 0,743 5,301 ****로 시 분 동안 전화 통화 125 분의 평균

  4. 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
/ 먼저,이 살펴 보자 데이터베이스 정보
(222)
여기서 우리는 노드의 기존 번호, 얼마나 많은 관계를 볼 수 있습니다, 데이터베이스 정보 저장 공간을 점령
하고 우리는 전화 번호를 사회 원을 참조하십시오

match (p:phone{phone:"13825259929"})-[r]->(o) return p,o,r;

   
   
  • 1

여기에 그림 삽입 설명
해당 노드와, 바닥이 속성을 해당 될 것이다 관계에 마우스가 표시되면
지금 우리의 데이터 가져 오기가 완료 될 때
우리는 사람의 전화 기록의 원형을 보여 springboot + neo4j + D3를 사용합니다.

하나에 : Neo4j의 (a)도 지인 데이터베이스 neo4j의.

원본 주소 : HTTPS : //blog.csdn.net/qq_32519415/article/details/87942379

추천

출처www.cnblogs.com/jpfss/p/11289669.html