Gremlin 로드 데이터 형식 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Gremlin 로드 데이터 형식

CSV 형식을 사용하여 Apache TinkerPop Gremlin 데이터를 로드하려면 꼭지점과 가장자리를 별도의 파일에 지정해야 합니다.

로더는 로드 작업 한 번으로 여러 Vertex 파일과 여러 엣지 파일을 로드할 수 있습니다.

각 로드 명령의 경우 로드할 파일 세트가 Amazon S3 버킷과 동일 폴더에 있어야 하며, source 파라미터의 폴더 이름을 지정합니다. 파일 이름과 파일 이름 확장자는 중요하지 않습니다.

Amazon Neptune CSV 형식은 RFC 4180 CSV 사양을 따릅니다. 자세한 내용은 IETF(국제 인터넷 표준화 기구) 웹사이트의 CSV 파일의 공통 형식 및 MIME 유형을 참조하십시오.

참고

모든 파일은 UTF-8 형식으로 인코딩되어야 합니다.

각 파일마다 쉼표로 분리된 헤더 행이 있습니다. 헤더 행은 시스템 열 헤더와 속성 열 헤더로 구성됩니다.

시스템 열 헤더

버텍스 파일과 엣지 파일의 필수 및 허용되는 시스템 열 헤더가 다릅니다.

각 시스템 열을 헤더에 한 번만 표시할 수 있습니다.

모든 레이블은 대/소문자를 구분합니다.

버텍스 헤더

  • ~id - 필수

    버텍스 ID.

  • ~label

    버텍스 레이블. 세미콜론(;)으로 구분된 여러 레이블 값을 사용할 수 있습니다.

    모든 꼭짓점에는 적어도 하나의 ~label 레이블이 있어야 하기 때문에 이 (가) 없는 경우 레이블에 값을 TinkerPop vertex 제공합니다.

엣지 헤더

  • ~id - 필수

    엣지 ID.

  • ~from - 필수

    from 버텍스의 버텍스 ID.

  • ~to - 필수

    to 버텍스의 버텍스 ID.

  • ~label

    엣지의 레이블. 엣지에는 단일 레이블만 포함될 수 있습니다.

    ~label가 없는 경우 모든 모서리에 레이블이 있어야 edge 하므로 레이블에 값을 제공합니다. TinkerPop

속성 열 헤더

다음 구문을 사용하여 속성 열(:)을 지정할 수 있습니다. 유형 이름은 대/소문자를 구분하지 않습니다. 단, 속성 이름 내에 콜론이 나타나면 앞에 백슬래시(\:)를 붙여 이스케이프 처리해야 합니다.

propertyname:type
참고

열 헤더에는 공백, 쉼표, 캐리지 리턴 및 개행 문자를 사용할 수 없으므로 속성 이름에는 이러한 문자를 포함할 수 없습니다.

유형에 []를 추가하여 어레이 유형의 열을 지정할 수 있습니다.

propertyname:type[]
참고

엣지 속성은 단일 값만 가질 수 있으며 배열 유형이 지정되거나 두 번째 값이 지정되면 오류가 발생합니다.

다음 예는 이름이 ageInt 형식 속성의 열 헤더를 보여줍니다.

age:Int

파일의 각 행마다 해당 위치에 정수가 있거나 비어 있어야 합니다.

문자열 배열은 허용되지만, 다음과 같이 백슬래시(\;)를 사용하여 이스케이프하지 않는 한 배열의 문자열에는 세미콜론(;) 문자를 포함할 수 없습니다.

열 카디널리티 지정

릴리스 1.0.1.0.200366.0(2019년 7월 26일)부터 시작하여 열 헤더를 사용하여 열로 식별되는 속성에 대한 카디널리티를 지정할 수 있습니다. 이를 통해 벌크 로더가 Gremlin 쿼리 작업 방식과 유사하게 카디널리티를 적용할 수 있습니다.

열의 카디널리티를 지정하는 방식은 다음과 같습니다.

propertyname:type(cardinality)

