Neptune 스트림 사용 - Amazon Neptune

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

Neptune 스트림 사용

Neptune 스트림 기능을 사용하면 그래프 데이터에 대해 이루어진 모든 변경을 기록하는 변경-로그 항목에 대한 완벽한 시퀀스를 생성할 수 있습니다. 이 기능에 대한 개요는 Neptune 스트림을 통해 실시간으로 그래프 변경 캡처 단원을 참조하십시오.

Neptune 스트림 활성화

neptune_streams DB 클러스터 파라미터를 설정하여 언제든지 Neptune 스트림을 활성화하거나 비활성화할 수 있습니다. 이 파라미터를 1로 설정하면 Streams가 활성화되고 0로 설정하면 Streams가 비활성화됩니다.

참고

neptune_streams DB 클러스터 파라미터를 변경한 후에는 클러스터의 모든 DB 인스턴스를 재부팅해야만 변경 사항이 적용됩니다.

neptune_streams_expiry_days DB 클러스터 파라미터를 설정하여 스트림 레코드가 삭제되기 전까지 서버에 남아 있는 기간을 1일에서 90일까지 제어할 수 있습니다. 기본값은 7입니다.

Neptune 스트림은 처음에 DB 클러스터 neptune_lab_mode 파라미터를 사용하여 랩 모드에서 활성화하거나 비활성화하는 실험적 기능으로 도입되었습니다(Neptune 랩 모드 참조). 랩 모드를 사용하여 Streams를 활성화하는 기능은 현재 사용되지 않고 있으며 향후 비활성화될 예정입니다.

Neptune 스트림 비활성화

실행 중에 언제라도 Neptune 스트림을 비활성화할 수 있습니다.

Streams를 끄려면 neptune_streams 파라미터 값이 0으로 설정되도록 DB 클러스터 파라미터 그룹을 업데이트합니다.

중요

스트림이 비활성화 되는 즉시 변경-로그 데이터에 더 이상 액세스할 수 없습니다. 스트림을 비활성화 하기 전에 관심 있는 데이터를 읽어야 합니다.

넵튠 스트림에 전화하기 REST API

다음 로컬 엔드포인트 중 하나로 요청을 보내는 HTTP GET 를 사용하여 REST API Neptune Streams에 액세스합니다.

  • SPARQL그래프 DB의 경우:. https://Neptune-DNS:8182/sparql/stream

  • 그렘린 또는 openCypher 그래프 DB의 경우: https://Neptune-DNS:8182/propertygraph/stream 또는. https://Neptune-DNS:8182/pg/stream

참고

