Amazon Neptune エンジンバージョン 1.1.1.0 (2022-04-19) - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Neptune エンジンバージョン 1.1.1.0 (2022-04-19)

2022 年 4 月 19 日現在、エンジンバージョン 1.1.1.0 は一般にデプロイされています。新しいリリースがすべてのリージョンで利用可能になるまでに数日かかります。

重要

1.1.0.0 より前のバージョンからこのエンジンリリースにアップグレードすると、DB クラスター内のすべてのインスタンスでオペレーティングシステムのアップグレードもトリガーされます。オペレーティングシステムのアップグレード中に発生するアクティブな書き込み要求は処理されないため、アップグレードを開始する前に、一括データロードを含め、アップグレード中のクラスターへのすべての書き込みワークロードを一時停止する必要があります。

アップグレードを正常に完了するには、すべてのアベイラビリティーゾーン (AZ) の各サブネットに、Neptune インスタンスごとに利用可能な IP アドレスが少なくとも 1 つ必要です。例えば、サブネット 1 に 1 つのライターインスタンスと 2 つのリーダーインスタンスがあり、サブネット 2 に 2 つのリーダーインスタンスがある場合、アップグレードを開始する前に、サブネット 1 には少なくとも 3 つの IP アドレスの空きがあり、サブネット 2 には少なくとも 2 つの IP アドレスが空いている必要があります。

アップグレードの開始時に、Neptune は preupgrade に DB クラスターの情報に基づいて自動生成された識別子が続く名前のスナップショットを生成します。このスナップショットには課金はされません。アップグレードプロセス中に問題が発生した場合は、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) のバイトコードサポート、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()) のような匿名トラバーサルを使用してください。

  • IAM データアクセスポリシーで使用して、Neptune DB クラスターに保存されているデータへのアクセスを制御できるAWS グローバル条件キーのサポートが追加されました。

  • Neptune DFE クエリエンジンは OpenCypher クエリ言語による本番環境での使用が可能になりましたが、Gremlin および SPARQL クエリではまだ使用できません。lab-mode パラメータではなく、独自の neptune_dfe_query_engine インスタンスパラメータを使用して有効化できるようになりました。

このエンジンリリースの改良点

  • パラメータ化されたクエリサポート、パラメータ化されたクエリのための抽象構文ツリー (AST) キャッシュ、可変長パス (VLP) の改良、新しい演算子と句などの新機能が openCypher に追加されました。現在の言語サポートレベルについては、「Amazon Neptune におけるオープンサイファー仕様への準拠」を参照してください。

  • 単純な読み取り/書き込みワークロードの openCypher のパフォーマンスを大幅に改善し、リリース 1.1.0.0 と比較してスループットが向上しました。

  • 可変長パスを処理する openCypher の双方向と深度の制限がなくなりました。

  • DFE エンジンでの Gremlin within および without 述部のサポートが完了しました。他の述語演算子と組み合わせる場合も含みます。例:

    g.V().has('age', within(12, 15, 18).or(gt(30)))
  • スコープがグローバルであり (つまり order(local) ではない)、by() モジュレーターが使用されていない場合の DFE エンジンでの Gremlin order ステップのサポートが拡張されました。例えば、このクエリは DFE によってサポートされるようになりました。

    g.V().values("age").order()
  • レコードがトランザクションの最後の操作であることを示すために、Neptune ストリーム変更ログレスポンス形式に isLastOp フィールドが追加されました。

  • 監査ログのパフォーマンスが大幅に向上し、監査ログが有効になっている場合の待ち時間が短縮されました。

  • Gremlin WebSocket バイトコードと 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 は preupgrade に DB クラスターの情報に基づいて自動生成された識別子が続く名前のスナップショットを生成します。このスナップショットには課金はされません。アップグレードプロセス中に問題が発生した場合は、DB クラスターを復元するために使用できます。

エンジンのアップグレード自体が完了すると、古いオペレーティングシステムで新しいエンジンバージョンが一時的に利用可能になりますが、5 分以内にクラスター内のすべてのインスタンスが同時にオペレーティングシステムのアップグレードを開始します。DB クラスターはこの時点で約 6 分間使用できなくなります。アップグレードの完了後に、書き込みワークロードを再開できます。

このプロセスでは、次のイベントが生成されます。

  • クラスターごとのイベントメッセージ。

    • 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 プレミアムサポートから AWS サポートチームにお問い合わせください。