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

事务记录的释放也使用请求-响应模式进行处理。在这种情况下,API 节点的请求包含 TCRELEASEREQ 消息,而数据节点的响应使用 TCRELEASECONF(指示记录已释放)或 TCRELEASEREF(指示释放尝试未成功)。这一系列事件在下图中进行了说明:






