

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

# Neptune 스트림 예제
<a name="streams-examples"></a>

다음 예제는 Amazon Neptune에서 변경-로그 스트림 데이터에 액세스하는 방법을 보여줍니다.

**Topics**
+ [`AT_SEQUENCE_NUMBER` 변경 로그](#streams-examples-at_seq)
+ [`AFTER_SEQUENCE_NUMBER` 변경 로그](#streams-examples-after_seq)
+ [`TRIM_HORIZON` 변경 로그](#streams-examples-trim)
+ [`LATEST` 변경 로그](#streams-examples-trim)
+ [압축 변경 로그](#streams-examples-compress)

## `AT_SEQUENCE_NUMBER` 변경 로그
<a name="streams-examples-at_seq"></a>

다음 예제는 Gremlin 또는 openCypher `AT_SEQUENCE_NUMBER` 변경 로그를 보여줍니다.

```
curl -s "https://{{Neptune-DNS}}:8182/propertygraph/stream?limit=1&commitNum=1&opNum=1&iteratorType=AT_SEQUENCE_NUMBER" |jq
{
  "lastEventId": {
    "commitNum": 1,
    "opNum": 1
  },
  "lastTrxTimestamp": 1560011610678,
  "format": "PG_JSON",
  "records": [
    {
      "eventId": {
        "commitNum": 1,
        "opNum": 1
      },
      "commitTimestamp": 1560011610678,
      "data": {
        "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a",
        "type": "vl",
        "key": "label",
        "value": {
          "value": "vertex",
          "dataType": "String"
        }
      },
      "op": "ADD",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```

이 예제에서는 `AT_SEQUENCE_NUMBER` 변경 로그의 SPARQL 예제를 보여줍니다.

```
curl -s "https://localhost:8182/sparql/stream?limit=1&commitNum=1&opNum=1&iteratorType=AT_SEQUENCE_NUMBER" |jq
{
  "lastEventId": {
    "commitNum": 1,
    "opNum": 1
  },
  "lastTrxTimestamp": 1571252030566,
  "format": "NQUADS",
  "records": [
    {
      "eventId": {
        "commitNum": 1,
        "opNum": 1
      },
      "commitTimestamp": 1571252030566,
      "data": {
        "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n"
      },
      "op": "ADD",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```

## `AFTER_SEQUENCE_NUMBER` 변경 로그
<a name="streams-examples-after_seq"></a>

다음 예제는 Gremlin 또는 openCypher `AFTER_SEQUENCE_NUMBER` 변경 로그를 보여줍니다.

```
curl -s "https://{{Neptune-DNS}}:8182/propertygraph/stream?limit=1&commitNum=1&opNum=1&iteratorType=AFTER_SEQUENCE_NUMBER" |jq
{
  "lastEventId": {
    "commitNum": 2,
    "opNum": 1
  },
  "lastTrxTimestamp": 1560011633768,
  "format": "PG_JSON",
  "records": [
    {
      "commitTimestamp": 1560011633768,
      "eventId": {
        "commitNum": 2,
        "opNum": 1
      },
      "data": {
        "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a",
        "type": "vl",
        "key": "label",
        "value": {
          "value": "vertex",
          "dataType": "String"
        }
      },
      "op": "REMOVE",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```

## `TRIM_HORIZON` 변경 로그
<a name="streams-examples-trim"></a>

다음 예제는 Gremlin 또는 openCypher `TRIM_HORIZON` 변경 로그를 보여줍니다.

```
curl -s "https://{{Neptune-DNS}}:8182/propertygraph/stream?limit=1&iteratorType=TRIM_HORIZON" |jq
{
  "lastEventId": {
    "commitNum": 1,
    "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",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```

## `LATEST` 변경 로그
<a name="streams-examples-trim"></a>

다음 예제는 Gremlin 또는 openCypher `LATEST` 변경 로그를 보여줍니다. 참고로, API 파라미터 `limit`, `commitNum`, `opNum`은 완전히 선택 사항입니다.

```
curl -s "https://{{Neptune-DNS}}:8182/propertygraph/stream?iteratorType=LATEST" | jq
{
  "lastEventId": {
    "commitNum": 21,
    "opNum": 4
  },
  "lastTrxTimestamp": 1634710497743,
  "format": "PG_JSON",
  "records": [
    {
      "commitTimestamp": 1634710497743,
      "eventId": {
        "commitNum": 21,
        "opNum": 4
      },
      "data": {
        "id": "24be4e2b-53b9-b195-56ba-3f48fa2b60ac",
        "type": "e",
        "key": "label",
        "value": {
          "value": "created",
          "dataType": "String"
        },
        "from": "4",
        "to": "5"
      },
      "op": "REMOVE",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```

## 압축 변경 로그
<a name="streams-examples-compress"></a>

다음 예제는 Gremlin 또는 openCypher 압축 변경 로그를 보여줍니다.

```
curl -sH \
  "Accept-Encoding: gzip" \
  "https://{{Neptune-DNS}}:8182/propertygraph/stream?limit=1&commitNum=1" \
  -H "Accept-Encoding: gzip" \
  -v |gunzip -|jq
> GET /propertygraph/stream?limit=1 HTTP/1.1
> Host: localhost:8182
> User-Agent: curl/7.64.0
> Accept: /
> Accept-Encoding: gzip
*> Accept-Encoding: gzip*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
< Connection: keep-alive
*< content-encoding: gzip*
< content-length: 191
<
{ [191 bytes data]
Connection #0 to host localhost left intact
{
  "lastEventId": "1:1",
  "lastTrxTimestamp": 1558942160603,
  "format": "PG_JSON",
  "records": [
    {
      "commitTimestamp": 1558942160603,
      "eventId": "1:1",
      "data": {
        "id": "v1",
        "type": "vl",
        "key": "label",
        "value": {
          "value": "person",
          "dataType": "String"
        }
      },
      "op": "ADD",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```