엔진 릴리스 1.1.0.0부터 Gremlin 스트림 엔드포인트(https://Neptune-DNS:8182/gremlin/stream)와 관련 출력 형식(GREMLIN_JSON)은 더 이상 사용되지 않습니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.

HTTPGET오퍼레이션만 허용됩니다.

Neptune은 요청에 허용된 압축 형식 (즉HTTP,) 으로 gzip 지정하는 헤더가 포함된 Accept-Encoding 경우 응답 압축을 gzip 지원합니다. "Accept-Encoding: gzip"

파라미터
  • limit   –   길이(선택 사항). 범위: 1~100,000. 기본값: 10.

    반환할 최대 레코드 수를 지정합니다. 수정이 불가능하고 limit 파라미터에 지정된 레코드 수보다 우선하는 응답의 경우 10MB로 크기가 제한됩니다. 10MB 제한에 도달하면 이러한 응답에 임곗값 위반 레코드가 포함됩니다.

  • iteratorType   –   문자열(선택 사항).

    이 파라미터는 다음 값 중 하나를 가질 수 있습니다.

    • AT_SEQUENCE_NUMBER(기본)   –   읽기가 commitNumopNum 파라미터에서 공동으로 지정된 이벤트 시퀀스 번호부터 시작해야 한다는 것을 나타냅니다.

    • AFTER_SEQUENCE_NUMBER   –   읽기가 commitNumopNum 파라미터에서 공동으로 지정된 이벤트 시퀀스 번호 바로 뒤부터 시작해야 한다는 것을 나타냅니다.

    • TRIM_HORIZON   –   읽기가 시스템에서 잘리지 않은 마지막 레코드, 즉 변경-로그 스트림에서 만료되지 않은(아직 삭제되지 않은) 가장 오래된 레코드에서 시작되어야 한다는 것을 나타냅니다. 이 모델은 특정한 시작 이벤트 시퀀스 번호가 없을 때 애플리케이션 시작 단계에서 유용합니다.

    • LATEST   –   읽기가 시스템에서 가장 최근 레코드, 즉 변경-로그 스트림에서 만료되지 않은(아직 삭제되지 않은) 최신 레코드에서 시작되어야 한다는 것을 나타냅니다. 이는 재해 복구 또는 제로 다운타임 업그레이드 중과 같이 오래된 레코드를 처리하지 않기 위해 현재 최상위 스트림에서 레코드를 읽어야 하는 경우에 유용합니다. 이 모드에서는 최대 하나의 레코드만 반환된다는 점에 유의하세요.

  • commitNum— long, 인 경우 또는 인 경우 iteratorType 필수입니다. AT_SEQUENCE_NUMBER AFTER_SEQUENCE_NUMBER

    변경-로그 스트림에서 읽어올 시작 레코드의 커밋 수입니다.

    iteratorTypeTRIM_HORIZON 또는 LATEST인 경우 이 파라미터는 무시됩니다.

  • opNum  –  길이로, 선택 사항(기본값은 1)입니다.

    변경-로그 스트림 데이터에서 읽어오기를 시작하기 위해 지정된 커밋 내의 작업 시퀀스 수입니다.

SPARQL그래프 데이터를 변경하는 작업은 일반적으로 작업당 하나의 변경 기록만 생성합니다. 그러나 다음 예제에서와 같이 Gremlin 그래프 데이터를 변경하는 작업은 작업당 여러 개의 변경 레코드를 생성할 수 있습니다.

  • INSERT   –   하나의 Gremlin 버텍스에는 여러 개의 레이블이 포함될 수 있으며, 하나의 Gremlin 요소에는 여러 개의 속성이 포함될 수 있습니다. 요소가 삽입되면 각 레이블 및 속성에 대해 별도의 변경 레코드가 생성됩니다.

  • UPDATE   –   Gremlin 요소 속성이 변경되면 2개의 변경 레코드가 생성됩니다. 하나는 이전 값을 제거하기 위한 것이고, 다른 하나는 새 값을 삽입하기 위한 것입니다.

  • DELETE   –   삭제된 각 요소 속성에 대해 별도의 변경 레코드가 생성됩니다. 예를 들어 속성이 포함된 Gremlin 엣지가 삭제되면 각각의 속성에 대해 하나의 변경 레코드가 생성되고, 그 이후에 엣지 레이블 삭제를 위해 또 하나가 생성됩니다.

    Gremlin 버텍스가 삭제되면 모든 수신 및 발신 엣지 속성이 먼저 삭제되고, 그 다음으로는 엣지 레이블과 버텍스 속성이, 그리고 마지막으로 버텍스 레이블이 삭제됩니다. 삭제를 할 때마다 변경 레코드가 생성됩니다.

Neptune 스트림 응답 형식 API

Neptune REST API Streams 요청에 대한 응답에는 다음과 같은 필드가 있습니다.

  • lastEventId   –   스트림 응답의 마지막 변경에 대한 시퀀스 식별자입니다. 이벤트 ID는 두 개의 필드로 이루어져 있는데, commitNum은 그래프를 변경한 트랜잭션을 식별하고 opNum는 해당 트랜잭션 내에서 특정 작업을 식별합니다. 방법은 다음 예제와 같습니다.

    "eventId": { "commitNum": 12, "opNum": 1 }
  • lastTrxTimestamp   –   트랜잭션에 대한 커밋이 요청된 시점입니다(Unix epoch의 밀리초).

  • format   –   반환 중인 변경 레코드에 대한 직렬화 형식입니다. 가능한 값은 Gremlin 또는 openCypher 변경 레코드와 변경 레코드에 PG_JSON 대한 값입니다. NQUADS SPARQL

  • records   –   응답에 포함된 직렬화된 변경-로그 스트림 레코드의 배열입니다. records 배열의 각 레코드에는 다음 필드가 포함됩니다.

    • commitTimestamp   –   트랜잭션에 대한 커밋이 요청된 시점입니다(Unix epoch의 밀리초).

    • eventId   –   스트림 변경 레코드의 시퀀스 식별자입니다.

    • data— 직렬화된 그렘린 또는 변경 기록. SPARQL OpenCypher 각 레코드의 직렬화된 형식은 다음 섹션 Neptune 스트림의 직렬화 형식에 자세히 설명되어 있습니다.

    • op   –   변경을 일으킨 작업입니다.

    • isLastOp   –   이 작업이 트랜잭션의 마지막 작업인 경우에만 표시됩니다. 있는 경우 true로 설정됩니다. 전체 트랜잭션이 사용되도록 하는 데 유용합니다.

  • totalRecords   –   응답의 총 레코드 수입니다.

예를 들어, 다음 응답은 2개 이상의 작업이 포함된 트랜잭션에 대해 Gremlin 변경 데이터를 반환합니다.

{ "lastEventId": { "commitNum": 12, "opNum": 1 }, "lastTrxTimestamp": 1560011610678, "format": "PG_JSON", "records": [ { "commitTimestamp": 1560011610678, "eventId": { "commitNum": 1, "opNum": 1 }, "data": { "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a", "type": "vl", "key": "label", "value": { "value": "vertex", "dataType": "String" } }, "op": "ADD" } ], "totalRecords": 1 }

다음 응답은 트랜잭션의 마지막 작업 (트랜잭션 번호 97로 식별되는 작업) EventId(97, 1) 에 대한 SPARQL 변경 데이터를 반환합니다.

{ "lastEventId": { "commitNum": 97, "opNum": 1 }, "lastTrxTimestamp": 1561489355102, "format": "NQUADS", "records": [ { "commitTimestamp": 1561489355102, "eventId": { "commitNum": 97, "opNum": 1 }, "data": { "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n" }, "op": "ADD", "isLastOp": true } ], "totalRecords": 1 }

Neptune 스트림 예외 API

다음 표에 Neptune 스트림 예외가 설명되어 있습니다.

오류 코드 HTTP코드 재시도해도 될까요? 메시지

InvalidParameterException

400

아니요

잘못된 or out-of-range 값이 입력 매개변수로 제공되었습니다.

ExpiredStreamException

400

아니요

요청된 모든 레코드가 허용되는 최대 수명을 초과하여 만료되었습니다.

ThrottlingException

500

요청량이 최대 처리량을 초과하였습니다.

StreamRecordsNotFoundException

404

아니요

요청한 리소스를 찾을 수 없습니다. 스트림이 올바르게 지정되지 않았을 수 있습니다.

MemoryLimitExceededException

500

메모리가 부족하여 요청 처리에 성공하지 못했으나, 서버가 한가한 시간에 재시도할 수 있습니다.