翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
openCypher および Bolt を使用した Neptune のベストプラクティス
Neptune で openCypher クエリ言語と Bolt プロトコルを使用する場合は、以下のベストプラクティスに従ってください。Neptune openCypher での の使用の詳細については、「」を参照してくださいを使用した Neptune グラフへのアクセス openCypher。
トピック
- フェイルオーバー後の新しい接続の作成
- 存続期間の長いアプリケーションの接続処理
- の接続処理 AWS Lambda
- クエリでは双方向のエッジを優先する
- Neptune は 1 つのトランザクションでの複数の同時クエリをサポートしていません。
- 完了したら、ドライバーオブジェクトを閉じます
- 読み取りと書き込みには明示的なトランザクションモードを使用してください。
- 例外の場合の再試行ロジック
- 1 つのSET句を使用して複数のプロパティを一度に設定する
- パラメータ化されたクエリを使用する
- UNWIND 句でネストされたマップの代わりにフラット化されたマップを使用する
- 可変長パス (VLP) 式で、より制限の厳しいノードを左側に配置する
- 詳細な関係名を使用して、ノードラベルの重複チェックを回避する
- 可能な場合はエッジラベルを指定する
- 可能であれば WITH句を使用しないでください。
- 制限付きフィルターをクエリのできるだけ早い段階で配置する
- プロパティが存在するかどうかを明示的に確認する
- 名前付きパスを使用しない (必須でない限り)
- (COLLECTDISTINCT()) を避ける
- すべてのプロパティ値を取得するときに、個々のプロパティルックアップよりもプロパティ関数を優先する
- クエリの外部で静的計算を実行する
- 個々のステートメントUNWINDの代わりに を使用するバッチ入力
- ノード/リレーションシップIDsにカスタムを使用する
- クエリで ~id 計算を行わない
フェイルオーバー後の新しい接続の作成
フェイルオーバーの場合、DNS名前が特定の IP アドレスに解決されたため、Bolt ドライバーは新しいアクティブなライターインスタンスではなく、古いライターインスタンスに引き続き接続できます。
これを防ぐには、フェイルオーバー後に Driver
オブジェクトを閉じて、再接続します。
存続期間の長いアプリケーションの接続処理
コンテナ内や Amazon EC2インスタンスで実行されているアプリケーションなど、長寿命のアプリケーションを構築する場合は、Driver
オブジェクトを 1 回インスタンス化し、そのオブジェクトをアプリケーションの有効期間にわたって再利用します。Driver
オブジェクトはスレッドセーフで、初期化にはかなりのオーバーヘッドがかかります。
の接続処理 AWS Lambda
ボルトドライバーは、接続オーバーヘッドと管理要件があるため、 AWS Lambda 関数内での使用はお勧めしません。代わりに HTTPSエンドポイントを使用します。