기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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일 이상 경과할 때마다 다시 생성됩니다. 그러나 이러한 트리거는 향후 변경될 수 있습니다.
참고
T3
및 T4g
인스턴스에서는 해당 인스턴스 유형의 메모리 용량을 초과할 수 있으므로, 통계 생성이 비활성화됩니다.
다음 엔드포인트 중 하나를 통해 DFE 통계 생성을 관리할 수 있습니다.
https://
(용SPARQL).your-neptune-host
:port
/rdf/statisticshttps://
(Gremlin 및 의 경우openCypher) 및 대체 버전:your-neptune-host
:port
/propertygraph/statisticshttps://
.your-neptune-host
:port
/pg/statistics
참고
엔진 릴리스 1.1.1.0부터 Gremlin 통계 엔드포인트(https://
)는 더 이상 사용되지 않고, your-neptune-host
:port
/gremlin/statisticspropertygraph
또는 pg
엔드포인트가 선호됩니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.
엔진 릴리스 1.2.1.0부터 SPARQL 통계 엔드포인트(https://
)가 your-neptune-host
:port
/sparql/statisticsrdf
엔드포인트에 유리하게 사용되지 않습니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.
아래 예제에서 는 이러한 엔드포인트 중 하나를 $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
값 그래프를 보면 통계 계산이 이루어진 시기와 속도를 매우 명확하게 파악할 수 있습니다.
계산이 진행 중일 때 그래프의 기울기는 속도를 나타냅니다. 기울기가 가파를수록 통계가 더 빨리 계산된다는 뜻입니다.
그래프가 0에서 평평한 선으로만 그려진 경우 통계 기능은 활성화되었으나 통계가 전혀 계산되지 않은 것입니다. 통계 기능이 비활성화되었거나 통계 계산을 지원하지 않는 엔진 버전을 사용하는 경우에는 StatsNumStatementsScanned
가 존재하지 않습니다.
앞서 언급한 것처럼 통계 를 사용하여 통계 계산을 비활성화할 수 있지만 API이 계산을 비활성화하면 통계가 최신 상태가 되지 않아 DFE 엔진의 쿼리 계획 생성이 잘못될 수 있습니다.
를 사용하는 방법에 대한 Amazon을 사용하여 Neptune 모니터링 CloudWatch 자세한 내용은 섹션을 참조하세요 CloudWatch.
DFE 통계 엔드포인트에서 AWS Identity and Access Management (IAM) 인증 사용
HTTPS 및 와 함께 작동하는 awscurl
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" }