本节提供有关 NdbDictionary 类的信息,该类存储有关 NDB 数据库对象的元信息,例如表、列和索引。
虽然数据库对象创建和删除的首选方法是通过 MySQL 服务器,但 NdbDictionary 也允许开发人员通过 NDB API 执行这些任务。
- 父类
无
- 子类
-
有关
NdbDictionary子类的枚举的数字等效项,请参阅 NDB Cluster 源代码树中的文件/storage/ndb/include/ndbapi/NdbDictionary.hpp。 - 说明
-
这是一个数据字典类,支持查询有关表、列和索引的信息。它还提供了定义这些数据库对象和删除它们的方法。这两种功能都使用对这些对象建模的内部类来提供。这些类包括以下内部类:
Table用于处理表Column用于创建表列Index用于处理二级索引Dictionary用于创建数据库对象和进行架构查询Event用于处理集群中的事件。
其他
Object子类对处理 NDB Cluster 磁盘数据表以及外键约束所需的空间、日志文件组、数据文件和撤消文件进行建模。使用
NdbDictionary创建的表和索引无法从 MySQL 服务器查看。通过 NDB API 删除最初从 NDB Cluster 创建的索引会导致不一致。在执行此类操作后,通过 NDB API 删除了一个或多个索引的表可能不再可供 MySQL 使用。在这种情况下,必须删除该表,然后使用 MySQL 重新创建该表,以使其再次可供 MySQL 访问。
- 方法
-
NdbDictionary本身没有公共实例方法,只有用于处理NdbRecord对象的静态方法。不使用NdbRecord的操作是通过NdbDictionary子类实例方法完成的。下表列出了NdbDictionary的公共方法以及每个方法的目的或用途:表 2.37 NdbDictionary 类方法和说明
名称 说明 getEmptyBitmask()返回一个空的列存在位掩码,该掩码可与 NdbRecord一起使用,以指定操作中不包括任何NdbRecord列。getFirstAttrId()获取由给定 NdbRecord对象指定的第一個属性 ID。getRecordIndexName()获取 NdbRecord 引用的索引对象的名称。 getRecordRowLength()获取使用给定 NdbRecord存储一行数据所需的字节数。getRecordTableName()获取 NdbRecord 引用的表对象的名称。 getRecordType()获取 NdbRecord 的 RecordType。 getValuePtr()使用 NdbRecord返回指向由属性 ID 指定的存储数据的开头的指针。isNull()显示列的空位是 true 还是 false。 setNull()设置列的空位。
- 类型
-
NdbDictionary 定义了两个数据结构,如下所示:
摘要
本节提供有关 AutoGrowSpecification 数据结构的信息。
- 父类
- 说明
AutoGrowSpecification是NdbDictionary类中定义的数据结构,用作Tablespace和LogfileGroup类的一些方法的参数或返回值。- 成员
-
AutoGrowSpecification具有下表所示的成员:表 2.38 NdbDictionary::AutoGrowSpecification 数据结构成员名称和说明
名称 说明 min_free??? max_size??? file_size??? filename_pattern???
- 说明
通过查找存储在 NdbRecord 对象中的列的偏移量并返回行位置和偏移量的总和,返回一个指向属性 ID 指定的存储数据开头的指针。
- 签名
-
此方法提供行常量和非行常量版本
static const char* getValuePtr ( const NdbRecord* record, const char* row, Uint32 attrId ) static char* getValuePtr ( const NdbRecord* record, char* row, Uint32 attrId ) - 参数
指向描述行格式的
NdbRecord对象的指针、指向行数据开头的指针(在此方法的 const 版本中为const)以及列的属性 ID。- 返回值
指向行中属性开头的指针。如果属性不是
NdbRecord定义的一部分,则此值为 null。
- 说明
指示给定列的空位是设置为
true还是false。空位相对于行指针的位置是从传递的NdbRecord对象获取的。如果该列不可为空,或者如果该列不是NdbRecord定义的一部分,则该方法返回false。- 签名
static bool isNull ( const NdbRecord* record, const char* row, Uint32 attrId )- 参数
指向描述行格式的
NdbRecord对象的指针、指向行数据开头的指针以及要检查的列的属性 ID。- 返回值
如果属性 ID 存在于此
NdbRecord中,则为布尔值true,可为空,并且此行的空位已设置;否则,为布尔值false。
本节提供有关 RecordSpecification 结构的信息。
- 父类
- 说明
此结构用于在创建
NdbRecord对象时指定列和范围偏移量。- 成员
-
组成此结构的元素如下表所示
nullbit_byte_offset和nullbit_bit_in_byte不适用于不可为空的列。有关更多信息,请参阅 第 2.3.22 节 “NdbRecord 接口”。
- 说明
将给定列的空位设置为提供的值。空位的偏移量是从传递的
NdbRecord对象获取的。如果属性 ID 不是NdbRecord的一部分,或者它不可为空,则此方法返回错误 (-1)。- 签名
static int setNull ( const NdbRecord* record, char* row, Uint32 attrId, bool value )- 参数
指向描述行格式的
record(NdbRecord对象)的指针;指向row数据开头的指针;列的属性 ID (attrId);以及要将空位设置成的value(true或false)。- 返回值
成功返回 0;如果
attrId不是record的一部分或不可为空,则返回 -1。