本节提供有关
Dictionary
该类的信息。
- 家长班
- 儿童班
- 描述
这用于定义和检索数据对象元数据。它还包括用于创建和删除数据库对象的方法。
- 方法
-
下表列出了该类的公共方法以及每个方法的用途或用途:
表 2.11 Dictionary 类方法及说明
MySQL 服务器看不到 使用这些方法创建的表和索引等数据库对象 。这意味着它们不能被 MySQL 客户端访问,也不能被复制。由于这些原因,通常最好避免与他们合作。
Dictionary::create
*
()该类
Dictionary
没有任何直接处理列的方法。您必须Column
为此目的使用类方法——有关详细信息,请参阅第 2.3.1 节“列类”。 - 类型
- 描述
-
此方法创建
Dictionary
该类的一个新实例。此类的构造函数和析构函数都是受保护的方法,而不是公共方法。
- 签名
protected Dictionary ( Ndb& ndb )
- 参数
一个
Ndb
对象。- 返回值
一个
Dictionary
对象。- 析构函数
-
析构函数不接受任何参数并且不返回任何内容:
protected ~Dictionary ( void )
- 描述
-
启动模式事务。如果事务已经处于活动状态,或者内核元数据被锁定,则会发生错误。
hasSchemaTrans()
您可以使用该方法 确定模式事务是否已存在 。每当创建、更改或删除数据对象时,都会发生 元数据操作;这样的操作可以在 NDB 内核中创建额外的子操作。
该
Ndb
对象及其关联的对象Dictionary
一次支持一个模式事务。默认情况下,每个元数据操作都是单独执行的;也就是说,对于每个操作,都会隐式启动模式事务,执行操作(包括任何子操作),然后关闭事务。也可以显式地开始和结束模式事务,并在其边界内原子地执行一组用户定义的操作。在这种情况下,模式事务中的所有操作作为一个单元要么成功,要么中止并回滚。这是按照此处列出的步骤完成的:
要开始架构事务,请调用
beginSchemaTrans()
。执行所需的操作(例如
createTable()
)。通过调用结束模式事务
endSchemaTrans
。
每个操作都被发送到 NDB 内核,内核对其进行解析和保存。解析失败会导致在返回之前回滚到先前的用户操作,此时用户可以继续或中止整个事务。
提交所有操作后,
endSchemaTrans()
处理并提交它们。如果出现错误,事务将立即中止。如果用户在调用之前退出
endSchemaTrans()
,NDB 内核将中止事务。如果用户在调用endSchemaTrans()
返回之前退出,内核将继续请求,并在集群日志中报告其完成状态。 - 签名
int beginSchemaTrans ( void )
- 参数
没有。
- 返回值
成功返回 0,错误返回 -1。
- 描述
创建一个
ForeignKey
对象,给定对此对象的引用和Object
ID。- 签名
int createForeignKey ( const ForeignKey&, ObjectId* = 0, int flags = 0 )
- 参数
对象的引用
ForeignKey
和Object
ID。如果使用可选值flags
,则允许在不执行任何外键检查的情况下创建外键。如果设置,其值必须为CreateFK_NoVerify
(1)。- 返回值
0
在成功。
- 描述
创建一个
HashMap
.- 签名
int createHashMap ( const HashMap& hashmap, ObjectId* id = 0 )
- 参数
对哈希映射的引用,以及可选的要分配给它的 ID。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法创建一个新的日志文件组,给定一个实例
LogfileGroup
。- 签名
int createLogfileGroup ( const LogfileGroup& lGroup )
- 参数
需要一个参数,即对
LogfileGroup
对象的引用。- 返回值
0
关于成功,-1
关于失败。
- 描述
此方法用于创建
NdbRecord
用于表或索引扫描操作的对象。- 签名
-
此方法的签名取决于生成的 NdbRecord 是用于表操作还是索引操作:
要创建
NdbRecord
用于表操作的,请使用以下命令:NdbRecord* createRecord ( const Table* table, const RecordSpecification* recSpec, Uint32 length, Uint32 elSize )
要创建
NdbRecord
用于索引操作的对象,您可以使用以下任一方法:NdbRecord* createRecord ( const Index* index, const Table* table, const RecordSpecification* recSpec, Uint32 length, Uint32 elSize )
或者
NdbRecord* createRecord ( const Index* index, const RecordSpecification* recSpec, Uint32 length, Uint32 elSize )
- 参数
-
Dictionary::createRecord()
采用以下参数:如果
NdbRecord
要与索引一起使用,则指向相应Index
对象的指针。如果NdbRecord
要与表一起使用,则省略此参数。(参见 第 2.3.8 节,“索引类”。)指向
Table
表示要扫描的表的对象的指针。如果Ndbrecord
生成的要与索引一起使用,则可以选择指定包含该索引的表。(参见 第 2.3.27 节,“表类”。)A
RecordSpecification
用于描述列。的
length
记录。构成此记录的元素的大小。
- 返回值
NdbRecord
用于涉及给定表或索引的操作 。- 例子
- 描述
-
在给定 的实例的情况下创建一个表
Table
。使用这种方法创建的表不能被 MySQL 服务器看到,不能被 MySQL 客户端更新,也不能被复制。
- 签名
int createTable ( const Table& table )
- 参数
的实例
Table
。有关更多信息,请参阅 第 2.3.27 节,“表类”。- 返回值
0
关于成功,-1
关于失败。
- 描述
Tablespace
给定一个对象 ,此方法创建一个新的表空间 。- 签名
int createTablespace ( const Tablespace& tSpace )
- 参数
此方法需要一个参数——对 的实例的引用
Tablespace
。- 返回值
0
关于成功,-1
关于失败。
- 描述
给定对
Event
对象的引用,此方法会删除一个事件。- 签名
int dropEvent ( const char* name, int force = 0 )
- 参数
-
这个方法有两个参数:
name
要删除的事件的 字符串形式 。默认情况下,
dropEvent()
如果指定的事件不存在则失败。force
您可以通过为(可选)参数传递任何非零值来覆盖此行为 ;在这种情况下,不会检查是否确实存在这样的事件,并且仅当事件存在但由于某种原因无法删除它时才返回错误。
- 返回值
0
关于成功,-1
关于失败。
- 描述
此方法删除外键,给出
ForeignKey
对要删除的对象的引用。- 签名
int dropForeignKey ( const ForeignKey& )
- 参数
ForeignKey
对要删除 的 的引用。- 返回值
0
在成功。
- 描述
给定一个实例
LogfileGroup
,此方法会删除相应的日志文件组。- 签名
int dropLogfileGroup ( const LogfileGroup& lGroup )
- 参数
需要一个参数,即对
LogfileGroup
对象的引用。- 返回值
0
关于成功,-1
关于失败。
- 描述
-
删除给定实例的表
Table
。在 NDB 7.3.5 及更高版本中,此方法删除
table
正在删除的表的所有外键约束,无论删除的表充当父表、子表还是两者。(漏洞 #18069680)在 NDB 8.0 之前,
NDB
使用此方法删除的表会保留在 MySQL 数据字典中,但无法DROP TABLE
在mysql客户端中使用删除。在 NDB 8.0中,可以使用.DROP TABLE
(缺陷 #29125206,缺陷 #93672) - 签名
int dropTable ( const Table& table )
- 参数
的实例
Table
。有关更多信息,请参阅 第 2.3.27 节,“表类”。- 返回值
0
关于成功,-1
关于失败。
- 描述
Tablespace
给定一个对象 ,此方法删除一个表空间 。- 签名
int dropTablespace ( const Tablespace& tSpace )
- 参数
此方法需要一个参数——对 的实例的引用
Tablespace
。- 返回值
0
关于成功,-1
关于失败。
- 描述
-
结束以
beginSchemaTrans()
;开头的模式事务 导致操作被处理并提交,或中止并回滚。该方法结合了事务执行和关闭;不需要(或实现)这些任务的单独方法。即使当前没有模式事务处于活动状态,也可以成功调用此方法。与许多其他 NDB API 方法一样,完全有可能
endSchemaTrans()
覆盖任何当前错误代码。出于这个原因,您应该首先检查并保存可能由先前失败的操作导致的任何错误代码。 - 签名
int endSchemaTrans ( Uint32 flags = 0 )
- 参数
-
这些标志决定了如何处理已完成的事务。默认值为 0,这会导致提交事务。
字典::SchemaTransFlag。 您还可以使用此处显示
endSchemaTrans()
的任一SchemaTransFlag
值:SchemaTransAbort
(= 1):导致事务中止SchemaTransBackground
(= 2): 使事务在后台执行;结果被写入集群日志,而应用程序继续运行而不等待响应。
- 返回值
成功返回0;如果发生错误,返回 -1 并设置
NdbError
错误代码。
- 描述
Datafile
给定数据文件所在数据节点的节点 ID 以及该节点文件系统上数据文件的路径, 此方法用于检索 对象。- 签名
Datafile getDatafile ( Uint32 nodeId, const char* path )
- 参数
-
必须使用两个参数调用此方法,如下所示:
nodeId
数据文件所在数据节点 的32位无符号整数path
到节点文件系统上的数据文件(字符串作为字符指针 )
- 返回值
一个
Datafile
对象——有关详细信息,请参阅 第 2.3.2 节“数据文件类”。
- 描述
获取表的默认哈希映射。
- 签名
-
int getDefaultHashMap ( HashMap& dst, Uint32 fragments )
或者
int getDefaultHashMap ( HashMap& dst, Uint32 buckets, Uint32 fragments )
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
-
此方法用于在
Event
给定事件名称的情况下获取表示事件的新对象。getEvent()
每次成功调用时分配内存。您应该记住,使用相同的事件名称连续调用此方法会返回多个不同的对象。NDB API 不跟踪分配的事件对象,这意味着用户必须在不再需要对象后 清理每个
Event
使用getEvent()
with 创建的对象。delete
从 NDB 8.0.30 开始,您可以releaseEvent()
改为执行此操作。 - 签名
const Event* getEvent ( const char* eventName )
- 参数
,
eventName
一个字符串(字符指针)。- 返回值
指向
Event
对象的指针。有关更多信息,请参见第 2.3.5 节“事件类”。
- 描述
ForeignKey
给定外键及其名称的引用, 此方法用于获取表示事件的新 对象。- 签名
int getForeignKey ( ForeignKey& dst, const char* name )
- 参数
对外键及其 的引用
name
,一个字符串(字符指针)。- 返回值
指向
ForeignKey
对象的指针。
- 描述
按名称或按表获取哈希映射。
- 签名
-
int getHashMap ( HashMap& dst, const char* name )
或者
int getHashMap ( HashMap& dst, const Table* table )
- 参数
对哈希映射的引用以及名称或
Table
.- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
给定索引的名称和该表所属的表的名称,此方法检索指向索引的指针。
- 签名
const Index* getIndex ( const char* iName, const char* tName ) const
- 参数
-
需要两个参数:
指数名称 (
iName
)索引所属表的名称 (
tName
)
这两个都是字符串值,由字符指针表示。
- 返回值
指向
Index
. 有关此对象的信息 ,请参阅 第 2.3.8 节,“索引类” 。
- 描述
此方法获取一个
LogfileGroup
对象,给定日志文件组的名称。- 签名
LogfileGroup getLogfileGroup ( const char* name )
- 参数
name
日志文件组的 。- 返回值
的实例
LogfileGroup
;有关详细信息,请参阅 第 2.3.9 节“LogfileGroup 类”。
- 描述
此方法可用于访问
Table
名称已知的对象。- 签名
const Table* getTable ( const char* name ) const
- 参数
表
name
的。- 返回值
指向表的指针,或者
NULL
如果没有name
提供的表。
- 描述
给定表空间的名称或 ID,此方法返回相应的
Tablespace
对象。- 签名
-
可以通过以下两种方式之一调用此方法:
-
使用表空间名称:
Tablespace getTablespace ( const char* name )
-
使用表空间 ID:
Tablespace getTablespace ( Uint32 id )
-
- 参数
-
以下任一项:
表
name
空间的,字符串(作为字符指针)id
表空间 的无符号 32 位整数
- 返回值
一个
Tablespace
对象,如第 2.3.28 节“表空间类”中所述。
- 描述
此方法获取一个
Undofile
对象,给定撤消文件所在节点的 ID 和文件的文件系统路径。- 签名
Undofile getUndofile ( Uint32 nodeId, const char* path )
- 参数
-
此方法需要以下两个参数:
nodeId
undo文件所在数据节点的 ;该值作为 32 位无符号整数传递path
到节点文件系统上的撤消文件(字符串作为字符指针 )
- 返回值
的实例
Undofile
。有关详细信息,请参阅第 2.3.29 节,“Undofile 类”。
- 描述
告知 NDB API 模式事务是否正在进行。
- 签名
bool hasSchemaTrans ( void ) const
- 参数
没有。
- 返回值
TRUE
如果模式事务正在进行中,则 返回布尔值,否则返回FALSE
。
- 描述
为表初始化默认哈希映射。
- 签名
-
int initDefaultHashMap ( HashMap& dst, Uint32 fragments )
或者
int initDefaultHashMap ( HashMap& dst, Uint32 buckets, Uint32 fragments )
- 参数
对哈希映射和片段数的引用。可选的桶数。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法用于获取字典中的对象列表。可以获取字典中的所有对象,或将列表限制为单一类型的对象。
- 签名
-
此方法有两个签名:
int listObjects ( List& list, Object::Type type = Object::TypeUndefined ) const
和
int listObjects ( List& list, Object::Type type, bool fullyQualified ) const
- 参数
-
需要对空对象的引用 ——这是调用
List
后包含字典对象的列表 。listObjects()
(请参阅 第 2.3.10 节,“列表类”。)可选的第二个参数type
可用于将列表限制为仅给定类型的对象——即指定的Object::Type
. 如果type
未给出,则列表包含字典的所有对象。您还可以指定 中的对象名称是否
list
是完全限定的(即,对象名称是否包括数据库、模式和可能的表名称)。如果指定fullyQualified
,则还必须指定type
。在 NDB 8.0.29 及更高版本中,您可以调用
clear()
清空以前使用的 a 以List
供重用。笔记设置
fullyQualified
为false
会导致listObjects()
返回使用完全限定名称的对象。 - 返回值
0
关于成功,-1
关于失败。
- 描述
创建或检索适合更改的哈希映射。需要正在进行的模式事务;有关详细信息,请参阅 Dictionary::beginSchemaTrans()。
- 签名
-
以下任一项:
int prepareHashMap ( const Table& oldTable, Table& newTable )
int prepareHashMap ( const Table& oldTable, Table& newTable, Uint32 buckets )
- 参数
对旧表和新表的引用。可选地,多个桶。
- 返回值
成功返回0;失败时,返回 -1 并设置错误。
- 描述
此方法用于释放
Event
不再需要的 an。通常这是由 返回的事件getEvent()
。- 签名
void releaseEvent ( const Event* event )
- 参数
Event
要清理的 。- 返回值
没有。
这个方法是在 NDB 8.0.30 中添加的。