Amazon Neptune 엔진 버전 1.3.2.1(2024-06-20) - Amazon Neptune

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

Amazon Neptune 엔진 버전 1.3.2.1(2024-06-20)

2024-06-20부터 엔진 버전 1.3.2.1이 일반적으로 배포되고 있습니다. 모든 리전에서 새 릴리스를 사용할 수 있게 되려면 며칠이 걸립니다.

참고

엔진 릴리스 1.3.0.0에서는 사용자 지정 파라미터 그룹과 사용자 지정 클러스터 파라미터 그룹을 위한 새로운 형식을 도입했습니다. 따라서 1.3.0.0 이전 엔진 버전에서 엔진 버전 1.3.0.0 이상으로 업그레이드하는 경우 파라미터 그룹 패밀리 neptune1.3를 사용하여 기존의 모든 사용자 지정 파라미터 그룹과 사용자 지정 클러스터 파라미터 그룹을 다시 생성해야 합니다. 이전 릴리스에서는 파라미터 그룹 패밀리 neptune1 또는 neptune1.2을 사용했으며, 이러한 파라미터 그룹은 릴리스 1.3.0.0 이상에서는 작동하지 않습니다. 자세한 내용은 Amazon Neptune 파라미터 그룹 섹션을 참조하세요.

주의

엔진 릴리스 1.3.2.1에는 알아야 할 몇 가지 잠재적 문제가 도입되었습니다. 자세한 내용은 의 섹션을 참조릴리스 1.3.2.1의 문제 완화하세요.

이 엔진 릴리스에서 해결된 결함

openCypher 수정
  • SKIP 및 를 파라미터LIMIT로 사용하는 내부 WITH 절이 포함된 파라미터화된 쿼리에 대한 쿼리 계획 캐시 기능에서 버그가 감지되었습니다. SKIP/LIMIT 값이 제대로 파라미터화되지 않았으므로 다른 파라미터 값을 사용하여 캐시된 동일한 쿼리 계획을 후속 실행해도 첫 번째 실행과 동일한 결과가 반환됩니다. 이 문제는 해결되었습니다.

    # insert some nodes UNWIND range(1, 10) as i CREATE (s {name: i}) RETURN s # sample query MATCH (p) WITH p ORDER BY p.name SKIP $s LIMIT $l RETURN p.name as res # first time executing with {"s": 2, "l": 1} { "results" : [ { "res" : 3 } ] } # second time executing with {"s": 2, "l": 10} # due to bug, produces { "results" : [ { "res" : 3 } ] } # with fix, produces correct results: { "results" : [ { "res" : 3 }, { "res" : 4 }, { "res" : 5 }, { "res" : 6 }, { "res" : 7 }, { "res" : 8 }, { "res" : 9 }, { "res" : 10 } ] }%
  • 전달된 파라미터가 데이터베이스에 아직 존재하지 않을 InternalFailureException 때 파라미터화된 돌연변이 쿼리가 를 생성하는 버그를 수정했습니다.

  • 쿼리 리소스 정리 중에 레이스 조건에 도달한 후 파라미터화된 볼트 쿼리가 중단되는 버그를 수정했습니다.

1.3.2.0에서 이월된 1.3.2.1의 변경 사항

엔진 릴리스 1.3.2.0에서 이월된 개선 사항

일반적인 개선 사항
  • 암호 제품군 TLS__128SHA256__ GCM및 AES__256TLSAES_GCM_를 포함한 TLS 버전 1SHA384.3 지원. TLS 1.3은 옵션이며 TLS 1.2는 여전히 최소값입니다.

  • openCypher dateime 형식에 대한 확장 지원은 이 버전의 lab_mode에 있습니다. 테스트하는 것이 좋습니다.

