协调事务并强制因果一致性

在使用集群时,书签允许您链接事务并强制实现因果一致性。书签是一种表示数据库某种状态的令牌。通过随查询传递一个或多个书签,服务器将确保查询在所表示的状态建立之前不会执行。

所有响应都包含一个 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/OudM3QaQFB: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"]
}

服务器返回的书签不应由客户端解析或修改,应按原样插入到 bookmarks 字段中。

术语表

Aura

Aura 是 Neo4j 的全托管云服务。它提供免费和付费套餐。

Cypher

Cypher 是 Neo4j 的图查询语言,可让您从数据库中检索数据。它类似于 SQL,但专用于图。

ACID

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)(ACID)是保证数据库事务可靠处理的属性。符合 ACID 标准的数据库管理系统(DBMS)可确保数据库中的数据在发生故障时仍保持准确和一致。

因果一致性

如果读写查询在集群的每个成员中以相同的顺序可见,则数据库是因果一致的。这比最终一致性更强。

事务

事务是一个工作单元,它要么整体*提交*,要么在失败时*回滚*。一个例子是银行转账:它涉及多个步骤,但所有步骤都必须成功或被撤销,以避免资金从一个账户中扣除但未添加到另一个账户的情况。

© . All rights reserved.