

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 Streams 特征，您可以生成完整的更改日志条目序列，以即时记录对图形数据所做的每一个更改。`GetPropertygraphStream` 使您可以为属性图收集这些更改日志条目。

需要在您的 Neptune 数据库集群上启用 Neptune 流特征。要启用流，请将 [neptune\_streams](https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html#parameters-db-cluster-parameters-neptune_streams) 数据库集群参数设置为 `1`。

请参阅[使用 Neptune Streams 实时捕获图形更改](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`（带符号的 64 位整数）。

  从更改日志流中读取的起始记录的提交编号。当 `iteratorType` 为 `AT_SEQUENCE_NUMBER` 或 `AFTER_SEQUENCE_NUMBER` 时，此参数为必需的，当 `iteratorType` 为 `TRIM_HORIZON` 或 `LATEST` 时，忽略此参数。
+ **encoding**（在 CLI 中：`--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`（有符号的 64 位整数），不小于 1 或大于 100000。

  指定要返回的最大记录数。响应还受 10 MB 大小的限制，该大小限制不能修改，并且优先级高于 `limit` 参数中指定的记录数。如果达到了 10 MB 限制，响应中将包含一条超出阈值记录。

  `limit` 的范围为 1 到 100000，默认值为 10。
+ **opNum**（在 CLI 中：`--op-num`）– 长整型，类型为：`long`（带符号的 64 位整数）。

  从更改日志流数据中开始读取的指定提交中的操作序列号。默认值为 `1`。

**响应**
+ **format** – *必需：*一个字符串，类型为：`string`（UTF-8 编码的字符串）。

    返回的更改记录的序列化格式。目前，唯一支持的值是 `PG_JSON`。
+ **lastEventId** – *必需：*它是键值对的映射数组，其中：

      每个键都是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

      每个值都是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

    流响应中最后一次更改的序列标识符。

  事件 ID 由两个字段组成：`commitNum`，标识更改图形的事务；`opNum`，标识该事务中的特定操作：  
**Example**  

  ```
  "eventId": {
            "commitNum": 12,
            "opNum": 1
          }
  ```
+ **lastTrxTimestampInMillis** – *必需：*长整型，类型为：`long`（带符号的 64 位整数）。

  请求提交事务的时间（使用 Unix 纪元时间表示，单位为毫秒）。
+ **records** – *必填：*[PropertygraphRecord](#PropertygraphRecord) 对象的数组。

    包含在响应中的序列化更改日志流记录的数组。
+ **totalRecords** – *必需：*一个整数，类型为：`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`（带符号的 64 位整数）。

  请求提交事务的时间（使用 Unix 纪元时间表示，单位为毫秒）。
+ **data** – 这是*必需的：*一个 [PropertygraphData](#PropertygraphData) 对象。

  序列化的 Gremlin 或 openCypher 更改记录。
+ **eventId** – 这是*必需的：*它是键值对的映射数组，其中：

      每个键都是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

      每个值都是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  流更改记录的序列标识符。
+ **isLastOp** - 这是一个布尔值，类型为：`boolean` [布尔值（true 或 false）]。

  仅当此操作是其事务中的最后一个操作时才存在。如果存在，则设置为 true。它有助于确保整个事务都被消耗掉。
+ **op** – 这是*必需的：*一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  造成更改的操作。

## PropertygraphData（结构）
<a name="PropertygraphData"></a>

Gremlin 或 openCypher 更改记录。

**Fields**
+ **from** – 这是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  如果这是一个边缘（类型 = `e`），则为相应的 `from` 顶点或源节点的 ID。
+ **id** – 这是*必需的：*一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  Gremlin 或 openCypher 元素的 ID。
+ **key** – 这是*必需的：*一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  属性名称。对于元素标签，这是 `label`。
+ **to** – 这是一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  如果这是一个边缘（类型 = `e`），则为相应的 `to` 顶点或目标节点的 ID。
+ **type** – 这是*必需的：*一个字符串，类型为：`string`（UTF-8 编码的字符串）。

  Gremlin 或 openCypher 元素的类型。必须为以下值之一：
  + **`v1`** - Gremlin 的顶点标签或 openCypher 的节点标签。
  + **`vp`** - Gremlin 的顶点属性或 openCypher 的节点属性。
  + **`e`** - Gremlin 的边缘和边缘标签，或 openCypher 的关系和关系类型。
  + **`ep`** - Gremlin 的边缘属性或 openCypher 的关系属性。
+ **value** – 这是*必需的：*文档，类型为：`document`（由类似 JSON 的数据模型表示的与协议无关的开放内容）。

  这是一个 JSON 对象，其中包含值本身的值字段和该值的 JSON 数据类型的数据类型字段：  
**Example**  

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