本节提供有关 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。