3.3操作和信号

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

  • 主键查找

  • 唯一键查找

  • 表扫描或索引扫描

  • 事务的显式提交

  • 事务的回滚

  • 交易记录处理(获取和释放)

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

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

内容在周围的文本中有描述。

请注意

而且+在这里和意思一起使用吗零个或多个而且一个或多个,分别。

下面列出了构成这个过程的步骤,并对其进行了更详细的解释:

  1. API节点发送一个TCKEYREQ消息发送到数据节点。如果关于要使用的键的必要信息太大而不能包含在TCKEYREQ,该讯息可随附任何数目的KEYINFO携带剩余关键信息的消息。属性中可用的空间TCKEYREQ,或者如果要将数据作为写操作的一部分发送到数据节点,则这些数据将与TCKEYREQ任何数量的ATTRINFO消息。

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

    • 如果操作成功,数据节点将发送一个TCKEYCONF消息发送给API节点。如果请求是读操作,则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节点使用SCAN_NEXTREQ,它告诉数据节点发送下一组结果(如果有更多的结果)。如下所示:

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

      内容在周围的文本中有描述。

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

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

提交和回滚事务。执行显式提交的过程遵循前面所示的相同的一般模式。API节点发送一个TC_COMMITREQ消息发送给数据节点,该节点用TC_COMMITCONF(成功)或TC_COMMITREF(如果提交失败)。如下图所示:

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

内容在周围的文本中有描述。

请注意

某些操作执行提交自动的,所以不是每个事务都需要这样做。

回滚事务也遵循此模式。然而,在这种情况下,API节点发送一个TCROLLBACKTREQ消息发送到数据节点。一个TCROLLACKCONF或者一个TCROLLBACKREF作为响应发送,如下所示:

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

内容在周围的文本中有描述。

处理交易记录。获取事务记录是在API节点传输一个TCSEIZEREQ消息发送到数据节点,并接收TCSEIZECONFTCSEIZEREF作为回报,取决于请求是否成功。这里描述的是:

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

事务记录的发布也使用请求-响应模式进行处理。在本例中,API节点的请求包含一个TCRELEASEREQ消息,数据节点的响应使用TCRELEASECONF(表示该记录已被发布)或TCRELEASEREF(表明释放企图没有成功)。下面的图表说明了这一系列的事件:

用于释放事务记录的信号