本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Neptune 使用 openCypher 和螺栓的最佳实践
在 Neptune 中使用 openCypher 查询语言和 Bolt 协议时,请遵循以下最佳实践。有关在 Neptune openCypher 中使用的信息,请参见。使用以下方式访问海王星图 openCypher
主题
- 在失效转移后创建新连接
- 长寿命应用程序的连接处理
- 的连接处理 AWS Lambda
- 在查询中首选定向边缘而非双向边缘
- Neptune 不支持在一个事务中进行多个并发查询
- 完成后关闭驱动程序对象
- 使用显式事务模式进行读写
- 异常的重试逻辑
- 使用单个SET子句一次设置多个属性
- 使用参数化查询
- 在子句中使用扁平化映射而不是嵌套映射 UNWIND
- 在 Variable-Length Path () 表达式中将限制性更强的节点放在左侧 VLP
- 使用精细的关系名称避免冗余的节点标签检查
- 尽可能指定边缘标签
- 尽可能避免使用该WITH子句
- 尽早在查询中放置限制性筛选器
- 明确检查属性是否存在
- 不要使用命名路径(除非是必需的)
- 避免 COLLECT (DISTINCT())
- 检索所有属性值时,最好使用属性函数而不是单个属性查找
- 在查询之外执行静态计算
- 使用 Batch 输入UNWIND代替单个语句
- 最好IDs对节点/关系使用自定义
- 避免在查询中进行 ~id 计算
在失效转移后创建新连接
在故障转移的情况下,Bolt 驱动程序可以继续连接到旧的写入器实例,而不是新的活动写入器实例,因为DNS名称已解析为特定的 IP 地址。
为防止出现这种情况,请在进行任何失效转移后关闭 Driver
对象,然后重新连接该对象。
长寿命应用程序的连接处理
在构建长期存在的应用程序(例如在容器内或 Amazon EC2 实例上运行的应用程序)时,只需实例化一次Driver
对象,然后在应用程序的生命周期内重复使用该对象。Driver
对象是线程安全的,并且将其初始化的开销非常大。
的连接处理 AWS Lambda
由于螺栓驱动器的连接开销和管理要求,因此不建议在 AWS Lambda 功能中使用螺栓驱动器。改用终HTTPS端节点。