中繼綱要的元素包括類別、內容和方法。中繼綱要還支援將指示和關聯作為類別類型,以及將參考作為內容類型。
類別可以按照代表類別之間子類型關係的概括階層進行排列。概括階層是一種不支援多重承襲的根狀指向圖形。
常規類別可以包含任何本質類型 (例如布林、整數、字串和其他) 的數量或陣列內容。它不能包含內嵌類別,或其他類別的參考。
關聯是一種特殊類別,可包含兩個或多個參考。它代表兩個或多個物件之間的關係。由於這種定義關聯的方法,因而可在類別之間建立關係,而不會影響任何相關類別。亦即,關聯的增加不會影響相關類別的介面。只有關聯可以包含參考。
下圖中的綱要片段顯示了 ZENworks 7 桌面管理使用的一些 CIM 物件之間的關係。
此圖顯示了 CIM 綱要如何映射到關聯式 DBMS 綱要。所示類別的類別名稱以方塊標題表示。關聯標示在兩個類別之間的線上。
此綱要片段的承襲階層將顯示在以下 CIM 2.2 綱要圖解中。Ref 類型的參考以粗體表示,並透過每個關聯子類型細分了參考類型。
CIM 是一種具有類別、承襲和多型的完整物件模型。產生的關聯式綱要映射在最大程度上保留了這些特性。以下兩個方面均屬於關聯式映射:
邏輯綱要: 邏輯綱要定義如何為應用程式顯示資料 (與 API 類似)。其目標是無論基本資料庫為何,邏輯綱要均保持不變,這樣應用程式軟體即可在任何受支援的資料庫上執行,而不發生任何變更。儘管 SQL 是標準資料庫,但此目標不可能完全實現。應用程式軟體需要知道有關使用中資料庫的更多資訊,並且此資訊可概括和隔離在小型的應用程式代碼區域中。
實體綱要: 實體綱要定義資料在資料庫中的架構方式。SQL 和 RDBMS 的本質使綱要特定於資料庫。本文件僅描述實體綱要的一般概念。
在此資料庫中使用表格來表示 CIM 階層中的每個類別。表中適當類型的欄表示類別中每個非承襲的內容。每個表還有一個主索引鍵 (id$),它是用於唯一識別實例的 64 位元整數。CIM 類別的實例由每個表中對應於其承襲階層中類別的列表示。每列的 id$ 值均相同。
每個 CIM 類別還可由檢視窗表示,該檢視窗使用 id$ 合併承襲階層中各種表中的列,以為該類別的某實例產生復合內容 (承襲內容與本地內容) 集。該檢視窗還包含整數類型的額外欄 class$,它表示實例的實際類別 (大多數為葉) 之類型。
關聯的映射方式與常規類別相同,其參考內容以包含參考物件實例 id$ 欄位的欄表示。因此,可以透過合併關聯中的參考欄位和所參考表中的 id$ 欄位來橫貫關聯。
下圖將說明使用此映射的典型查詢:
此查詢會尋找連接至指定網路節區的所有電腦。涉及的類別和關係以框線反白顯示。
以下主題描述這兩種綱要類型:
邏輯綱要即為資料庫和應用程式的使用者所看到的資料庫綱要。該綱要由儲存的程序和檢視窗組成。基本表在應用程式中不可見。
ZENworks 7 桌面管理庫存元件使用 JDBC 向 RDBMS 發出 SQL 陳述式,並在 RDBMS 資料類型和 Java 資料類型之間進行轉換。將 JDBC 與儲存的程序和檢視窗配合使用可提供一個能夠從基本資料庫技術和實體綱要變更中分離應用程式代碼的摘要層級。
以下各節將詳細論述邏輯綱要的各種元件:
建議您不要在資料庫綱中變更 CIM 名稱。由於命名綱要存在差異,因此仍然會產生一些問體,例如:
在產生綱要過程中可使用以下方法避免這些問題中的大多數:保留 CIM 名稱的大小寫、縮寫任何超過 30 個字元的名稱,以及將任何屬於保留字集組合的名稱均置於引號中。
任何超過 28 個字元的名稱均會縮寫為 28 個字元或更少字元的根名稱,以允許使用雙字元字首,這樣所有關聯的 SQL 綱要元件均可以使用同一根名稱。縮寫演算法可將名稱縮短,以使其易於記憶和識別,並且在其範圍內為唯一的。經過縮寫的名稱具有 # 字元作為字尾 (請注意,在 CIM 中 # 是不合法字元),以避免與其他名稱發生衝突。如果同一範圍內的兩個或多個名稱產生了相同的縮寫,則會附加額外的數位,以使該名稱具有唯一性。例如,AttributeCachingForRegularFilesMin 會縮寫為 AttCacForRegularFilesMin#。
所有此類易混名稱均會寫入易混名稱表,這樣程式即可以查詢實際的 CIM 名稱並取回要於 SQL 配合使用的易混名稱。
檢視窗是應用程式代碼和查詢最經常操控的綱要元件。它們將同一名稱當成其代表的 CIM 類別。例如,CIM.UnitaryComputerSystem 類別由名為 CIM.UnitaryComputerSystem 的檢視窗表示。
必要時,可透過將類別名稱和內容名稱序連在一起並以 $ 字元分隔,來建立索引和輔助表的名稱。這些名稱通常為縮寫名稱。例如,NetworkAdapter$NetworkAddresses 縮寫為 NetAdapter$NetAddresses#。這不會對 ZENworks 7 桌面管理綱要使用者產生任何負面影響。
在 SQL 中,具有與綱要相同名稱的使用者是每個綱要的擁有者,例如 CIM、ManageWise®、ZENworks 等。
此外,有一個 MW_DBA 使用者具有資料庫管理員特權和所有綱要物件的權限。MW_Reader 職能具有對所有綱要物件的唯讀存取權限,而 MW_Updater 職能具有對所有綱要物件的讀寫執行存取權限。
應用程式應該以 Sybase 資料庫的 MW_Reader 或 MW_Updater 職能、Oracle 資料庫的 MWO_Reader 或 MWO_Updater 職能,以及 MS SQL Server 資料庫的 MWM_Reader 或 MWM_Updater 職能,來存取資料庫,這取決於各資料庫的要求。
CIM 資料類型映射至由資料庫提供之最適合的資料類型。由於 Java 應用程式使用 JDBC 存取資料,因此它通常不需要使用類型。
Java 本質上不支援未簽署的類型,因此您應該使用下一個大小的類別或整數類型來表示它們。同時,請確保讀取或寫入資料庫時沒有任何問題。例如,從資料庫中的未簽署欄位讀取負數,或將負數寫入資料庫中的未簽署欄位均可能導致發生錯誤。
CIM 和 Java 中的字串為 Unicode,因此使用 UTF-8 字元集來建立資料庫。國際化不會引起任何問題;但是,它可能會產生在查詢中區分大小寫的問題。
所有資料庫保留儲存在其中之字串資料的大小寫,但在查詢過程中可能會以區分大小寫或其他形式存取資料。在 ZENworks 7 桌面管理中,庫存查詢和資料輸出元件不受影響,因為查詢的資料是在查詢之前從資料庫取回的,因此會自動處理區分大小寫問題。
在 CIM 中,可以指定字串中字元長度的最大大小,也可以不指定。許多字串不指定大小,也就是說它們在大小上不受限制。為提高效率,這些不受限制的字串會映射到最大大小為 254 個字元的變數字串。具有最大大小的 CIM 字串會映射到相同大小的變數資料庫字串。在資料庫中,大小以位元組為單位,而不是以字元為單位,這是因為 Unicode 字元可能需要使用多個位元組進行儲存。
在資料庫中,每個 CIM 類別均由檢視窗表示,其中包含該類別的所有本地承襲非陣列內容。該檢視窗的名稱與 CIM 類別相同。
可以使用 SELECT 陳述式來查詢檢視窗,並可使用 UPDATE 陳述式來更新檢視窗。由於無法將檢視窗與 INSERT 和 DELETE 陳述式配合使用,因此會使用建構子和解構子程序。
實體綱要由實作資料庫所需的元件組成。每個資料庫的實體綱要均不相同。典型實體綱要包括:
邏輯綱要層疊於實體綱要的頂層,並讓使用者和應用程式無需瞭解實體綱要。