2014-12-10 2 views
2

최종 논문의 일부로, 은 그래프 지향 데이터베이스에서 관계형 데이터베이스, 특히 PostgreSQL 데이터베이스를 Neo4j 내장 데이터베이스로 변환해야합니다. 이제 그 길은 문제입니다. Rik Van Bruggen의 저서 「Learning Neo4j」에서는 Trascend 및 MuleSoft 도구를 사용하여 ETL 활동을 사용하여 데이터 가져 오기 프로세스를 설명하지만 공식 사이트에는 문서 작성 및 예제 도움이 아니라 문서 작성 방법에 대한 문서가 없습니다. 이러한 도구를 제외하고 내 자신의 코드를 사용하지 않고이 정보를 변환하는 데 사용할 수있는 다른 방법은 무엇입니까?관계형 데이터베이스를 그래프 데이터베이스로 변환

+1

CSV 가져 오기? 이걸 보셨나요? http://neo4j.com/developer/guide-importing-data-and-etl/ – MarcoL

+0

https://github.com/nuko-yokohama/neo4j_fdw –

+1

관계형 데이터를 그래프로 가져 오는 방법에 대해 묻고 있습니까? 또는 관계형 모델을 그래프 모델로 가져 오는 방법에 대해 묻고 있습니까? – FrobberOfBits

답변

3

관계형 DB에서 직접 내보내기/가져 오기 데이터는 일부 모델링 조언을 할 수 없습니다

잘 정규화 된 관계형 모델, 아직 성능상의 이유로 비정규되지 않은 동등한로 변환 할 수 있습니다 그래프 모델. 그래프 모델 셰이프는 대부분 유스 케이스에 의해 구동되므로 나중에 최적화 및 모델 진화의 기회가 생깁니다.

좋은 정규화 된 엔티티 - 관계 다이어그램은 종종 이미 괜찮은 그래프 모델을 나타냅니다. 그래도 사용할 수있는 신호 ER 다이어그램이있는 경우 가이드로 사용하십시오. 각 엔티티 테이블은 테이블의 각 행이 해당 테이블에

  • 열이 될 노드입니다
  • 노드의 레이블로 표현된다

    • : 여기

      는 변화와 함께 당신을 도울 몇 가지 도움말 노드 특성.
    • , 기술 기본 키를 제거 사업 차 키를
    • 을 유지 비즈니스 차 키의 고유 제한 조건을 추가, 자주 조회를 위해 인덱스를 추가는
    • 는, 다른 테이블에 관계 외래 키를 교체 이후
    • 제거 데이터를 제거 속성 기본값을 사용하여 해당 값을 저장할 필요가 없습니다.
    • 비정형 화되고 복제 된 테이블의 데이터는 별도의 노드로 분리되어 클리너 모델을 가져와야 할 수 있습니다.
    • 인덱스 컬럼 이름,
    • 테이블을 가입 관계로 변환된다 (이메일 1, EMAIL2, email3처럼) 배열 속성을 나타낼 수, 해당 테이블에 열이 관계의 속성이 될

    이해하는 것이 중요하다 데이터 가져 오기를 시작하기 전에 그래프 모델을 선택하면 해당 모델을 수화하는 작업이됩니다.

  • +0

    Michael, 다시 한번 감사드립니다. 나는 네 충고를 받아 들였다. 내 문제의 해결책으로 필요한 데이터를 관계형 모델에서 지향 그래프 데이터베이스로 변환하는 ETL 프로세스를 만들었습니다. 작업이 어려웠을뿐만 아니라 데이터가 예상되는 방식으로 배포되지 않았습니다.내 데이터베이스 소스에서 테이블은 엔티티를 나타내지 않고 필요한 모든 개념 (노드 및 관계)이 조직화되지 않으므로 변환 프로세스가 복잡해집니다. –

    3

    LOAD CSV이 최선의 방법 일 수 있지만 물론 CSV를 먼저 출력하는 것을 의미합니다. 다음은 몇 가지 훌륭한 리소스입니다 : 나는 또한 당신이 조금 루비를 작성할 수 있습니다 루비 보석을 작성했습니다

    http://neo4j.com/docs/stable/query-load-csv.html

    http://watch.neo4j.org/video/112447027

    http://jexp.de/blog/2014/06/load-csv-into-neo4j-quickly-and-successfully/

    http://jexp.de/blog/2014/10/load-cvs-with-success/

    http://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/

    var에서 데이터를 가져 오는 코드 . neo4apis이라고합니다. 당신은 어떻게 작동하는지에 대한 아이디어를 얻기 위해 neo4apis-트위터 보석 볼 수 있습니다 :

    https://github.com/neo4jrb/neo4apis-twitter/

    https://github.com/neo4jrb/neo4apis-twitter/blob/master/lib/neo4apis/twitter.rb

    실제로 구현하고자 봤는데 neo4apis - 액티브 가져올 쉽게 만들 ActiveRecord가있는 SQL에서

    +0

    음,이 작업을 시도했지만 소스 데이터 세트가 동일한 테이블에 있지 않습니다. 데이터베이스의 많은 테이블에서 혼란 스럽습니다. 정말, 나는 모두 CSV 로딩을 시도했다. 답변을 주셔서 감사합니다, 정말 예기치 않은 (이 사이트에서 내 첫 번째 질문)이 과거의 시간에 해결책을 찾았습니다 : Java 응용 프로그램에서 postgres 드라이버와 neo4j 임베디드 라이브러리를 사용하는 ETL 프로세스를 만드는 것입니다. –

    1

    데이터를 관계형에서 직접 내 보낸 후 neo4j로 가져올 수 없습니다.

    이것은 서로 다른 두 가지 데이터베이스 구조이기 때문에.

    관계형 데이터베이스-
    관계형 데이터베이스는 미리 정의 된 범주로 장착되어 데이터가 포함 된 테이블 세트입니다. 각 테이블 (관계라고도 함)에는 열에 하나 이상의 데이터 카테고리가 포함됩니다. 각 행은 열에 의해 정의 된 범주에 대한 고유 한 데이터 인스턴스를 포함합니다.

    그래프 지향 데이터베이스 -

    그래프 데이터베이스는 기본적으로 노드와 에지의 모음입니다. 각 노드는 개인 또는 비즈니스와 같은 엔티티를 나타내고 각 에지는 두 노드 간의 연결 또는 관계를 나타냅니다. 문제으로

    Sollution -

    첫째, 당신은 Neo4j 데이터 구조를 설계해야합니다. 예를 들어 필요한 노드는 무엇이며 노드 간의 관계는 무엇입니까?

    그런 다음 응용 프로그램 언어로 스크립트를 작성하여 관계형 데이터베이스에서 데이터를 가져 와서 neo4j에 삽입하십시오.

    로드 CSA은 그래프 데이터베이스가있는 기능을 가져 오기/내보내기 (백업) 할 수있는 옵션입니다. 당신은 그래프 DB

    관련 문제