本節提供有關 Dictionary
類別的資訊。
- 父類別
- 子類別
- 描述
這用於定義和擷取資料物件中繼資料。它也包含用於建立和捨棄資料庫物件的方法。
- 方法
-
下表列出此類別的公用方法,以及每個方法的用途或用法
表 2.12 Dictionary 類別方法和描述
使用
Dictionary::create
方法建立的資料庫物件 (例如資料表和索引) 無法由 MySQL Server 看見。這表示 MySQL 用戶端無法存取它們,並且它們無法被複寫。基於這些原因,通常最好避免使用它們。*
()Dictionary
類別沒有任何直接使用資料行的方法。您必須使用Column
類別方法來執行此目的—如需詳細資訊,請參閱 第 2.3.1 節「Column 類別」。 - 類型
- 描述
-
此方法會建立
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 節,「表格類別」。)用於描述資料行的
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
的執行個體。此方法會刪除正在刪除的
table
上的所有外鍵約束,無論被刪除的表格是做為父表格、子表格還是兩者。在 NDB 8.0 之前,使用此方法刪除的
NDB
表格會保留在 MySQL 資料字典中,但無法在 mysql 用戶端中使用DROP TABLE
來刪除。在 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()
開始的綱要交易;會導致操作被處理,並提交 (commit) 或中止 (abort) 並回滾 (roll back)。此方法結合了交易執行和關閉;不需要(或未實作)針對這些任務的個別方法。即使目前沒有作用中的綱要交易,也可以成功呼叫此方法。如同許多其他 NDB API 方法,
endSchemaTrans()
完全有可能覆寫任何目前的錯誤碼。因此,您應該先檢查並儲存先前失敗操作可能產生的任何錯誤碼。 - 簽章
int endSchemaTrans ( Uint32 flags = 0 )
- 參數
-
flags 決定如何處理已完成的交易。預設值為 0,會導致交易被提交。
Dictionary::SchemaTransFlag. 您也可以將此處顯示的任一
SchemaTransFlag
值與endSchemaTrans()
搭配使用SchemaTransAbort
(= 1):導致交易被中止SchemaTransBackground
(= 2):導致交易在背景執行;結果會寫入叢集日誌,而應用程式會繼續執行,不會等待回應。
- 回傳值
成功時傳回 0;發生錯誤時,傳回 -1 並設定
NdbError
錯誤碼。
- 描述
此方法用於擷取
Datafile
物件,並提供資料檔案所在的資料節點的節點 ID 以及該節點檔案系統上的資料檔案路徑。- 簽章
Datafile getDatafile ( Uint32 nodeId, const char* path )
- 參數
-
此方法必須使用兩個引數呼叫,如下所示
資料檔案所在的資料節點的 32 位元不帶正負號整數
nodeId
節點檔案系統上資料檔案的
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 不會追蹤配置的事件物件,這表示使用者必須在使用完物件後,使用
delete
清理每個使用getEvent()
建立的Event
。從 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 節「記錄檔群組類別」。
- 描述
此方法可用於存取名稱已知的
Table
。- 簽章
const Table* getTable ( const char* name ) const
- 參數
表格的
name
。- 回傳值
指向表格的指標,如果沒有提供
name
的表格,則為NULL
。
- 描述
提供表格空間的名稱或 ID 後,此方法會傳回對應的
Tablespace
物件。- 簽名
-
此方法可以使用下列兩種方式的其中一種呼叫
-
使用表格空間名稱
Tablespace getTablespace ( const char* name )
-
使用表格空間 ID
Tablespace getTablespace ( Uint32 id )
-
- 參數
-
下列其中一項
表格空間的
name
,字串(以字元指標表示)表格空間的不帶正負號 32 位元整數
id
- 回傳值
Tablespace
物件,如 第 2.3.28 節「表格空間類別」所述。
- 描述
此方法會取得
Undofile
物件,並提供還原檔所在的節點 ID 以及檔案的檔案系統路徑。- 簽章
Undofile getUndofile ( Uint32 nodeId, const char* path )
- 參數
-
此方法需要下列兩個引數
還原檔所在的資料節點的
nodeId
;此值會以 32 位元不帶正負號整數傳遞節點檔案系統上還原檔的
path
(字串,以字元指標表示)
- 回傳值
Undofile
的執行個體。如需詳細資訊,請參閱 第 2.3.29 節「還原檔類別」。
- 描述
告知是否有正在進行的 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 節,「List 類別」。) 可選的第二個參數type
可用於將列表限制為僅限於給定類型的物件,也就是指定的Object::Type
。如果未給定type
,則列表會包含字典中的所有物件。您也可以指定
list
中的物件名稱是否為完整限定名稱(也就是物件名稱是否包含資料庫、結構描述,以及可能包含的表格名稱)。如果您指定fullyQualified
,則也必須指定type
。在 NDB 8.0.29 及更新版本中,您可以呼叫
clear()
清空先前使用過的List
以便重複使用。注意將
fullyQualified
設定為false
會導致listObjects()
傳回使用完整限定名稱的物件。 - 回傳值
成功時傳回
0
,失敗時傳回-1
。
- 描述
建立或檢索適合修改的雜湊映射。需要進行結構描述交易;請參閱 Dictionary::beginSchemaTrans() 以取得更多資訊。
- 簽名
-
以下任何一種
int prepareHashMap ( const Table& oldTable, Table& newTable )
int prepareHashMap ( const Table& oldTable, Table& newTable, Uint32 buckets )
- 參數
指向舊表格和新表格的參考。可選地,可指定 bucket 的數量。
- 回傳值
成功時傳回 0;失敗時傳回 -1 並設定錯誤。
- 描述
此方法用於在不再需要
Event
後將其釋放。通常這是由getEvent()
傳回的事件。- 簽章
void releaseEvent ( const Event* event )
- 參數
要清除的
Event
。- 回傳值
無。.
此方法是在 NDB 8.0.30 中新增的。