Amazon Neptune 엔진 버전 1.1.1.0(2022년 4월 19일) - Amazon Neptune

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

Amazon Neptune 엔진 버전 1.1.1.0(2022년 4월 19일)

2022년 4월 19일부터 엔진 버전 1.1.1.0이 정식으로 배포되고 있습니다. 모든 리전에서 새 릴리스를 사용할 수 있게 되려면 며칠이 걸립니다.

중요

1.1.0.0보다 이전 버전에서 이 엔진 릴리스로 업그레이드하면 DB 클러스터의 모든 인스턴스에서 운영 체제 업그레이드도 트리거됩니다. 운영 체제 업그레이드 중에 발생하는 활성 쓰기 요청은 처리되지 않으므로 업그레이드를 시작하기 전에 대량 데이터 로드를 포함하여 업그레이드 중인 클러스터에 대한 모든 쓰기 워크로드를 일시 중지해야 합니다.

업그레이드를 성공적으로 완료하려면 모든 가용 영역(AZ)의 각 서브넷에 Neptune 인스턴스당 하나 이상의 IP 주소를 사용할 수 있어야 합니다. 예를 들어 서브넷 1에 작성기 인스턴스 하나와 리더 인스턴스 2개가 있고 서브넷 2에 리더 인스턴스가 2개 있는 경우, 업그레이드를 시작하기 전에 서브넷 1에는 적어도 3개 이상의 IP 주소가 비어 있어야 하고 서브넷 2에는 적어도 2개 이상의 IP 주소가 비어 있어야 합니다.

업그레이드 시작 시 Neptune은 DB 클러스터 정보를 기반으로 이름 뒤에 자동 생성된 식별자 뒤에 preupgrade로 구성된 스냅샷을 생성합니다. 이 스냅샷에는 요금이 부과되지 않으며 업그레이드 프로세스 중에 문제가 발생할 경우 이를 사용하여 DB 클러스터를 복원할 수 있습니다.

엔진 업그레이드 자체가 완료되면 기존 운영 체제에서 새 엔진 버전을 잠시 사용할 수 있지만 5분 이내에 클러스터의 모든 인스턴스가 동시에 운영 체제 업그레이드를 시작합니다. 이 시점에서 몇 분 동안은 DB 클러스터를 사용할 수 없습니다. 업그레이드가 완료된 후 쓰기 워크로드를 재개할 수 있습니다.

이 프로세스에서는 다음과 같은 이벤트가 생성됩니다.

  • 클러스터별 이벤트 메시지:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • 인스턴스별 이벤트 메시지:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

이 릴리스의 후속 패치 릴리스

이 엔진 릴리스의 새로운 기능

  • openCypher 쿼리 언어는 프로덕션 용도의 상용 버전으로 사용할 수 있습니다.

    주의

    이번 릴리스에는 IAM 인증과 함께 openCypher를 사용하는 코드에 대한 주요 변경 사항이 포함되어 있습니다. openCypher의 Neptune 미리 보기에 있는 IAM 서명의 호스트 문자열에는 bolt:// 등 다음과 같은 프로토콜이 포함되어 있습니다.

    "Host":"bolt://(host URL):(port)"

    이번 엔진 릴리스부터는 다음 프로토콜을 생략해야 합니다.

    "Host":"(host URL):(port)"

    Bolt 프로토콜 사용의 예제를 참조하세요.

  • TinkerPop 3.5.2에 대한 지원이 추가되었습니다. 이번 릴리스의 변경 사항에는 원격 트랜잭션 지원 및 세션(g.tx 사용)에 대한 bytecode 지원, Gremlin 언어에 datetime() 함수 추가 등이 포함되어 있습니다.

    주의

    TinkerPop 3.5.0, 3.5.1 및 3.5.2에는 Gremlin 코드에 영향을 미칠 수 있는 몇 가지 주요 변경 사항이 도입되었습니다. 예를 들어 다음과 같이 GraphTraversalSource에서 생성된 순회를 하위 요소처럼 사용하면 g.V().union(identity(), g.V())는 더 이상 작동하지 않습니다.

    이제 대신 다음과 같은 g.V().union(identity(), __.V()) 익명 순회를 사용하세요.

  • Neptune DB 클러스터 Neptune에 저장된 데이터에 대한 액세스를 제어하는 IAM 데이터 액세스 정책에서 사용할 수 있는 AWS 글로벌 조건 키에 대한 지원이 추가되었습니다.

  • 이제 Neptune DFE 쿼리 엔진은 일반적으로 openCypher 쿼리 언어와 함께 프로덕션 용도로 사용할 수 있지만 Gremlin 및 SPARQL 쿼리에는 아직 사용할 수 없습니다. 이제 lab-mode 파라미터 대신 자체 neptune_dfe_query_engine 인스턴스 파라미터로 사용할 수 있습니다.

