在本节中,我们将讨论发生在数据节点和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
(如果提交失败)。如下图所示:
某些操作执行提交
自动的,所以不是每个事务都需要这样做。
回滚事务也遵循此模式。然而,在这种情况下,API节点发送一个TCROLLBACKTREQ
消息发送到数据节点。一个TCROLLACKCONF
或者一个TCROLLBACKREF
作为响应发送,如下所示:
处理交易记录。获取事务记录是在API节点传输一个TCSEIZEREQ
消息发送到数据节点,并接收TCSEIZECONF
或TCSEIZEREF
作为回报,取决于请求是否成功。这里描述的是:
事务记录的发布也使用请求-响应模式进行处理。在本例中,API节点的请求包含一个TCRELEASEREQ
消息,数据节点的响应使用TCRELEASECONF
(表示该记录已被发布)或TCRELEASEREF
(表明释放企图没有成功)。下面的图表说明了这一系列的事件: