协调事务并强制因果一致性
在使用集群时,书签允许您链接事务并强制实现因果一致性。书签是一种表示数据库某种状态的令牌。通过随查询传递一个或多个书签,服务器将确保查询在所表示的状态建立之前不会执行。
所有响应都包含一个 bookmarks
字段,其中包含一个编码书签列表,这些书签表示事务已提交更改的状态。
响应示例
{
"data": {
"fields": [
"n"
],
"values": [
[
{
"elementId": "4:ff04df25-ff2b-4b55-98f8-6888297b025e:0",
"labels": [
"Person"
],
"properties": {
"name": "Alice",
"age": 42
}
}
]
]
},
"bookmarks": [
"FB:kcwQ/wTfJf8rS1WY+GiIKXsCXgmQ"
]
}
您可以通过请求体中的 bookmarks
键向后续事务提供一个书签列表。服务器会等待,直到它追上书签中封装的更改后,才会执行提交的事务。
在下面的示例中,服务器会等到它已注册与书签 FB:kcwQt8DpQx5zR0uN3Oj/OudM3QaQ
和 FB:kcwQy9mp3ioyRom386bZDRRcuCiQ
关联的更改后,才会执行事务。
请求示例
POST http://localhost:7474/db/neo4j/query/v2
Authorization: Basic bmVvNGo6dmVyeXNlY3JldA==
Content-Type: application/json
{
"statement": "MATCH (p1:Person {name: $source}) MATCH (p2:Person {name: $end}) MERGE p=(p1)-[:LIKES]->(p2) RETURN p",
"parameters": {
"source": "Alice",
"end": "Lucy"
},
"bookmarks": ["FB:kcwQt8DpQx5zR0uN3Oj/OudM3QaQ", "FB:kcwQy9mp3ioyRom386bZDRRcuCiQ"]
}
服务器返回的书签不应由客户端解析或修改,应按原样插入到 |
术语表
- Aura
-
Aura 是 Neo4j 的全托管云服务。它提供免费和付费套餐。
- Cypher
-
Cypher 是 Neo4j 的图查询语言,可让您从数据库中检索数据。它类似于 SQL,但专用于图。
- ACID
-
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)(ACID)是保证数据库事务可靠处理的属性。符合 ACID 标准的数据库管理系统(DBMS)可确保数据库中的数据在发生故障时仍保持准确和一致。
- 因果一致性
-
如果读写查询在集群的每个成员中以相同的顺序可见,则数据库是因果一致的。这比最终一致性更强。
- 事务
-
事务是一个工作单元,它要么整体*提交*,要么在失败时*回滚*。一个例子是银行转账:它涉及多个步骤,但所有步骤都必须成功或被撤销,以避免资金从一个账户中扣除但未添加到另一个账户的情况。