在本节中,我们将讨论以下每个操作在数据节点和 API 节点之间发生的消息传递顺序:
主键查找
唯一键查找
表扫描或索引扫描
事务的显式提交
事务回滚
交易记录处理(获取和发布)
主键查找。 使用主键查找的操作如下图所示执行:
*和 +在这里分别表示“零个或多个”和“一个或多个”。
此处列出并更详细地解释了构成此过程的步骤:
API 节点向数据节点发送
TCKEYREQ
消息。如果有关要使用的密钥的必要信息太大而无法包含在 中TCKEYREQ
,则该消息可能会伴随任意数量的KEYINFO
消息,其中包含剩余的密钥信息。如果额外的属性被用于操作并且超过了 中的可用空间TCKEYREQ
,或者如果数据要作为写操作的一部分发送到数据节点,那么这些将与TCKEYREQ
任意数量的ATTRINFO
消息一起发送。-
数据节点根据操作成功或失败发送消息响应请求:
如果操作成功,数据节点 会向
TCKEYCONF
API 节点发送一条消息。如果请求是针对读取操作的,则TCKEYCONF
随附一条TRANSID_AI
消息,其中包含实际结果数据。如果数据多于单个TRANSID_AI
罐头所能容纳的数据量,则可能会发送多条这些消息。如果操作失败,则数据节点将
TCKEYREF
消息发送回 API 节点,并且在 API 节点发出新请求之前不再发出信号。
唯一键查找。 这是以类似于在主键查找中执行的方式执行的:
API 节点使用
TCINDXREQ
可能伴随零个或多个KEYINFO
消息、零个或多个ATTRINFO
消息或两者的消息来发出请求。-
数据节点返回响应,具体取决于操作是否成功:
如果操作成功,则消息为
TCINDXCONF
。对于成功的读取操作,此消息可能伴随一条或多TRANSID_AI
条携带结果数据的消息。如果操作失败,数据节点返回一条
TCINDXREF
消息。
下图说明了唯一键查找中涉及的消息交换:
表扫描和索引扫描。 这些在许多方面类似于主键和唯一键查找,如下所示:
API 节点使用一条
SCAN_TABREQ
消息以及零条或多条ATTRINFO
消息发出请求。KEYINFO
在使用边界的情况下,消息也与索引扫描一起使用。-
数据节点根据操作是否成功返回响应:
提交和回滚事务。
执行显式提交的过程遵循与前面所示相同的一般模式。API 节点向数据节点发送一条
消息,数据节点以
(成功时)或(如果提交失败)TC_COMMITREQ
响应。如下图所示:
TC_COMMITCONF
TC_COMMITREF
有些操作COMMIT
会自动执行,因此并非每个事务都需要这样做。
回滚事务也遵循这种模式。但是,在这种情况下,API 节点
会向TCROLLBACKTREQ
数据节点发送一条消息。发送aTCROLLACKCONF
或 a
TCROLLBACKREF
作为响应,如下所示:
处理交易记录。
当 API 节点将TCSEIZEREQ
消息传输到数据节点并收到TCSEIZECONF
or
TCSEIZEREF
返回时,就完成了获取事务记录,这取决于请求是否成功。这在这里描述:
事务记录的发布也使用请求-响应模式处理。在这种情况下,API 节点的请求包含一条TCRELEASEREQ
消息,数据节点的响应使用 a TCRELEASECONF
(表示记录已释放)或 a
TCRELEASEREF
(表示释放尝试未成功)。这一系列事件如下图所示: