Neptune에서 DFE 사용할 통계 관리 - Amazon Neptune

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

Neptune에서 DFE 사용할 통계 관리

참고

에 대한 지원 openCypher 은 Neptune의 DFE 쿼리 엔진에 따라 달라집니다.

이 DFE 엔진은 Neptune 엔진 릴리스 1.0.3.0의 랩 모드에서 처음 사용할 수 있었으며, Neptune 엔진 릴리스 1.0.5.0부터는 기본적으로 활성화되었지만 쿼리 힌트와 함께 및 openCypher 지원에만 사용할 수 있습니다.

Neptune 엔진 릴리스 1.1.1.0부터 DFE 엔진은 더 이상 랩 모드가 아니며 이제 neptune_dfe_query_engine 인스턴스의 DB 파라미터 그룹에서 인스턴스 파라미터를 사용하여 제어됩니다.

DFE 엔진은 Neptune 그래프의 데이터에 대한 정보를 사용하여 쿼리 실행을 계획할 때 효과적인 절충을 수행합니다. 이 정보는 쿼리 계획의 지침이 될 수 있는 소위 특성 세트와 조건자 통계를 포함하는 통계의 형태를 취합니다.

엔진 릴리스 1.2.1.0부터 GetGraphSummary API 또는 summary 엔드포인트를 사용하여 이러한 통계에서 그래프에 대한 요약 정보를 검색할 수 있습니다.

이러한 DFE 통계는 현재 그래프의 데이터 중 10% 이상이 변경되거나 최신 통계가 10일 이상 경과할 때마다 다시 생성됩니다. 그러나 이러한 트리거는 향후 변경될 수 있습니다.

참고

T3T4g 인스턴스에서는 해당 인스턴스 유형의 메모리 용량을 초과할 수 있으므로, 통계 생성이 비활성화됩니다.

다음 엔드포인트 중 하나를 통해 DFE 통계 생성을 관리할 수 있습니다.

  • https://your-neptune-host:port/rdf/statistics (용SPARQL).

  • https://your-neptune-host:port/propertygraph/statistics(Gremlin 및 의 경우openCypher) 및 대체 버전: https://your-neptune-host:port/pg/statistics.

참고

엔진 릴리스 1.1.1.0부터 Gremlin 통계 엔드포인트(https://your-neptune-host:port/gremlin/statistics)는 더 이상 사용되지 않고, propertygraph 또는 pg 엔드포인트가 선호됩니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.

엔진 릴리스 1.2.1.0부터 SPARQL 통계 엔드포인트(https://your-neptune-host:port/sparql/statistics)가 rdf 엔드포인트에 유리하게 사용되지 않습니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.

아래 예제에서 는 이러한 엔드포인트 중 하나를 $STATISTICS_ENDPOINT 나타냅니다URLs.

참고

DFE 통계 엔드포인트가 리더 인스턴스에 있는 경우 처리할 수 있는 유일한 요청은 상태 요청 입니다. 다른 요청은 ReadOnlyViolationException과 함께 실패합니다.

DFE 통계 생성의 크기 제한

현재 다음 크기 제한 중 하나에 도달하면 DFE 통계 생성이 중지됩니다.

  • 생성되는 특성 세트의 수는 50,000개를 초과할 수 없습니다.

  • 생성되는 조건자 통계 수는 100만 개를 초과할 수 없습니다.

이러한 제한은 변경할 수 있습니다.

DFE 통계의 현재 상태

다음 curl 요청을 사용하여 DFE 통계의 현재 상태를 확인할 수 있습니다.

curl -G "$STATISTICS_ENDPOINT"

상태 요청에 대한 응답에는 다음 필드가 포함됩니다.

  • status- 요청의 HTTP 반환 코드입니다. 요청이 성공하면 코드는 200입니다. 일반적인 오류 목록은 일반적인 오류 섹션을 참조하세요.

  • payload:

    • autoCompute   –   (부울) 자동 통계 생성이 활성화되었는지 여부를 나타냅니다.

    • active– (부울) DFE 통계 생성이 활성화되었는지 여부를 나타냅니다.

    • statisticsId   –   현재 통계 생성 실행의 ID를 보고합니다. -1 값이 0이면 통계가 생성되지 않았음을 나타냅니다.

    • date- DFE 통계가 가장 최근에 생성된 ISO8601 형식의 UTC 시간입니다.

      참고

      엔진 릴리스 1.2.1.0 이전에는 분 단위의 정밀도로 표시되었지만, 엔진 릴리스 1.2.1.0부터는 밀리초 정밀도로 표시됩니다(예: 2023-01-24T00:47:43.319Z).

    • note   –   통계가 유효하지 않은 경우의 문제에 대한 참고 사항입니다.

    • signatureInfo   –   통계에서 생성된 특성 세트에 대한 정보가 들어 있습니다(엔진 릴리스 1.2.1.0 이전에는 이 필드에 summary 이름이 지정됨). 일반적으로 다음과 같은 조치는 직접 실행할 수 없습니다.

      • signatureCount   –   모든 특성 세트의 총 서명 수.

      • instanceCount   –   특성 세트 인스턴스의 총 수.

      • predicateCount   –   고유한 조건자의 총 수.

통계가 생성되지 않은 경우 상태 요청에 대한 응답은 다음과 같습니다.

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }

DFE 통계를 사용할 수 있는 경우 응답은 다음과 같습니다.

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }

예를 들어 DFE 통계 크기 제한을 초과했기 때문에 통계 생성에 실패하면 응답은 다음과 같습니다.

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }

DFE 통계 자동 생성 비활성화

기본적으로 를 활성화하면 DFE 통계 자동 생성이 활성화됩니다DFE.

다음과 같이 자동 생성을 비활성화할 수 있습니다.

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'

요청이 성공하면 HTTP 응답 코드는 200이고 응답은 입니다.

{ "status" : "200 OK" }

상태 요청을 실행하고 응답의 autoCompute 필드가 false로 설정되어 있는지 확인하여 자동 생성이 비활성화되었는지 확인할 수 있습니다.

통계 자동 생성을 비활성화해도 진행 중인 통계 계산은 종료되지 않습니다.

DB 클러스터의 라이터 인스턴스가 아닌 리더 인스턴스에 대한 자동 생성을 비활성화하도록 요청하면 다음과 같이 HTTP 반환 코드 400 및 출력으로 요청이 실패합니다.

{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }

기타 일반적인 오류 목록은 일반적인 오류 섹션을 참조하세요.

DFE 통계 자동 생성 다시 활성화

기본적으로 를 활성화하면 DFE 통계 자동 생성이 이미 활성화됩니다DFE. 자동 생성을 비활성화한 경우 나중에 다음과 같이 다시 활성화할 수 있습니다.

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'

요청이 성공하면 HTTP 응답 코드는 200이고 응답은 입니다.

{ "status" : "200 OK" }

상태 요청을 실행하고 응답의 autoCompute 필드가 true로 설정되어 있는지 확인하여 자동 생성이 활성화되었는지 확인할 수 있습니다.

DFE 통계 생성 수동 트리거

다음과 같이 DFE 통계 생성을 수동으로 시작할 수 있습니다.

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'

요청이 성공하면 출력은 다음과 같으며 HTTP 반환 코드는 200입니다.

{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }

출력의 statisticsId는 현재 진행 중인 통계 생성 실행의 ID입니다. 요청 당시 실행이 이미 처리 중이었던 경우 요청은 새 실행을 시작하지 않고 해당 실행의 ID를 반환합니다. 한 번에 하나의 통계 생성 실행만 수행될 수 있습니다.

DFE 통계가 생성되는 동안 장애 조치가 발생하면 새 라이터 노드가 마지막으로 처리된 체크포인트를 픽업하고 거기서 실행된 통계를 재개합니다.

StatsNumStatementsScanned CloudWatch 지표를 사용하여 통계 계산 모니터링

StatsNumStatementsScanned CloudWatch 지표는 서버가 시작된 이후 통계 계산을 위해 스캔된 총 문 수를 반환합니다. 각 통계 계산 조각에서 업데이트됩니다.

