AWS Neptune 事务支持

AWS Neptune transaction support

Neptune目前只支持OLTP类型的图遍历查询?

但是来自documentation:

Transactions Neptune opens a new transaction at the beginning of each Gremlin traversal and closes the transaction upon the successful completion of the traversal. The transaction is rolled back when there is an error.

Multiple statements separated by a semicolon (;) or a newline character (\n) are included in a single transaction. Every statement other than the last must end with a next() step to be executed. Only the final traversal data is returned.

Manual transaction logic using tx.commit() and tx.rollback() is not supported.

在单个事务中执行以分号或换行符分隔的多条语句。那么,您可以在每个事务中执行多个查询吗?例如单个脚本中的多个 .drop() 查询?

g.V().has(id,'1').drop();
g.V().has(id,'2').drop();

通过尝试上面的方法,只执行了最后一个查询(只删除了id='2'的顶点)。

但是对于添加顶点,它有效:

g.addV('item').property(id,'3').next()";
g.addV('item').property(id,'4').next()";

两个顶点都添加了。

是否支持单个事务中的多个删除查询?

只是一个猜测,但我认为您可能需要 iterate() 您的遍历,因此:

g.V().has(id,'1').drop().iterate();
g.V().has(id,'2').drop().iterate();

鉴于您使用 addV() 的示例以及您在 drop() 中看到的行为,最后一次遍历是唯一一个自动迭代的,这与 Gremlin Server 通常的行为一致处理脚本请求。我猜 Neptune 也会以同样的方式工作。