Gremlin 개선 사항
  • TinkerPop 3.7.x 업그레이드

    • Gremlin 언어의 대규모 확장을 제공합니다.

      • 문자열, 목록 및 날짜를 처리하는 새로운 단계입니다.

      • mergeV() 단계 내에서 카디널리티를 지정하는 새 구문입니다.

      • union() 이제 를 시작 단계로 사용할 수 있습니다.

      • 3.7.x의 변경 사항에 대한 자세한 내용은 TinkerPop 업그레이드 설명서 섹션을 참조하세요.

    • Java용 클라이언트 Gremlin 언어 드라이버를 업그레이드할 때 직렬화기 클래스에서 이름 변경 가 일부 취소되었습니다. 지정된 경우 구성 파일 및 코드에서 패키지 및 클래스 이름을 업데이트해야 합니다.

  • StrictTimeoutValidation (를 포함하여 랩모드StrictTimeoutValidation를 통해 활성화된 경우에만 해당StrictTimeoutValidation=enabled): StrictTimeoutValidation 파라미터의 값이 인 경우 요청 옵션으로 지정된 쿼리enabled당 제한 시간 값 또는 쿼리 힌트는 파라미터 그룹에서 전역적으로 설정된 값을 초과할 수 없습니다. 이 경우 Neptune은 를 던집니다InvalidParameterException. 값이 이고 Neptune 버전 1.3.2.0 disabled및 1.3.2.1에서 이 파라미터의 기본값은 인 경우 /status 엔드포인트에 대한 응답으로 이 설정을 확인할 수 있습니다Disabled.

