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

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

Amazon Neptune エンジンバージョン 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 以降では動作しません。同様に、エンジンバージョン 1.4.0.0 以降では 1.4.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.1 の変更が 1.3.2.0 から引き継がれた

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

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

  • 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 集約クエリのパフォーマンスが向上しました。

  • null 可能な変数を含む結合のパフォーマンスが向上しました。

  • 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')
  • 2 つの DFE 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 が UNWIND を介して挿入される複数の MERGE オペレーションの場合のカスタム ID 最適化を修正しました。以下に例を示します。

    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 の修正
  • 多くのトリプルと大きなトークンを含む INSERT DATA などの大規模なクエリの解析時間を改善するように 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 または UNION ALL クエリの場合、誤った結果を生成する可能性があります。この問題を回避するには、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 サポートを通じてサポートチームにお問い合わせください。