本节提供有关的信息事件
班级。
- 父类
- 儿童课程
-
没有任何
- 描述
-
此类表示NDB集群中的数据库事件。
- 方法
-
下表列出了公共方法
事件
每种方法的类和目的或使用:表2.13事件类方法和描述
名称 描述 事件()
类建设者 〜赛事()
析构函数 addeventcolumn()
添加应检测到哪些事件的列 addeventcolumns()
在应检测到哪些事件上添加多列 addtablevent()
添加应检测的事件类型 GetDureability()
获取事件的持久性 geteventcolumn()
获取定义事件的列 getname()
获取事件的名称 getnoofeventcolumns()
获取定义事件的列数 getObjectId()
获取事件的对象ID getObjectStatus()
获取事件的对象状态 getObjectVersion()
获取活动的对象版本 getReport()
获取活动的报告选项 gettable()
得到了 桌子
定义事件的对象gettablevent()
检查是否要检测到事件 gettablename()
获取定义事件的表的名称 mergeevents()
设置事件的合并标志 setdurity()
设置事件的耐用性 setname()
设置事件的名称 setReport()
该活动的报告选项 保留()
设置 桌子
定义事件的对象
改进的事件API(NDB 7.4.3及更高版本)。NDB 7.4.3引入了一个划时代驱动的事件API,它取代了早期基于gci的模型。新版本的API还简化了错误检测和处理。这些变化是通过在NDB API中实现一些新的方法来实现的
NDB.
和ndbeptoperation.
,弃用这两个类的其他几个方法,并向其中添加新的类型值表格
。一些新方法直接替换或代替弃用方法,但并非所有已弃用的方法映射到新的方法,其中一些是完全新的。旧(已弃用)方法显示在下表的第一列中,以及第二列中的新方法;对应于新方法的旧方法显示在同一行中。
表2.14 NDB API中的弃用和新的事件API方法,NDB 7.4.3
使用新API进行错误处理是通过检查返回的值来完成的
geteventtype2()
,并不再使用这些方法处理haserror()
和clearError ()
,现在已弃用并在未来的NDB集群释放中删除。为了支持这种变化,可能的范围表格
在此列出的那些已经扩展了类型的类型:te_empty.
:空的时纪te_inconsistent.
:不一致的时代;数据丢失或溢出te_out_of_memory.
:数据不一致;事件缓冲区内存或溢出
这些变化的结果是,在NDB 7.4.3及更高版本中,您可以在检查表事件的类型时检查错误,如此所示:
NDBDictionary :: Event :: StableEvent * Error_type = 0;ndbeventeroperation * pop = nextevent2();if(pop-> iSerrorepoch(errer_type){switch(error_type){case te_inconsistent://处理错误/不一致的epoch ...中断;案例te_out_of_memory://处理错误/不一致的数据...中断; // ......}}
有关更多信息,请参阅详细说明
NDB.
和ndbeptoperation.
前面显示的方法,以及事件::表格。 - 类型
-
这些是公共类型的
事件
班级:表2.15事件类类型和描述
名称 描述 表雷德()
表示表事件的类型 EventDureability()
指定事件的范围,可访问性和生命周期 EventReport()
指定表事件的Reporting选项
- 描述
-
此方法用于添加应检测到哪个事件的列。列可以通过其ID或其名称来表示。
你必须邀请
字典:: CreateEvent()
在检测到任何错误之前。看字典:: CreateEvent()。如果您通过名称知道多个列,则可以使用一次性在所有列中启用事件检测
addeventcolumns()
。看event :: AddeventColumns()。 - 签收
-
此方法可以以以下任一方式调用:
使用其列ID识别事件:
void addEventColumn(无符号艾特里)
通过名称标识列:
void addeventcolumn(const char *columnname.)
- 参数
-
此方法采用单个参数,这可能是以下之一:
列ID(
艾特里
),这应该是大于或等于的整数0.
,少于返回的值getnoofeventcolumns()
。专栏
名称
(作为常量字符指针)。
- 返回值
-
没有任何。
- 描述
-
此方法用于同时在多列上启用事件检测。您必须使用列的名称。
和人一样
addeventcolumn()
,你必须调用字典:: CreateEvent()
在检测到任何错误之前。看字典:: CreateEvent()。 - 签名
-
void addeventcolumns(intN,const char **列名称)
- 参数
-
此方法需要此处列出的两个参数:
列数
N
(整数)。列的名称
列名称
- 这必须作为指向字符指针的指针传递。
- 返回值
-
没有任何。
- 描述
-
这
事件
构造函数创建具有给定名称的新实例,并可选地与表关联。您应该记住,NDB API不跟踪分配的事件对象,这意味着用户必须明确删除
事件
因此在不再使用后创建。 - 签收
-
可以以两种方式中的任一种调用此方法,其中首先是名称,如下所示:
活动(Const Char *名称)
或者,你也可以使用事件名和一个关联表,如下所示:
活动(Const Char *名称,const ndbdictionary ::表&桌子)
- 参数
-
在最小值a
名称
(作为事件的常量字符指针)是必需的。可选地,事件也可以与表相关联;当存在时,这个论点是对a的引用桌子
对象(参见第2.3.27节“桌面”)。 - 返回值
-
一个新的实例
事件
。
析构函数。该类的析构函数作为虚方法提供,该方法不接受参数,其返回类型为空白
。
介绍信息EventDurability
类定义的类型事件
班级。
- 描述
-
此类型的值用于描述事件的寿命或持久性以及其范围。
- 枚举值
-
在下表中显示可能的值以及描述:
表2.16事件:: EventDurability数据类型值和描述
名称 描述 ed_undefined.
该事件未定义或不受支持的类型。 ed_session.
此事件仅在当前会话的持续时间内持续存在,并且仅适用于当前应用程序。在应用程序断开连接或遵循群集重新启动后删除它。 重要的价值
ed_session.
保留用于将来使用,任何NDB群集发布尚未支持。ed_temporary
任何应用程序都可以使用该事件,但在群集重新启动后删除它。 重要的价值
ed_temporary
保留用于将来使用,任何NDB群集发布尚未支持。ed_permanent.
任何应用程序都可以使用该事件,并且它仍然存在,直到应用程序删除 - 即使在群集之后。重新开始 重要的价值
ed_permanent.
保留用于将来使用,任何NDB群集发布尚未支持。
介绍信息EventReport.
类定义的类型事件
班级。
- 描述
-
此类型的值用于为表事件指定报告选项。
- 枚举值
-
在下表中显示可能的值以及描述:
表2.17事件:: EventReport类型值和描述
名称 描述 er_updated.
报告更新事件 er_all.
报告所有事件,除了未导致内联部分的任何更新 斑点
列er_subscribe.
报告订阅活动 er_ddl.
报告DDL事件(见event :: setReport(), 想要查询更多的信息)
- 描述
-
该方法用于从定义事件的那些中获取特定列。
- 签名
-
const列* geteventcolumn(无符号不)Const.
- 参数
-
数字 (
不
)柱子,如使用getnoodcolumns()
(看event :: getnoodeventcolumns())。 - 返回值
-
指向的指针
列
对应不
。
- 描述
-
此方法用于获取此事件的重新开始的报告选项。
- 签名
-
EventReport getReport(void)const
- 参数
-
没有任何。
- 返回值
-
其中一个报告选项之一事件:: EventReport.。
- 描述
-
此方法用于找到事件关联的表。它返回对应的引用
桌子
对象。您还可以直接使用gettablename()
。 - 签名
-
const ndbdictionary ::表* gettable(void)const
- 参数
-
没有任何。
- 返回值
-
事件关联的表 - 如果有一个作为指向a的指针
桌子
目的;否则,此方法返回空值
。(见第2.3.27节“桌面”。)
- 描述
-
此方法获取具有事件关联的表的名称,并且可以作为方便的替代品
gettable()
。(见事件:: gettable()。) - 签名
-
const char * gettablename(void)const
- 参数
-
没有任何。
- 返回值
-
与此事件关联的表的名称,作为字符指针。
- 描述
-
此方法用于设置合并活动标志,这是
错误的
默认。将它设置为真的
意味着事件被合并如下:对于给定的
ndbeptoperation.
与此事件相关联时,同一个全局检查点索引(GCI)中相同主键上的事件被合并为单个事件。为每个Blob属性创建Blob表事件,并且将Blob事件作为主表事件的一部分进行处理。
Blob Post / Pre数据来自Blob零件事件可以通过
ndbblob.
方法作为单个值。此标志不是继承的
ndbeptoperation.
,并且必须设置ndbeptoperation.
明确。
- 签名
-
空白弹词(BOOL旗帜)
- 参数
-
一个布尔值
旗帜
价值。 - 返回值
-
没有任何。
- 描述
-
该方法设置了事件的耐用性 - 即其寿命和范围。
- 签名
-
空白setDurability (EventDurability埃德)
- 参数
-
这种方法需要一个单一的方法
EventDurability
值作为参数。 - 返回值
-
没有任何。
- 描述
-
此方法用于设置事件的报告选项。可以在中找到可能的选项值事件:: EventReport.。
- 报告DDL事件
-
你必须打电话
setReport()
使用EventReport.
价值er_ddl.
(在相同的NDB群集版本中添加)。例如,要启用DDL事件报告
事件
对象命名神秘
,你必须调用这个方法如下所示:myevent.setReport(ndbdictionary :: event :: er_ddl);
- 签名
-
void setReport(EventReport呃)
- 参数
-
一个
EventReport.
选项值。 - 返回值
-
没有任何。
- 描述
-
此方法用于设置事件的名称。在当前应用程序可见的所有事件中,该名称必须是唯一的(参见赛事:: getdurability())。
首次创建时,您还可以设置活动的名称。看事件构造函数。
- 签名
-
void setname(const char *名称)
- 参数
-
这
名称
将事件(作为常量字符指针)给出。 - 返回值
-
没有任何。
- 描述
-
此方法定义要检测到事件的表。
默认情况下,事件检测在表中的所有列上进行。用
addeventcolumn()
覆盖这种行为。有关详细信息,请参阅事件:: AddeventColumn()。 - 签名
-
空白可持续(Const Ndbdictionary ::表&桌子)
NDB 7.3.3及更高版本的NDB群集释放支持使用此方法使用指针,如下所示:
空白可持续(Const Ndbdictionary ::表*;桌子)
如此使用,此版本
保留()
如果表指针是返回-1空值
。(错误# 16329082) - 参数
-
此方法需要单个参数,参考表(参见第2.3.27节“桌面”)要在哪些事件上检测到。NDB 7.3.3及更高版本:可以使用表的引用或指针。
- 返回值
-
没有任何。NDB 7.3.3及更高版本:-1,如果使用空表指针。
本节介绍表格
类定义的类型事件
班级。
- 描述
-
表格
用于对可以与NDB API中的表相关联的事件类型进行分类。 - 枚举值
-
在下表中显示可能的值以及描述:
表2.18事件:: StableAvent类型值和描述
名称 描述 Te_insert.
在表上插入事件 te_delete.
在表上删除事件 te_update.
更新表上的事件 te_drop.
删除桌子时发生 Te_alter.
更改表定义时发生 te_create.
创建表时发生 te_gcp_complete.
发生在全球检查站完成 te_cluster_failure.
发生在集群故障上 TE_STOP
发生事件操作停止时发生 te_node_failure.
群集节点发生故障时发生 te_subscribe.
群集节点订阅事件时发生 te_unsubscribe.
群集节点从事件中取消订阅时发生 te_empty.
从数据节点接收的空的epoch te_inconsistent.
数据节点缺少数据或缓冲区溢出 te_out_of_memory.
在事件缓冲区中溢出 te_all.
在表上发生任何事件时发生(在收到特定事件时无关)
te_empty.
那te_inconsistent.
, 和te_out_of_memory.
在NDB 7.4.3中加入。