

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

# Neptune 스트림 데이터플레인 API
<a name="data-api-dp-streams"></a>

**스트림 액세스 작업:**
+ [GetPropertygraphStream(동작)](#GetPropertygraphStream)

**스트림 데이터 구조:**
+ [PropertygraphRecord(구조)](#PropertygraphRecord)
+ [PropertygraphData(구조)](#PropertygraphData)

## GetPropertygraphStream(동작)
<a name="GetPropertygraphStream"></a>

         이 API의 AWS CLI 이름은 `get-propertygraph-stream`입니다.

속성 그래프의 스트림을 가져옵니다.

Neptune 스트림 기능을 사용하면 그래프 데이터에 대해 이루어진 모든 변경을 기록하는 변경-로그 항목에 대한 완벽한 시퀀스를 생성할 수 있습니다. `GetPropertygraphStream`은 속성 그래프를 위해 이러한 변경-로그 항목을 수집하도록 합니다.

Neptune DB 클러스터에서 Neptune 스트림 기능을 활성화해야 합니다. 스트림을 활성화하려면 [neptune\_stream](https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html#parameters-db-cluster-parameters-neptune_streams) DB 클러스터 파라미터를 `1`로 설정합니다.

[Neptune 스트림을 통해 실시간으로 그래프 변경 캡처](https://docs.aws.amazon.com/neptune/latest/userguide/streams.html)를 참조하세요.

IAM 인증이 활성화된 Neptune 클러스터에서 이 작업을 간접적으로 호출하는 경우 요청을 하는 IAM 사용자 또는 역할에는 해당 클러스터에서 [neptune-db:GetStreamRecords](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getstreamrecords) IAM 작업을 허용하는 정책이 연결되어 있어야 합니다.

IAM 인증이 활성화된 Neptune 클러스터에서 이 작업을 간접적으로 호출하는 경우 요청을 하는 IAM 사용자 또는 역할은 쿼리에 따라 다음 IAM 작업 중 하나를 활성화하는 정책을 연결해야 합니다.

다음 IAM 컨텍스트 키를 사용하여 속성 그래프 쿼리를 제한할 수 있다는 점에 유의하세요.
+ [neptune-db:QueryLanguage:Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys)
+ [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys)

[Neptune IAM 데이터 액세스 정책 설명에서 사용할 수 있는 조건 키](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)를 참조하세요.

**요청**
+ **commitNum**(CLI의 경우: `--commit-num`) - Long, 유형은 `long`(64비트 부호 있는 정수)입니다.

  변경-로그 스트림에서 읽어올 시작 레코드의 커밋 수입니다. 이 파라미터는 `iteratorType`이 `AT_SEQUENCE_NUMBER` 또는 `AFTER_SEQUENCE_NUMBER`일 때는 필수이고, `iteratorType`이 `TRIM_HORIZON`이거나 `LATEST`일 때는 무시됩니다. 
+ **encoding**(CLI의 경우: `--encoding`) - Encoding, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  TRUE로 설정하면 Neptune은 gzip 인코딩을 사용하여 응답을 압축합니다.
+ **iteratorType**(CLI의 경우: `--iterator-type`) - IteratorType, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  다음 중 하나일 수 있습니다.
  + `AT_SEQUENCE_NUMBER` – 읽기가 `commitNum` 및 `opNum` 파라미터에서 공동으로 지정된 이벤트 시퀀스 번호부터 시작해야 한다는 것을 나타냅니다.
  + `AFTER_SEQUENCE_NUMBER` - 읽기가 `commitNum` 및 `opNum` 파라미터에서 공동으로 지정된 이벤트 시퀀스 번호 바로 뒤부터 시작해야 한다는 것을 나타냅니다.
  + `TRIM_HORIZON` – 읽기가 시스템에서 잘리지 않은 마지막 레코드, 즉 변경-로그 스트림에서 만료되지 않은(아직 삭제되지 않은) 가장 오래된 레코드에서 시작되어야 한다는 것을 나타냅니다.
  + `LATEST` – 읽기가 시스템에서 가장 최근 레코드, 즉 변경-로그 스트림에서 만료되지 않은(아직 삭제되지 않은) 최신 레코드에서 시작되어야 한다는 것을 나타냅니다.
+ **limit** (CLI의 경우:`--limit`) - GetPropertygraphStreamInputLimitLong, 유형은 `long`(부호 있는 1\~99,999 사이의 64비트 정수)입니다.

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

  `limit`의 범위는 1\~100,000이며 기본값은 10입니다.
+ **opNum**(CLI의 경우: `--op-num`) - Long, 유형은 `long`(64비트 부호 있는 정수)입니다.

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

**응답**:
+ **format** - 필수: String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.**

  반환 중인 변경 레코드에 대한 직렬화 형식입니다. 현재 지원되는 값은 `PG_JSON`입니다.
+ **lastEventId** – 필수: 다음에 해당할 때 키-값 페어의 맵 배열입니다.

      각 키는 String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

      각 값은 String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  스트림 응답의 마지막 변경에 대한 시퀀스 식별자입니다.

  이벤트 ID는 두 개의 필드로 이루어져 있는데, `commitNum`은 그래프를 변경한 트랜잭션을 식별하고 `opNum`는 해당 트랜잭션 내에서 특정 작업을 식별합니다.  
**Example**  

  ```
  "eventId": {
            "commitNum": 12,
            "opNum": 1
          }
  ```
+ **lastTrxTimestampInMillis** - 필수: Long, 유형은 `long`(64비트 부호 있는 정수)입니다.

  트랜잭션에 대한 커밋이 요청된 시점입니다(Unix epoch의 밀리초).
+ **records** – 필수: [PropertygraphRecord](#PropertygraphRecord) 객체의 배열입니다.**

  응답에 포함된 직렬화된 변경-로그 스트림 레코드의 배열입니다.
+ **totalRecords** - 필수: Integer이며, 유형은 `integer`(32비트 부호 있는 정수)입니다.

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

**오류**
+ [UnsupportedOperationException](data-api-dp-errors.md#UnsupportedOperationException)
+ [ExpiredStreamException](data-api-dp-errors.md#ExpiredStreamException)
+ [InvalidParameterException](data-api-dp-errors.md#InvalidParameterException)
+ [MemoryLimitExceededException](data-api-dp-errors.md#MemoryLimitExceededException)
+ [StreamRecordsNotFoundException](data-api-dp-errors.md#StreamRecordsNotFoundException)
+ [ClientTimeoutException](data-api-dp-errors.md#ClientTimeoutException)
+ [PreconditionsFailedException](data-api-dp-errors.md#PreconditionsFailedException)
+ [ThrottlingException](data-api-dp-errors.md#ThrottlingException)
+ [ConstraintViolationException](data-api-dp-errors.md#ConstraintViolationException)
+ [InvalidArgumentException](data-api-dp-errors.md#InvalidArgumentException)
+ [IllegalArgumentException](data-api-dp-errors.md#IllegalArgumentException)
+ [TooManyRequestsException](data-api-dp-errors.md#TooManyRequestsException)

## *스트림 데이터 구조:*
<a name="data-api-dp-streams-stream-data-structures-spacer"></a>

## PropertygraphRecord(구조)
<a name="PropertygraphRecord"></a>

프로퍼티 그래프 레코드의 구조입니다.

**Fields**
+ **commitTimestampInMillis** - 필수: Long, 유형은 `long`(64비트 부호 있는 정수)입니다.

  트랜잭션에 대한 커밋이 요청된 시점입니다(Unix epoch의 밀리초).
+ **data** - 필수: [PropertygraphData](#PropertygraphData) 객체입니다.**

  직렬화된 Gremlin, SPARQL 또는 openCypher 변경 레코드입니다.
+ **eventId** – 필수: 다음에 해당할 때 키-값 페어의 맵 배열입니다.

      각 키는 String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

      각 값은 String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  스트림 응답의 마지막 변경에 대한 시퀀스 식별자입니다.
+ **isLastOp** - Boolean, 유형은 `boolean`(부울(true 또는 false) 값)입니다.

  이 작업이 트랜잭션의 마지막 작업인 경우에만 표시됩니다. 존재하는 경우 true로 설정됩니다. 전체 트랜잭션이 사용되도록 하는 데 유용합니다.
+ **op** - 필수: String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.**

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

## PropertygraphData(구조)
<a name="PropertygraphData"></a>

Gremlin, SPARQL 또는 openCypher 변경 레코드입니다.

**Fields**
+ **from** - String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  이것이 엣지(type=`e`)일 경우, 해당되는 `from` 정점 또는 소스 노드의 ID입니다.
+ **id** - 필수: String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.**

  Gremlin 또는 openCypher 요소의 ID입니다.
+ **key** - 필수: String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.**

  속성 이름입니다. 요소 레이블에서 속성 이름은 `label`입니다.
+ **to** - String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.

  이것이 엣지(type=`e`)일 경우, 해당되는 `to` 정점 또는 대상 노드의 ID입니다.
+ **type** - 필수: String이며, 유형은 `string`(UTF-8 인코딩 문자열)입니다.**

  Gremlin 또는 openCypher 요소의 유형입니다. 다음 중 하나여야 합니다.
  + **`v1`** – Gremlin의 경우 정점 레이블, openCypher의 경우 노드 레이블
  + **`vp`** – Gremlin의 경우 정점 속성, openCypher의 경우 노드 속성
  + **`e`** – Gremlin의 경우 엣지 및 엣지 레이블, openCypher의 경우 관계 및 관계 유형
  + **`ep`** – Gremlin의 경우 엣지 속성, openCypher의 경우 관계 속성
+ **value** - 필수: Document, 유형은 `document`(JSON과 유사한 데이터 모델로 표현되는 프로토콜에 구애받지 않는 개방형 콘텐츠)입니다.**

  값 자체에 대한 값 필드와 이 값의 JSON 데이터 유형에 대한 datatype 필드를 포함하는 JSON 객체입니다.  
**Example**  

  ```
  "value": {
            "value": "(the new value"),
            "dataType": "(the JSON datatypenew value")
          }
  ```