카디널리티 값은 single 또는 set이 될 수 있습니다. 기본값은 set이 될 것이며, 이는 열에 여러 값을 적용할 수 있음을 의미합니다. 엣지 파일의 경우 카디널리티는 항상 하나뿐이며 다른 카디널리티를 지정하면 로더에서 예외가 발생합니다.

카디널리티가 single이면 값이 로드될 때 이전 값이 이미 있거나 여러 값이 로드되는 경우 로더에서 오류가 발생합니다. 이러한 동작은 updateSingleCardinalityProperties 플래그를 사용하여 새 값을 로드할 때 기존 값이 대체되도록 재정의될 수 있습니다. 로더 명령 섹션을 참조하십시오.

일반적으로 필요한 경우는 아니지만 카디널리티 설정을 어레이 유형과 함께 사용할 수 있습니다. 가능한 조합은 다음과 같습니다.

  • name:type   –   카디널리티가 set이고, 콘텐츠가 단일 값입니다.

  • name:type[]   –   카디널리티가 set이고, 콘텐츠가 복수 값입니다.

  • name:type(single)   –   카디널리티가 single이고, 콘텐츠가 단일 값입니다.

  • name:type(set)   –   카디널리티가 기본값과 동일한 set이고, 콘텐츠가 단일 값입니다.

  • name:type(set)[]   –   카디널리티가 set이고, 콘텐츠가 복수 값입니다.

  • name:type(single)[]   –   이는 서로 맞지 않아서 오류가 발생합니다.

다음 단원에는 사용 가능한 모든 Gremlin 데이터 유형이 나옵니다.

Gremlin 데이터 유형

이것은 허용되는 속성 유형 목록과 각 유형의 설명입니다.

Bool(또는 부울)

부울 필드를 나타냅니다. 허용된 값: false, true

참고

true 이외의 값은 false로 처리됩니다.

정수 유형

정의된 범위를 벗어난 값은 오류를 야기합니다.

유형 Range
바이트 -128~127
Short -32768~32767
정수 -2^31 ~ 2^31-1
Long -2^63 ~ 2^63-1
십진수 유형

십진 기수법 또는 과학적 기수법 모두 지원됩니다. (+/-) Infinity 또는 NaN 같은 기호도 허용됩니다. INF는 지원되지 않습니다.

유형 Range
Float 32비트 IEEE 754 부동 소수점
Double 64비트 IEEE 754 부동 소수점

너무 긴 부동 소수점과 이중 값은 로드되어 24비트(부동 소수점)와 53비트(이중 값) 정확도를 위해 근사치로 반올림됩니다. 비트 수준에서 마지막으로 남은 숫자는 중간 값을 0으로 반올림합니다.

String