통계 계산이 트리거될 때마다 이 수치는 증가하며 계산이 수행되지 않을 때는 일정하게 유지됩니다. 따라서 시간 경과에 따른 StatsNumStatementsScanned 값 그래프를 보면 통계 계산이 이루어진 시기와 속도를 매우 명확하게 파악할 수 있습니다.

StatsNumStatementsScanned 지표 값 그래프

계산이 진행 중일 때 그래프의 기울기는 속도를 나타냅니다. 기울기가 가파를수록 통계가 더 빨리 계산된다는 뜻입니다.

그래프가 0에서 평평한 선으로만 그려진 경우 통계 기능은 활성화되었으나 통계가 전혀 계산되지 않은 것입니다. 통계 기능이 비활성화되었거나 통계 계산을 지원하지 않는 엔진 버전을 사용하는 경우에는 StatsNumStatementsScanned가 존재하지 않습니다.

앞서 언급한 것처럼 통계 를 사용하여 통계 계산을 비활성화할 수 있지만 API이 계산을 비활성화하면 통계가 최신 상태가 되지 않아 DFE 엔진의 쿼리 계획 생성이 잘못될 수 있습니다.

를 사용하는 방법에 대한 Amazon을 사용하여 Neptune 모니터링 CloudWatch 자세한 내용은 섹션을 참조하세요 CloudWatch.

DFE 통계 엔드포인트에서 AWS Identity and Access Management (IAM) 인증 사용

HTTPS 및 와 함께 작동하는 awscurl 또는 기타 도구를 사용하여 IAM 인증을 통해 DFE 통계 엔드포인트에 안전하게 액세스할 수 있습니다IAM. 적절한 보안 인증 정보를 설정하는 방법을 보려면 임시 자격 증명과 awscurl 함께 를 사용하여 IAM 인증이 활성화된 DB 클러스터에 안전하게 연결을 참조하세요. 그런 다음 아래와 같이 상태 요청을 제출할 수 있습니다.

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db

또는 예를 들어 다음을 포함하는 라는 JSON 파일을 생성할 수 request.json 있습니다.

{ "mode" : "refresh" }

그런 다음 아래와 같이 통계 생성을 수동으로 시작할 수 있습니다.

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db \ -X POST -d @request.json

DFE 통계 삭제

통계 엔드포인트에 HTTP DELETE 요청하여 데이터베이스의 모든 통계를 삭제할 수 있습니다.

curl -X "DELETE" "$STATISTICS_ENDPOINT"

유효한 HTTP 반환 코드는 다음과 같습니다.

  • 200   –   삭제에 성공했습니다.

    이 경우 일반적인 응답은 다음과 같습니다.

    { "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
  • 204   –   삭제할 통계가 없습니다.

    이 경우 응답은 비어 있습니다(응답 없음).

리더 노드의 통계 엔드포인트로 삭제 요청을 보내면 ReadOnlyViolationException이 발생합니다.

DFE 통계 요청에 대한 일반적인 오류 코드

다음은 통계 엔드포인트에 요청할 때 발생할 수 있는 일반적인 오류 목록입니다.

  • AccessDeniedException   –   반환 코드: 400. 메시지: Missing Authentication Token.

  • BadRequestException (Gremlin 및 의 경우openCypher) - 반환 코드: 400. 메시지: Bad route: /pg/statistics.

  • BadRequestException (RDF데이터의 경우) - 반환 코드: 400. 메시지: Bad route: /rdf/statistics.

  • InvalidParameterException   –   반환 코드: 400. 메시지: Statistics command parameter 'mode' has unsupported value 'the invalid value'.

  • MissingParameterException   –   반환 코드: 400. 메시지: Content-type header not specified..

  • ReadOnlyViolationException   –   반환 코드: 400. 메시지: Writes are not permitted on a read replica instance.

예를 들어 DFE 및 통계가 활성화되지 않은 상태에서 요청을 하면 다음과 같은 응답을 받게 됩니다.

{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }