Amazon Neptune エンジンバージョン 1.4.1.0 (2024-11-21)
2024 年 11 月 21 日現在、エンジンバージョン 1.4.1.0 は一般にデプロイされています。新しいリリースがすべてのリージョンで利用可能になるまでに数日かかります。
警告
クエリで重複使用される数値型パラメータの処理に関するバグのため、数値パラメータ値が関与するパラメータ化クエリを実行するユースケースで、クエリプランキャッシュのサポートを一時的に中止します。例:
MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n UNION MATCH (n:show) WHERE n.duration>=$minutes RETURN n parameters={"minutes":130}
ステートメントまたはディクショナリインデックスに対して多くのインデックス検索を行うクエリでは、パフォーマンスが 5% 低下する可能性があります。例えば、すべての頂点の数を取得したり、すべての頂点の id を取得したりしても影響を受けません。すべての頂点のプロパティをすべて取得すると、最大 5% の低下が見られる可能性があります。
このエンジンリリースの新機能
-
読み取り専用サブクエリを使用した
CALLサブクエリのサポートが追加され、定義されたスコープ内でのオペレーションの実行が可能になりました。CALLサブクエリが受信行ごとに 1 回実行され、返される変数を、それを囲むクエリの外側のスコープで使用できます。外側のスコープからの変数は、インポートを行うWITH句を使用してCALLサブクエリにインポートできます。詳細については、「Neptune での CALL サブクエリのサポート」を参照してください。MATCH (origin:airport {code:"AUS"})-[:route]->(stopover) CALL { WITH stopover MATCH (stopover)-[r:route]->(destination) RETURN destination ORDER BY r.dist DESC LIMIT 2 } RETURN stopover, destination -
openCypher 関数を追加しました。文字列、コレクションの操作、コレクションのソートに役立つ 8 つの新しい関数を導入しました。例として、
textIndexOf、collToSet、collSubtract、collIntersection、collSort、collSortMaps、collSortMulti、およびcollSortNodesがあります。説明、入力パラメータ、出力、および例については、「Neptune openCypher 関数」を参照してください。
このエンジンリリースの改良点
Gremlin の改善
-
新しいラボモードパラメータ
AccurateQRCMemoryEstimation。Gremlin クエリ結果キャッシュを有効にすると、データベースでのクエリ結果のキャッシュが許可されます。デフォルトでは、キャッシュされた結果のサイズは概算推定を使用して決定されます。このラボモードパラメータAccurateQRCMemoryEstimationを有効にすると、キャッシュされた結果のサイズ推定で、概算ではなく正確なサイズの推定が使用されます。 -
デフォルトの実行エンジンで実行される Gremlin クエリの「not」フィルター最適化の問題を修正しました。この問題は、エッジのフィルタリングで not() ステップと outV()/inV()/otherV() ステップの組み合わせを使用する場合にクエリに影響を及ぼしていました。サンプルクエリは以下のとおりです。
-
g.E().hasLabel("knows").not(outV().hasId("5")) -
g.V().has('airport','code','SDF').outE().where(not(otherV().has(id, within('1','5','7')))).count()
-
openCypher の改善
-
大規模な静的リストまたはマップを使用するクエリのパフォーマンスが向上しました。プロパティを持つノードを挿入/アップサートするために使用されるネストされたマップの大きなリストに対して UNWIND を行う特定のクエリで、パフォーマンスが大幅に向上します。
-
このクエリで使用される値に対して一貫したデータ型を継承するようエンジンに指示する新しい openCypher クエリヒントを導入します。新しい openCypher クエリヒントの詳細については、「AssumeConsistentDataTypes」を参照してください。
-
テキスト値とコレクション値を処理するための新しい openCypher 関数のセットを導入します。
このエンジンリリースで修正された不具合
Gremlin の修正
-
GraphTraversalSource「g」オブジェクトでいずれかのwithStrategies()/withoutStrategies()/with()ステップが使用されている場合、TinkerPop OSS コードパスでトラバーサルクエリのバイトコード表現が構築される問題を修正しました。この問題で、同じ戦略の既存の指示を置き換える代わりに、誤って新しい指示がバイトコードに追加され、結果キャッシュの無効化中にキャッシュキーの不一致が発生し、保存された結果がクリアされていました。
openCypher の修正
-
CREATE/MERGE/MATCH 句の
`~id`matchの動作を修正しました。null 型や文字列以外の型などの無効な`~id`値を使用した場合、CREATE/MERGE 句には正しい例外がスローされ、MATCH句にはゼロの結果が返されるようになりました。 -
ユーザーが集計関数 (sum(<文字列>)) でサポートされていない型の値を使用する場合の IFE を修正しました。
-
大量のクエリのワークロードからの低レイテンシーミューテーションクエリが OutOfMemory エラーで失敗する問題を修正しました。
SPARQL の修正
-
'%'文字を含む SPARQL クエリを処理する際の監査ログの問題を修正しました。
このリリースでサポートされるクエリ言語バージョン
DB クラスターをバージョン 1.4.1.0 にアップグレードする前に、プロジェクトが次のクエリ言語バージョンと互換性があることを確認してください。
サポートされている最も古いバージョンの Gremlin:
3.7.1サポートされている最も新しいバージョンの Gremlin:
3.7.1openCypher バージョン:
Neptune-9.0.20190305-1.0SPARQL バージョン:
1.1
エンジンリリース 1.4.1.0 へのアップグレードパス
このリリースへは、エンジンリリース 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.4.1.0 \ --allow-major-version-upgrade \ --apply-immediately
Windows の場合:
aws neptune modify-db-cluster ^ --db-cluster-identifier(your-neptune-cluster)^ --engine-version 1.4.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 プレミアムサポート