3.3 操作和信号

在本节中,我们将讨论以下每个操作在数据节点和 API 节点之间发生的消息传递顺序:

  • 主键查找

  • 唯一键查找

  • 表扫描或索引扫描

  • 事务的显式提交

  • 事务回滚

  • 交易记录处理(获取和发布)

主键查找。  使用主键查找的操作如下图所示执行:

图 3.1 在主键查找中交换的消息

内容在周围的文字中描述。

笔记

*+在这里分别表示零个或多个一个或多个

此处列出并更详细地解释了构成此过程的步骤:

  1. API 节点向数据节点发送TCKEYREQ消息。如果有关要使用的密钥的必要信息太大而无法包含在 中 TCKEYREQ,则该消息可能会伴随任意数量的KEYINFO消息,其中包含剩余的密钥信息。如果额外的属性被用于操作并且超过了 中的可用空间TCKEYREQ,或者如果数据要作为写操作的一部分发送到数据节点,那么这些将与TCKEYREQ任意数量的ATTRINFO消息一起发送。

  2. 数据节点根据操作成功或失败发送消息响应请求:

    • 如果操作成功,数据节点 会向TCKEYCONFAPI 节点发送一条消息。如果请求是针对读取操作的,则 TCKEYCONF随附一条 TRANSID_AI消息,其中包含实际结果数据。如果数据多于单个TRANSID_AI罐头所能容纳的数据量,则可能会发送多条这些消息。

    • 如果操作失败,则数据节点将 TCKEYREF消息发送回 API 节点,并且在 API 节点发出新请求之前不再发出信号。

唯一键查找。  这是以类似于在主键查找中执行的方式执行的:

  1. API 节点使用 TCINDXREQ可能伴随零个或多个KEYINFO 消息、零个或多个ATTRINFO消息或两者的消息来发出请求。

  2. 数据节点返回响应,具体取决于操作是否成功:

    • 如果操作成功,则消息为 TCINDXCONF。对于成功的读取操作,此消息可能伴随一条或多TRANSID_AI条携带结果数据的消息。

    • 如果操作失败,数据节点返回一条 TCINDXREF消息。

下图说明了唯一键查找中涉及的消息交换:

图 3.2 在唯一键查找中交换的消息

内容在周围的文字中描述。

表扫描和索引扫描。  这些在许多方面类似于主键和唯一键查找,如下所示:

图 3.3 为表扫描或索引扫描操作交换的消息。

内容在周围的文字中描述。

  1. API 节点使用一条 SCAN_TABREQ消息以及零条或多条ATTRINFO消息发出请求。 KEYINFO在使用边界的情况下,消息也与索引扫描一起使用。

  2. 数据节点根据操作是否成功返回响应:

    • 如果操作成功,则消息为 SCAN_TABCONF。对于成功的读取操作,此消息可能伴随一条或多TRANSID_AI条携带结果数据的消息。然而,与基于主键或唯一键的查找情况不同,通常需要从数据节点获取多个结果。第一个之后的请求由 API 节点使用 a 发出信号SCAN_NEXTREQ,它告诉数据节点发送下一组结果(如果有更多结果)。这显示在这里:

      图 3.4 在表或索引扫描读取操作之后获取多个结果数据集

      内容在周围的文字中描述。

    • 如果操作失败,数据节点返回一条 SCAN_TABREF消息。

      SCAN_TABREF也用于向 API 节点发出信号,表明已发送读取产生的所有数据。

提交和回滚事务。  执行显式提交的过程遵循与前面所示相同的一般模式。API 节点向数据节点发送一条 消息,数据节点以 (成功时)或(如果提交失败)TC_COMMITREQ响应。如下图所示: TC_COMMITCONFTC_COMMITREF

图 3.5 在显式提交操作中交换的消息

内容在周围的文字中描述。

笔记

有些操作COMMIT 会自动执行,因此并非每个事务都需要这样做。

回滚事务也遵循这种模式。但是,在这种情况下,API 节点 会向TCROLLBACKTREQ数据节点发送一条消息。发送aTCROLLACKCONF或 a TCROLLBACKREF作为响应,如下所示:

图 3.6 回滚事务时交换的消息

内容在周围的文字中描述。

处理交易记录。  当 API 节点将TCSEIZEREQ消息传输到数据节点并收到TCSEIZECONFor TCSEIZEREF返回时,就完成了获取事务记录,这取决于请求是否成功。这在这里描述:

交易记录获取中使用的信号

事务记录的发布也使用请求-响应模式处理。在这种情况下,API 节点的请求包含一条TCRELEASEREQ消息,数据节点的响应使用 a TCRELEASECONF (表示记录已释放)或 a TCRELEASEREF(表示释放尝试未成功)。这一系列事件如下图所示:

用于发布交易记录的信号