本节提供有关
NdbDictionary
类的信息,该类存储有关NDB
数据库对象(例如表、列和索引)的元信息。
虽然创建和删除数据库对象的首选方法是通过 MySQL 服务器,但NdbDictionary
也允许开发人员通过 NDB API 执行这些任务。
- 家长班
没有任何
- 儿童班
-
对于
NdbDictionary
子类枚举的数字等价物,请参阅/storage/ndb/include/ndbapi/NdbDictionary.hpp
NDB Cluster 源树中的文件。 - 描述
-
这是一个数据字典类,支持表、列、索引的查询。它还提供了定义这些数据库对象和删除它们的方法。这两种功能都是使用对这些对象建模的内部类来提供的。其中包括以下内部类:
Table
用于处理表格Column
用于创建表列Index
用于处理二级索引Dictionary
用于创建数据库对象和进行模式查询Event
用于处理集群中的事件。
其他
Object
子类对使用 NDB 集群磁盘数据表以及外键约束所需的表空间、日志文件组、数据文件和撤消文件进行建模。NdbDictionary
无法从 MySQL 服务器查看 使用创建的表和索引 。通过最初从 NDB Cluster 创建的 NDB API 删除索引会导致不一致。在这样的操作之后,使用 NDB API 从中删除一个或多个索引的表可能不再被 MySQL 使用。在这种情况下,必须删除该表,然后使用 MySQL 重新创建该表以使其再次可供 MySQL 访问。
- 方法
-
NdbDictionary
本身没有公共实例方法,只有用于处理NdbRecord
对象的静态方法。不使用的操作NdbRecord
是通过NdbDictionary
子类实例方法完成的。下表列出了公共方法NdbDictionary
以及每个方法的用途或用途:表 2.36 NdbDictionary 类方法和说明
姓名 描述 getEmptyBitmask()
返回一个空列存在位掩码,可以与 NdbRecord
getFirstAttrId()
NdbRecord
获取给定对象指定的第一个属性 IDgetRecordIndexName()
获取 NdbRecord 引用的索引对象的名称 getRecordRowLength()
获取使用给定的存储一行数据所需的字节数 NdbRecord
getRecordTableName()
获取 NdbRecord 引用的表对象的名称 getRecordType()
获取 NdbRecord 的 RecordType getValuePtr()
返回指向由属性 ID 指定的存储数据开头的指针,使用 NdbRecord
isNull()
显示列的空位是真还是假 setNull()
设置列的空位
- 类型
-
NdbDictionary 定义了两个数据结构,列在这里:
抽象的
本节提供有关
AutoGrowSpecification
数据结构的信息。
- 家长班
- 描述
The
AutoGrowSpecification
是定义在类中的数据结构,作为 类 和NdbDictionary
类的一些方法的参数或返回值。Tablespace
LogfileGroup
- 成员
-
AutoGrowSpecification
成员如下表所示:表 2.37 NdbDictionary::AutoGrowSpecification 数据结构成员名称和描述
姓名 描述 min_free
??? max_size
??? file_size
??? filename_pattern
???
- 描述
通过查找存储在 NdbRecord 对象中的列的偏移量并返回行位置和偏移量之和,返回指向由属性 ID 指定的存储数据开头的指针。
- 签名
-
此方法提供 row-const 和非 row-const 版本:
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
定义的一部分,则为空。
- 描述
指示给定列的空位是否设置为
true
或false
。NdbRecord
从传递的对象中获取空位相对于行指针的位置 。如果该列不可为空,或者如果该列不是NdbRecord
定义的一部分,则该方法返回false
。- 签名
static bool isNull ( const NdbRecord* record, const char* row, Uint32 attrId )
- 参数
一个指向
NdbRecord
描述行格式的对象的指针,一个指向行数据开始的指针,以及要检查的列的属性 ID。- 返回值
布尔值
true
,如果属性 ID 存在于 this 中NdbRecord
,则可为空,并且此行的空位已设置;否则,布尔值false
。
本节提供有关
RecordSpecification
结构的信息。
- 家长班
- 描述
该结构用于在创建
NdbRecord
对象时指定列和范围偏移量。- 成员
-
构成该结构的元素如下表所示:
表 2.38 NdbDictionary::RecordSpecification 属性,带有类型和描述
姓名 类型 描述 column
Column
此条目描述的列(列的最大大小定义行的字段大小)。即使在 NdbRecord
为索引创建 时,它也必须指向从基础表而不是索引本身获得的列。offset
Uint32
数据距行首的偏移量。对于读取 blob,将 blob 句柄 ( NdbBlob
) 而不是实际的 blob 数据写入行。这意味着该行中至少 必须有sizeof(NdbBlob*)
must be available。nullbit_byte_offset
Uint32
从包含该 NULL
位的字节的行开始的偏移量。nullbit_bit_in_byte
Uint32
NULL
位 (0-7)。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
( object ) 的指针;NdbRecord
指向row
数据开始的指针;列的属性 ID (attrId
); 并将value
空位设置为 (true
或false
)。- 返回值
成功返回0;
attrId
如果不是 的一部分record
或不可为 null, 则返回 -1 。