AWS Neptune的HTTPS OpenCypher端点是否支持单请求多语句及事务提交?
AWS Neptune OpenCypher 单请求多语句支持说明
AWS Neptune的HTTPS OpenCypher端点不支持通过分号分隔的方式在单个请求中提交多条查询或更新语句,这正是你测试时出现HTTP 400错误和MalformedQueryException异常的原因。
尽管Gremlin允许用分号分隔多语句,Neo4j等数据库的Cypher实现也支持批量提交,但Neptune的OpenCypher当前仅接受单条语句的请求。
如果需要在单个事务上下文内执行多语句,可采用以下两种方案:
1. 使用事务API分步骤提交
通过Neptune的OpenCypher事务机制,分三次请求完成事务:
- 发送
BEGIN语句开启事务,获取事务ID - 依次提交多条目标语句,请求中携带事务ID关联会话
- 发送
COMMIT(或ROLLBACK)语句结束事务
这种方式能确保所有语句在同一个事务中执行,要么全部成功,要么全部回滚。
2. 合并多条语句为单条Cypher
如果是批量更新或查询,可将逻辑合并到单条语句中:
- 批量创建节点/关系时,用逗号分隔多个创建逻辑:
CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}), (a)-[:KNOWS]->(b) - 处理批量数据时,用
UNWIND遍历集合实现批量操作:UNWIND [ {name: 'Alice', age: 30}, {name: 'Bob', age: 28} ] AS personData CREATE (p:Person {name: personData.name, age: personData.age})
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

