翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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','ROC').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 コードパスでトラバーサルクエリの Bytecode 表現を構築する問題を修正しました。この問題により、同じ戦略の既存の指示を置き換える代わりに、Bytecode に新しい指示が誤って追加され、結果キャッシュの無効化中にキャッシュキーが一致しなくなり、保存された結果がクリアされました。
openCypher の修正
-
CREATE/MERGE/MATCH
`~id`match
句の の動作を修正しました。null 型や非文字列型などの無効な`~id`
値を使用する場合、CREATE/MERGE 句には正しい例外がスローされ、MATCH
句にはゼロの結果が返されるようになりました。 -
ユーザーが集計関数 (sum(<string>)) でサポートされていない型の値を使用する場合の IFE を修正しました。
-
大量のクエリワークロードからの低レイテンシーのミューテーションクエリが OutOfMemory エラーで失敗する問題を修正しました。
SPARQL の修正
-
'%'
文字を含む SPARQL クエリを処理する際の監査ログの問題を修正しました。
このリリースでサポートされるクエリ言語バージョン
DB クラスターをバージョン 1.4.1.0 にアップグレードする前に、プロジェクトが次のクエリ言語バージョンと互換性があることを確認してください。
サポートされている最も古いバージョンの Gremlin:
3.7.1
サポートされている最も新しいバージョンの Gremlin:
3.7.1
openCypher バージョン:
Neptune-9.0.20190305-1.0
SPARQL バージョン:
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 プレミアム