openCypher 개선 사항
  • Amazon Neptune 엔진 버전 1.3.2.0은 이전 엔진 릴리스에 비해 openCypher 쿼리 성능에 대해 최대 9배 더 빠르고 10배 더 높은 처리량을 제공합니다.

  • 짧은 지연 시간 쿼리 및 처리량 성능 개선: 짧은 지연 시간 openCypher 쿼리에 대한 전반적인 성능 개선. 또한 새 버전은 이러한 쿼리의 처리량을 개선합니다. 파라미터화된 쿼리를 사용하면 개선 사항이 더 중요합니다.

  • 쿼리 계획 캐시 지원: 쿼리가 Neptune에 제출되면 쿼리 문자열이 구문 분석, 최적화되고 쿼리 계획으로 변환되어 엔진에서 실행됩니다. 애플리케이션은 종종 다른 값으로 인스턴스화되는 일반적인 쿼리 패턴의 지원을 받습니다. 쿼리 계획 캐시는 쿼리 계획을 캐싱하여 이러한 반복 패턴에 대한 구문 분석 및 최적화를 방지함으로써 전체 지연 시간을 줄일 수 있습니다. 자세한 내용은 Amazon Neptune의 쿼리 계획 캐시 섹션을 참조하세요.

  • DISTINCT 집계 쿼리의 성능 개선.

  • 무효화 가능한 변수가 포함된 조인의 성능 개선.

  • id(노드/관계) 조건과 같지 않은 쿼리에 대한 성능 개선.

  • 날짜/시간 기능에 대한 추가 지원(를 DatetimeMillisecond 포함하여 랩 모드를 통해서만 활성화됨DatetimeMillisecond=enabled. 자세한 내용은 Neptune openCypher 구현의 시간적 지원(Neptune Analytics 및 Neptune Database 1.3.2.0 이상) 단원을 참조하십시오.

엔진 릴리스 1.3.2.0에서 이월된 결함 수정

일반적인 개선 사항
  • Graphlytics 버킷에 대한 액세스를 검증할 때 NeptuneML 오류 메시지가 업데이트되었습니다.

Gremlin 수정 사항
  • 경로가 아닌 기여 단계에 레이블이 포함된 시나리오의 DFE 경우 쿼리 번역에서 누락된 레이블 정보를 수정했습니다. 예:

    g.withSideEffect('Neptune#useDFE', true). V(). has('name', 'marko'). has("name", TextP.regex("mark.*")).as("p1"). not(out().has("name", P.within("peter"))). out().as('p2'). dedup('p1', 'p2')
  • DFE 쿼리가 두 DFE 조각으로 실행되고 첫 번째 조각이 만족스럽지 않은 노드에 최적화될 때 발생하는 쿼리 변환의 NullPointerException 버그를 수정했습니다. 예:

    g.withSideEffect('Neptune#useDFE', true). V(). has('name', 'doesNotExists'). has("name", TextP.regex("mark.*")). inject(1). V(). out(). has('name', 'vadas')
  • 쿼리에 by() 모듈레이터 ValueTraversal 내부가 포함되어 있고 해당 입력이 맵인 InternalFailureException 경우 Neptune이 를 던질 수 있는 버그를 수정했습니다. 예:

    g.V(). hasLabel("person"). project("age", "name").by("age").by("name"). order().by("age")
openCypher 수정
  • 메모리 부족() 상황을 방지하기 위해 UNWIND 작업 개선(예: 값 목록을 개별 값으로 확장OOM) 예:

    MATCH (n)-->(m) WITH collect(m) AS list UNWIND list AS m RETURN m, list
  • 를 통해 ID가 주입되는 여러 MERGE 작업의 경우 사용자 지정 ID 최적화를 수정했습니다UNWIND. 예:

    UNWIND [{nid: 'nid1', mid: 'mid1'}, {nid: 'nid2', mid: 'mid2'}] as ids MERGE (n:N {`~id`: ids.nid}) MERGE (m:M {`~id`: ids.mid})
  • 속성 액세스가 포함된 복잡한 쿼리와 양방향 관계가 있는 여러 홉을 계획하는 동안 메모리 폭발이 해결되었습니다. 예:

    MATCH (person1:person)-[:likes]->(res)-[:partOf]->(group)-[:knows]-(:entity {name: 'foo'}), (person1)-[:knows]->(person2)-[:likes]-(res2), (comment)-[:presentIn]->(:Group {name: 'barGroup'}), (person1)-[:commented]->(comment2:comment)-[:partOf]->(post:Post), (comment2)-[:presentIn]->(:Group {name: 'fooGroup'}), (comment)-[:contains]->(info:Details)-[:CommentType]->(:CommentType {name: 'Positive'}), (comment2)-[:contains]->(info2:Details)-[:CommentType]->(:CommentType {name: 'Positive'}) WHERE datetime('2020-01-01T00:00') <= person1.addedAfter <= datetime('2023-01-01T23:59') AND comment.approvedBy = comment2.approvedBy MATCH (comment)-[:contains]->(info3:Details)-[:CommentType]->(:CommentType {name: 'Neutral'}) RETURN person1, group.name, info1.value, post.ranking, info3.value
  • null을 변수별 그룹으로 사용하여 집계 쿼리를 수정했습니다. 예:

    MATCH (n) RETURN null AS group, sum(n.num) AS result
SPARQL 수정
  • SPARQL 파서를 수정하여 많은 트리플 및 큰 토큰을 INSERT DATA 포함하는 것과 같은 대규모 쿼리의 구문 분석 시간을 개선했습니다.

릴리스 1.3.2.1의 문제 완화

  • 숫자 필터 값을 사용하는 쿼리는 쿼리 계획 캐시를 사용할 때 잘못된 결과를 반환할 수 있습니다. 문제를 방지하려면 쿼리 힌트QUERY:PLANCACHE "disabled"를 사용하여 쿼리 계획 캐시를 건너뜁니다. 예를 들어, 다음을 사용합니다.

    USING QUERY:PLANCACHE "disabled" MATCH (n:person) WHERE n.yearOfBirth > $year RETURN n parameters={"year":1950}
  • 동일한 파라미터 이름을 여러 번 사용하는 쿼리는 오류와 함께 실패할 수 있습니다Parameter name should not be a number and/or contain _internal_ or _modified_user_ string within it. These are reserved for planCache. Otherwise, rerun with HTTP parameter planCache=disabled. 이러한 경우 위와 같이 쿼리 계획 캐시를 건너뛰거나 이 예제와 같이 파라미터를 복제합니다.

    MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n UNION MATCH (n:show) WHERE n.duration>=$minutes RETURN n parameters={"minutes":130}

    힌트를 사용하거나 파라미터를 QUERY:PLANCACHE "disabled" 수정합니다.

    MATCH (n:movie) WHERE n.runtime>=$rt_min RETURN n UNION MATCH (n:show) WHERE n.duration>=$dur_min RETURN n parameters={"rt_min":130, "dur_min":130}
  • Bolt 프로토콜로 실행된 쿼리는 쿼리가 UNION 또는 UNION ALL 쿼리인 경우 잘못된 결과를 생성할 수 있습니다. 문제를 방지하려면 HTTP 엔드포인트를 사용하여 특정 쿼리를 실행하는 것이 좋습니다. 또는 Bolt 프로토콜을 사용할 때 유니언의 각 부분을 개별적으로 실행합니다.

이 릴리스에서 지원되는 쿼리 언어 버전

DB 클러스터를 버전 1.3.2.1로 업그레이드하기 전에 프로젝트가 다음 쿼리 언어 버전과 호환되는지 확인하세요.

  • Gremlin 초기 버전 지원: 3.7.1

  • Gremlin 최신 버전 지원: 3.7.1

  • openCypher 버전: Neptune-9.0.20190305-1.0

  • SPARQL 버전: 1.1

엔진 릴리스 1.3.2.1로 경로 업그레이드

엔진 릴리스 1.2.0.0 이상에서 이 릴리스로 업그레이드할 수 있습니다.

이 릴리스로 업그레이드

DB 클러스터가 이 릴리스에 대한 업그레이드 경로가 있는 엔진 버전을 실행하는 경우 지금 업그레이드할 수 있습니다. 콘솔에서 DB 클러스터 작업을 사용하거나 를 사용하여 적합한 클러스터를 업그레이드할 수 있습니다SDK. 다음 CLI 명령은 적합한 클러스터를 즉시 업그레이드합니다.

Linux, OS X, Unix의 경우:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version 1.3.2.1 \ --allow-major-version-upgrade \ --apply-immediately

Windows의 경우:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.3.2.1 ^ --allow-major-version-upgrade ^ --apply-immediately

--apply-immediately 대신 --no-apply-immediately를 지정할 수 있습니다. 메이저 버전 업그레이드를 수행하려면 allow-major-version-upgrade 파라미터가 필요합니다. 또한 엔진 버전을 반드시 포함해야 합니다. 그렇지 않으면 엔진이 다른 버전으로 업그레이드될 수 있습니다.

클러스터에서 사용자 지정 클러스터 파라미터 그룹을 사용하는 경우 다음 파라미터를 포함하여 지정해야 합니다.

--db-cluster-parameter-group-name (name of the custom DB cluster parameter group)

마찬가지로 클러스터의 인스턴스가 사용자 지정 DB 파라미터 그룹을 사용하는 경우 이 파라미터를 포함하여 지정해야 합니다.

--db-instance-parameter-group-name (name of the custom instance parameter group)

업그레이드하기 전에 항상 테스트 수행

새로운 메이저 또는 마이너 Neptune 엔진 버전이 출시되면 업그레이드하기 전에 해당 버전에서 항상 Neptune 애플리케이션을 먼저 테스트하세요. 마이너 업그레이드라도 코드에 영향을 줄 수 있는 새로운 기능이나 동작이 도입될 수 있습니다.

먼저 현재 버전의 릴리스 노트 페이지를 대상 버전의 릴리스 노트 페이지와 비교하여 쿼리 언어 버전에 변경 사항이나 기타 주요 변경 사항이 있는지 확인합니다.

프로덕션 DB 클러스터를 업그레이드하기 전에 새 버전을 테스트하는 가장 좋은 방법은 프로덕션 클러스터를 복제하여 새 엔진 버전을 실행하도록 하는 것입니다. 그러면 프로덕션 DB 클러스터에 영향을 주지 않고 복제본에서 쿼리를 실행할 수 있습니다.

업그레이드하기 전에 항상 수동 스냅샷 생성

업그레이드하기 전에 항상 DB 클러스터의 수동 스냅샷을 생성하는 것이 좋습니다. 자동 스냅샷은 단기적인 보호만 제공하는 반면, 수동 스냅샷은 명시적으로 삭제하기 전까지는 계속 사용할 수 있습니다.

경우에 따라 Neptune은 업그레이드 프로세스의 일부로 수동 스냅샷을 생성하지만, 여기에 의존해서는 안 되며 항상 자체 수동 스냅샷을 만들어야 합니다.

DB 클러스터를 업그레이드 전 상태로 되돌릴 필요가 없다고 판단되면 직접 만든 수동 스냅샷과 Neptune이 생성한 수동 스냅샷(있는 경우)을 명시적으로 삭제할 수 있습니다. Neptune이 수동 스냅샷을 생성하는 경우 이름은 preupgrade로 시작하고 DB 클러스터 이름, 소스 엔진 버전, 대상 엔진 버전, 날짜가 차례로 뒤따릅니다.

참고

보류 중인 작업이 진행 중인 동안 업그레이드를 시도하면 다음과 같은 오류가 발생할 수 있습니다.

We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.

이 오류가 발생하면 보류 중인 작업이 완료될 때까지 기다리거나, 유지 관리 기간을 즉시 실행하여 이전의 업그레이드를 완료합니다.

엔진 버전 업그레이드에 대한 자세한 내용은 Amazon Neptune DB 클러스터 유지 관리 단원을 참조하십시오. 질문이나 우려 사항이 있는 경우 커뮤니티 포럼과 AWS Premium Support를 통해 AWS 지원 팀을 이용할 수 있습니다.