인용 부호는 선택사항입니다. 쉼표, 줄 바꿈 및 캐리지 리턴 문자가 큰 따옴표(")로 묶인 문자열에 포함된 경우에는 자동으로 이스케이프됩니다. : "Hello, World"

인용된 문자열에 인용 부호를 포함하려면 한 행에 두 개를 사용하여 인용 부호를 이스케이프할 수 있습니다(예: "Hello ""World""").

문자열 배열은 허용되지만, 다음과 같이 백슬래시(\;)를 사용하여 이스케이프하지 않는 한 배열의 문자열에는 세미콜론(;) 문자를 포함할 수 없습니다.

어레이 안의 문자열을 인용 부호로 묶으려면 전체 어레이를 한 세트의 인용 부호로 묶어야 합니다. : "String one; String 2; String 3"

날짜

ISO-8601 형식의 Java 날짜. 지원되는 형식: yyyy-MM-dd, yyyy-MM-ddTHH:mm, yyyy-MM-ddTHH:mm:ss, yyyy-MM-ddTHH:mm:ssZ

Gremlin 행 형식

구분 기호

행의 필드는 쉼표로 구분합니다. 기록은 줄 바꿈 또는 줄 바꿈 다음의 캐리지 리턴으로 구분합니다.

빈 필드

빈 필드는 비-필수 열(예: 사용자 정의 속성)에 허용됩니다. 빈 필드도 쉼표 구분자가 필요합니다. 필수 열에 빈 필드가 있으면 구문 분석 오류가 발생합니다. 빈 문자열 값은 빈 필드가 아닌 필드의 빈 문자열 값으로 해석됩니다. 다음 단원의 예는 각 예제 버텍스마다 빈 필드가 있습니다.

버텍스 ID

~id 값은 각 버텍스 파일의 모든 버텍스마다 고유해야 합니다. ~id 값이 동일한 여러 버텍스 행은 그래프의 단일 버텍스에 적용됩니다. 빈 문자열 ("") 은 유효한 ID이며, 꼭지점은 빈 문자열을 ID로 사용하여 만들어집니다.

엣지 ID

그리고 ~id 값은 각 엣지 파일의 모든 엣지마다 고유해야 합니다. ~id 값이 동일한 여러 엣지 행은 그래프의 단일 엣지에 적용됩니다. 빈 문자열 ("") 은 유효한 ID이며, 빈 문자열을 ID로 사용하여 가장자리가 생성됩니다.

레이블

레이블은 대소문자를 구분하며 비워둘 수 없습니다. 값이 "" 0이면 오류가 발생합니다.

문자열 값

인용 부호는 선택사항입니다. 쉼표, 줄 바꿈 및 캐리지 리턴 문자가 큰 따옴표(")로 묶인 문자열에 포함된 경우에는 자동으로 이스케이프됩니다. 빈 문자열 ("") 값은 빈 필드가 아닌 필드의 빈 문자열 값으로 해석됩니다.

CSV 형식 사양

Neptune CSV 형식은 다음 요건을 포함하여 RFC 4180 CSV 사양을 따릅니다.

  • Unix와 Windows 스타일 라인 엔딩이 지원됩니다(\n 또는 \r\n).

  • 모든 필드에 따옴표를 붙일 수 있습니다(큰 따옴표 사용).

  • 줄 바꿈 문자, 큰 따옴표 또는 쉼표가 있는 필드는 따옴표를 붙여야 합니다. (안 그러면 로드가 즉시 중단됩니다.)

  • 필드의 큰 따옴표 문자(")는 따옴표 문자 2개(큰 따옴표)로 표현해야 합니다. 예를 들어, 문자열 Hello "World"는 데이터에 "Hello ""World"""로 표시되어야 합니다.

  • 구분 문자 사이의 공백은 무시됩니다. 행이 로 value1, value2 존재하면 "value1" 및 로 저장됩니다"value2".

  • 기타 이스케이프 문자는 축자로 저장됩니다. 예를 들어, "data1\tdata2""data1\tdata2"로 저장됩니다. 이러한 문자가 인용 부호 안에 들어 있을 때는 이스케이핑이 필요 없습니다.

  • 빈 필드가 허용됩니다. 빈 필드는 빈 값으로 간주됩니다.

  • 필드의 여러 값은 값 사이에 세미콜론(;)으로 지정됩니다.

자세한 내용은 IETF(국제 인터넷 표준화 기구) 웹사이트의 CSV 파일의 공통 형식 및 MIME 유형을 참조하십시오.

Gremlin 예제

다음 다이어그램은 TinkerPop 모던 그래프에서 가져온 꼭짓점 두 개와 간선의 예를 보여줍니다.

버텍스 2개와 엣지를 묘사한 그림에 marko 나이 29와 lang: java를 사용하는 lop 소프트웨어가 포함되어 있습니다.

다음은 Neptune CSV 로드 형식의 그래프입니다.

버텍스 파일:

~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software

버텍스 파일의 테이블 형식 보기:

~id name:String age:Int lang:String 관심 분야: 문자열 [] ~label
v1 "marko" 29 ["항해”, “그래프”] person
v2 "lop" "java" software

엣지 파일:

~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4

엣지 파일의 테이블 형식 보기:

~id ~from ~to ~label weight:Double
e1 v1 v2 생성 완료 0.4
다음 단계

로딩 형식에 대한 자세한 내용은 예제: Neptune DB 인스턴스에 데이터 로드 단원을 참조하십시오.