이 엔진 릴리스의 개선 사항

  • openCypher에 파라미터화된 쿼리 지원, 파라미터화된 쿼리의 추상 구문 트리(AST) 캐싱, 가변 길이 경로(VLP) 개선, 새로운 연산자 및 절과 같은 새로운 기능이 추가되었습니다. 현재 언어 지원 수준은 Amazon Neptune의 openCypher 사양 규정 준수의 내용을 참조하세요.

  • 간단한 읽기 및 쓰기 워크로드에 대한 openCypher의 성능을 크게 개선하여 릴리스 1.1.0.0에 비해 처리량이 더 높아졌습니다.

  • 가변 길이 경로를 처리하는 openCypher 양방향 및 깊이 제한 사항이 제거되었습니다.

  • 다른 조건자 연산자와 조합되는 경우를 포함하여 Gremlin withinwithout 조건자에 대한 DFE 엔진 지원이 완료되었습니다. 예:

    g.V().has('age', within(12, 15, 18).or(gt(30)))
  • 범위가 글로벌인 경우(즉, 그렇지 않은 경우 order(local)) 및 by() 변조기를 사용하지 않는 경우 Gremlin order 단계에 대한 DFE 엔진 지원이 확대되었습니다. 예를 들어 이제 다음 쿼리는 DFE를 지원합니다.

    g.V().values("age").order()
  • 레코드가 트랜잭션의 마지막 작업임을 나타내기 위해 isLastOp 필드를 Neptune 스트림 변경 로그 응답 형식에 추가했습니다.

  • 감사 로깅의 성능을 대폭 개선하고 감사 로깅이 사용 설정된 경우 지연 시간을 줄였습니다.

  • Gremlin WebSocket bytecode 및 HTTP 쿼리를 감사 로그에서 사용자가 읽을 수 있는 형식으로 변환했습니다. 이제 감사 로그에서 직접 쿼리를 복사하여 Neptune 노트북 및 다른 곳에서 실행할 수 있습니다. 현재 감사 로그 형식에 대한 이번 변경 사항은 주요한 사항이라는 점을 참고하시기 바랍니다.

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

  • 다음 쿼리에서처럼 중첩된 filter()count() 단계를 조합하여 사용할 경우 결과가 반환되지 않는 드문 경우의 Gremlin 버그가 수정되었습니다.

    g.V("1").filter(out("knows") .filter(in("knows") .hasId("notExists")) .count())
  • to() 또는 from() 순회의 조합 중 하나에서 집계 단계로 저장된 버텍스를 addE 단계와 함께 사용할 때 오류가 반환되는 Gremlin 버그가 수정되었습니다. 이러한 쿼리의 예는 다음과 같습니다.

    g.V("id").aggregate("v").out().addE().to(select("v").unfold()))
  • DFE 엔진을 사용할 때 엣지 케이스에서 not 단계가 실패하는 Gremlin 버그가 수정되었습니다. 예제:

    g.V().not(V())
  • to()from() 순회 내에서 sideEffect 값을 사용할 수 없는 Gremlin 버그가 수정되었습니다.

  • 간혹 빠른 재설정에서 인스턴스 장애 조치가 트리거되는 버그가 수정되었습니다.

  • 실패한 트랜잭션이 다음 로드 작업을 시작하기 전에 닫히지 않는 대량 로더 버그가 수정되었습니다.

  • 메모리 부족 상태로 인해 시스템 충돌이 발생할 수 있는 대량 로더 버그가 수정되었습니다.

  • 장애 조치 후 로더가 IAM 보안 인증을 사용할 수 있을 때까지 충분히 기다리지 않는 대량 로더 버그를 수정하기 위한 재시도가 추가되었습니다.

  • status 엔드포인트와 같은 쿼리가 아닌 엔드포인트의 내부 보안 인증 캐시가 제대로 지워지지 않는 버그가 수정되었습니다.

  • 스트림 커밋 시퀀스 번호가 올바르게 정렬되도록 스트림 버그가 수정되었습니다.

  • IAM 지원 클러스터에서 장기 실행 연결이 10일 이내에 종료되는 버그가 수정되었습니다.

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

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

  • Gremlin 초기 버전 지원: 3.5.2

  • Gremlin 최신 버전 지원: 3.5.4

  • openCypher 버전: Neptune-9.0.20190305-1.0

  • SPARQL 버전: 1.1

엔진 릴리스 1.1.1.0에 대한 업그레이드 경로

이전 Neptune 엔진 릴리스를 이 릴리스 버전으로 수동 업그레이드할 수 있습니다. 메이저 버전 엔진(1.1.0.0) 이전 버전은 이번 릴리스로 업그레이드하는 데 시간이 더 오래 걸린다는 점을 참고하시기 바랍니다.

이 릴리스로 자동으로 업그레이드되지 않습니다.

이 릴리스로 업그레이드

중요

1.1.0.0보다 이전인 모든 버전에서 이 엔진 릴리스로 업그레이드하면 DB 클러스터의 모든 인스턴스에서 운영 체제 업그레이드도 트리거됩니다. 운영 체제 업그레이드 중에 발생하는 활성 쓰기 요청은 처리되지 않으므로 업그레이드를 시작하기 전에 대량 데이터 로드를 포함하여 업그레이드 중인 클러스터에 대한 모든 쓰기 워크로드를 일시 중지해야 합니다.

업그레이드 시작 시 Neptune은 DB 클러스터 정보를 기반으로 이름 뒤에 자동 생성된 식별자 뒤에 preupgrade로 구성된 스냅샷을 생성합니다. 이 스냅샷에는 요금이 부과되지 않으며 업그레이드 프로세스 중에 문제가 발생할 경우 이를 사용하여 DB 클러스터를 복원할 수 있습니다.

엔진 업그레이드 자체가 완료되면 기존 운영 체제에서 새 엔진 버전을 잠시 사용할 수 있지만 5분 이내에 클러스터의 모든 인스턴스가 동시에 운영 체제 업그레이드를 시작합니다. 이 시점에서 약 6분 동안은 DB 클러스터를 사용할 수 없습니다. 업그레이드가 완료된 후 쓰기 워크로드를 재개할 수 있습니다.

이 프로세스에서는 다음과 같은 이벤트가 생성됩니다.

  • 클러스터별 이벤트 메시지:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • 인스턴스별 이벤트 메시지:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

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

Linux, OS X, Unix의 경우:

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

Windows의 경우

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine neptune ^ --engine-version 1.1.1.0 ^ --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 Support 팀에 도움을 요청할 수 있습니다.