翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Neptune Engine バージョン 1.3.2.0 (2024-06-10)
2024-06-10 の時点で、エンジンバージョン 1.3.2.0 は一般的にデプロイされています。新しいリリースがすべてのリージョンで利用可能になるまでに数日かかります。
注記
エンジンリリース 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.0 では、注意すべき潜在的な問題がいくつか発生しました。詳細については、以下のセクションリリース 1.3.2.0 の問題の軽減を参照してください。
このエンジンリリースの改善点
全般的な機能強化
-
暗号スイート TLS_AES_128_SHA256_ GCMおよび TLS_AES_256_GCM_ を含むTLSバージョン 1.3 のサポートSHA384。TLS 1.3 はオプションです。1.2 TLS は最小です。
Gremlin の改善点
-
TinkerPop 3.7.x アップグレード
-
Gremlin 言語の大規模な拡張を提供します。
-
文字列、リスト、日付を処理するための新しいステップ。
-
mergeV()
ステップでカーディナリティを指定するための新しい構文。 -
union()
が開始ステップとして使用できるようになりました。 -
3.7.x の変更の詳細については、TinkerPop アップグレードドキュメント
を参照してください。
-
-
Java 用のクライアント Gremlin 言語ドライバーをアップグレードするときは、シリアライザークラスの名前変更
が一部無効になっていることに注意してください。指定した場合、設定ファイルとコードでパッケージとクラスの命名を更新する必要があります。
-
-
StrictTimeoutValidation
( を含めるStrictTimeoutValidation
ことでラボモード経由で有効にした場合のみStrictTimeoutValidation=enabled
):StrictTimeoutValidation
パラメータの値が の場合enabled
、リクエストオプションとして指定されたクエリごとのタイムアウト値またはクエリヒントは、パラメータグループ内でグローバルに設定された値を超えることはできません。このような場合、Neptune は をスローしますInvalidParameterException
。この設定は、値が の場合、/status
エンドポイントのレスポンスで確認できます。Neptune バージョン 1.3.2.0 ではdisabled
、このパラメータのデフォルト値は ですDisabled
。
openCypher 改善点
-
Amazon Neptune エンジンバージョン 1.3.2.0 は、以前のエンジンリリースと比較して、 openCypher クエリパフォーマンスのスループットを最大 9 倍、10 倍向上させます。
-
低レイテンシークエリとスループットパフォーマンスの向上: 低レイテンシー openCypher クエリの全体的なパフォーマンスの向上。新しいバージョンでは、このようなクエリのスループットも向上します。パラメータ化されたクエリを使用すると、改善がより重要になります。
-
クエリプランキャッシュのサポート: Neptune にクエリが送信されると、クエリ文字列が解析、最適化され、クエリプランに変換され、エンジンによって実行されます。アプリケーションは、多くの場合、異なる値でインスタンス化された一般的なクエリパターンによってバックアップされます。クエリプランキャッシュは、クエリプランをキャッシュして、このような繰り返しパターンの解析と最適化を回避することで、全体的なレイテンシーを減らすことができます。
-
DISTINCT 集約クエリのパフォーマンス向上。
-
nullable 変数を含む結合のパフォーマンス向上。
-
id(ノード/関係) 述語と等しくないクエリのパフォーマンス向上。
-
日時機能のサポートが拡張されました ( を含める
DatetimeMillisecond
ことでラボモードでのみ有効になりますDatetimeMillisecond=enabled
。詳細については、「Neptune openCypher 実装での一時的なサポート (Neptune Analytics および Neptune Database 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 クエリ翻訳のバグを修正しました。これは、クエリが 2
NullPointerException
つのDFEフラグメントで実行され、最初のフラグメントが満足できないノードに最適化された場合に発生します。例:g.withSideEffect('Neptune#useDFE', true). V(). has('name', 'doesNotExists'). has("name", TextP.regex("mark.*")). inject(1). V(). out(). has('name', 'vadas')
-
クエリに by() モジュレータ ValueTraversal が含まれ、その入力が Map
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 修正
-
多くのトリプルや大きなトークンINSERTDATAを含むような大規模なクエリの解析時間を改善するためにSPARQL、パーサーを修正しました。
リリース 1.3.2.0 の問題の軽減
-
バージョン 1.3.2.0 では、
skip
またはlimit
が内部WITH
句で使用され、パラメータ化されている場合、クエリプランキャッシュで問題が検出されました。例:MATCH (n:Person) WHERE n.age > $age WITH n skip $skip LIMIT $limit RETURN n.name, n.age parameters={"age": 21, "skip": 2, "limit": 3}
この場合、最初の計画からのスキップと制限のパラメータ値が後続のクエリにも適用され、予期しない結果につながります。
緩和策
この問題を回避するには、パラメータ化されたスキップおよび/または制限サブ条項を含むクエリを送信する
QUERY:PLANCACHE "disabled"
ときにクエリヒントを追加します。または、クエリに値をハードコードすることもできます。オプション 1: クエリヒントを使用してプランキャッシュを無効にする:
Using QUERY:PLANCACHE "disabled" MATCH (n:Person) WHERE n.age > $age WITH n skip $skip LIMIT $limit RETURN n.name, n.age parameters={"age": 21, "skip": 2, "limit": 3}
オプション 2: スキップと制限にハードコードされた値を使用する:
MATCH (n:Person) WHERE n.age > $age WITH n skip 2 LIMIT 3 RETURN n.name, n.age parameters={"age": 21}
-
数値フィルター値を使用するクエリは、クエリプランキャッシュを使用するときに誤った結果が返される可能性があります。問題を回避するには、クエリヒントを使用してクエリプランキャッシュを
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または UNIONALLクエリの場合、誤った結果を生成する可能性があります。問題を回避するには、HTTPエンドポイントで特定のクエリの実行を検討してください。または、Bolt プロトコルを使用する場合は、ユニオンの各部分を個別に実行します。
このリリースでサポートされるクエリ言語バージョン
DB クラスターをバージョン 1.3.2.0 にアップグレードする前に、プロジェクトが次のクエリ言語バージョンと互換性があることを確認してください。
サポートされている最も古いバージョンの Gremlin:
3.7.1
サポートされている最も新しいバージョンの Gremlin:
3.7.1
openCypher バージョン:
Neptune-9.0.20190305-1.0
SPARQL バージョン:
1.1
エンジンリリース 1.3.2.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.3.2.0 \ --allow-major-version-upgrade \ --apply-immediately
Windows の場合:
aws neptune modify-db-cluster ^ --db-cluster-identifier
(your-neptune-cluster)
^ --engine-version 1.3.2.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 プレミアムサポート