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

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

DFENeptune에서 사용할 통계 관리

참고

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

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

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

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

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

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

참고

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

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

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

  • https://your-neptune-host:port/propertygraph/statistics(그렘린 및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— (Boolean) DFE 통계 생성이 전혀 활성화되었는지 여부를 나타냅니다.

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

    • date— DFE 통계가 가장 최근에 생성된 UTC 시간 (ISO8601 형식)

      참고

      엔진 릴리스 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 클러스터의 Writer 인스턴스가 아닌 리더 인스턴스에 자동 생성을 비활성화하도록 요청하면 요청이 실패하고 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가 존재하지 않습니다.

앞서 설명한 것처럼 통계를 사용하여 통계 계산을 비활성화할 수 있지만 이 계산을 중단하면 통계가 최신 상태로 유지되지 않아 DFE 엔진에 대한 쿼리 계획 생성 성능이 저하될 수 있습니다. API

사용 CloudWatch 방법에 아마존을 이용한 Neptune 모니터링 CloudWatch 대한 자세한 내용은 을 참조하십시오.

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

awscurl 또는 및 와 함께 작동하는 다른 도구를 사용하여 IAM 인증을 통해 DFE 통계 엔드포인트에 안전하게 액세스할 수 있습니다. HTTPS 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(그렘린의 경우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" }