Amazon Neptune Engine バージョン 1.3.2.1 (2024-06-20) - Amazon Neptune

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

Amazon Neptune Engine バージョン 1.3.2.1 (2024-06-20)

2024-06-20 の時点で、エンジンバージョン 1.3.2.1 は一般的にデプロイされています。新しいリリースがすべてのリージョンで利用可能になるまでに数日かかります。

注記

エンジンリリース 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.1 では、注意すべき潜在的な問題がいくつか発生しました。詳細については、以下のセクションリリース 1.3.2.1 の問題の軽減を参照してください。

このエンジンリリースで修正された欠陥

openCypher 修正
  • パラメータLIMITとして SKIPおよび を持つ内部WITH句を含むパラメータ化されたクエリのクエリプランキャッシュ機能でバグが検出されました。SKIP/LIMIT 値は適切にパラメータ化されませんでした。その結果、異なるパラメータ値を持つ同じキャッシュされたクエリプランの後続の実行でも、最初の実行と同じ結果が返されます。これは修正されました。

    # insert some nodes UNWIND range(1, 10) as i CREATE (s {name: i}) RETURN s # sample query MATCH (p) WITH p ORDER BY p.name SKIP $s LIMIT $l RETURN p.name as res # first time executing with {"s": 2, "l": 1} { "results" : [ { "res" : 3 } ] } # second time executing with {"s": 2, "l": 10} # due to bug, produces { "results" : [ { "res" : 3 } ] } # with fix, produces correct results: { "results" : [ { "res" : 3 }, { "res" : 4 }, { "res" : 5 }, { "res" : 6 }, { "res" : 7 }, { "res" : 8 }, { "res" : 9 }, { "res" : 10 } ] }%
  • 渡されたパラメータがデータベースにまだ存在しないInternalFailureException場合に、パラメータ化されたミューテーションクエリが をスローするバグを修正しました。

  • クエリリソースのクリーンアップ中にレース条件にヒットした後、パラメータ化された Bolt クエリがスタックするバグを修正しました。

1.3.2.0 から持ち越された 1.3.2.1 の変更

エンジンリリース 1.3.2.0 から引き継がれた改善

全般的な機能強化
  • 暗号スイート TLS_AES_128_SHA256_ GCMおよび TLS_AES_256_GCM_ を含むTLSバージョン 1.3 のサポートSHA384。TLS 1.3 はオプションです。1.2 TLS はまだ最小です。

  • openCypher dateime 形式の拡張サポートは、このバージョンの lab_mode にあります。テストすることをお勧めします。

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 および 1.3.2.1 ではdisabled、このパラメータのデフォルト値は ですDisabled

openCypher 改善点
  • Amazon Neptune エンジンバージョン 1.3.2.0 は、以前のエンジンリリースと比較して、 openCypher クエリパフォーマンスのスループットを最大 9 倍、10 倍向上させます。

  • 低レイテンシークエリとスループットパフォーマンスの向上: 低レイテンシー openCypher クエリの全体的なパフォーマンスの向上。新しいバージョンでは、このようなクエリのスループットも向上します。パラメータ化されたクエリを使用すると、改善がより重要になります。

  • クエリプランキャッシュのサポート: Neptune にクエリが送信されると、クエリ文字列が解析、最適化され、クエリプランに変換され、エンジンによって実行されます。アプリケーションは、多くの場合、異なる値でインスタンス化された一般的なクエリパターンによってバックアップされます。クエリプランキャッシュは、クエリプランをキャッシュして、このような繰り返しパターンの解析と最適化を回避することで、全体的なレイテンシーを減らすことができます。詳細については、「Amazon Neptune のクエリプランキャッシュ」を参照してください。

  • DISTINCT 集約クエリのパフォーマンス向上。

  • nullable 変数を含む結合のパフォーマンス向上。

  • id(ノード/関係) 述語と等しくないクエリのパフォーマンス向上。

  • 日時機能のサポートが拡張されました ( を含めるDatetimeMillisecondことでラボモードでのみ有効になりますDatetimeMillisecond=enabled。詳細については、「Neptune openCypher 実装での一時的なサポート (Neptune Analytics および Neptune Database 1.3.2.0 以降)」を参照してください。

エンジンリリース 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 クエリ翻訳のNullPointerExceptionバグを修正しました。これは、クエリが 2 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.1 の問題の軽減

  • 数値フィルター値を使用するクエリは、クエリプランキャッシュを使用するときに誤った結果が返される可能性があります。問題を回避するには、クエリヒントを使用してクエリプランキャッシュを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.1 にアップグレードする前に、プロジェクトが以下のクエリ言語バージョンと互換性があることを確認してください。

  • サポートされている最も古いバージョンの Gremlin: 3.7.1

  • サポートされている最も新しいバージョンの Gremlin: 3.7.1

  • openCypher バージョン: Neptune-9.0.20190305-1.0

  • SPARQL バージョン: 1.1

エンジンリリース 1.3.2.1 へのアップグレードパス

このリリースへは、エンジンリリース 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.1 \ --allow-major-version-upgrade \ --apply-immediately

Windows の場合:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.3.2.1 ^ --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 サポートチームを利用できます。