專利名稱::用于將x500數(shù)據(jù)模型映射到關(guān)系數(shù)據(jù)庫上的方法
技術(shù)領(lǐng)域:
:本發(fā)明的
技術(shù)領(lǐng)域:
是數(shù)據(jù)庫領(lǐng)域。數(shù)據(jù)庫被公知為以實(shí)用方式收集和組織數(shù)據(jù),以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、修改、檢索和分析。
背景技術(shù):
:己知有一些數(shù)據(jù)庫組織的范例。以對(duì)象的形式提供數(shù)據(jù),每個(gè)對(duì)象是一塊數(shù)據(jù)并聚集了多個(gè)與所述對(duì)象相關(guān)的屬性,每個(gè)屬性包含名稱或類型以及數(shù)值。最常用的范例之一是關(guān)系數(shù)據(jù)庫RDB。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)被存儲(chǔ)在表中,表也被稱為關(guān)系。列的名稱是屬性的名稱,每個(gè)對(duì)象對(duì)應(yīng)于表中的行,所述行包含相應(yīng)屬性的值。關(guān)系數(shù)據(jù)庫作為公知已有很長(zhǎng)時(shí)間。它們己經(jīng)被證明是一種強(qiáng)大的存儲(chǔ)數(shù)據(jù)的方式。它們?cè)谌澜缫褟V為使用,并且許多工具和系統(tǒng)可用于管理這些數(shù)據(jù)庫。此外,許多從業(yè)者經(jīng)過培訓(xùn),可以創(chuàng)建、管理或使用這些數(shù)據(jù)庫及相關(guān)工具。例如SQL査詢語言是公知可使用的。然而,在處理復(fù)雜的數(shù)據(jù)組織時(shí),關(guān)系范例似乎稍有局限,并且,已開發(fā)出新的范例,以提供具有更詳盡語義的工具來表述所述的復(fù)雜性。X500是往往能滿足數(shù)據(jù)庫擁有者和用戶的需求的那些備選范例中的一個(gè)。在描述數(shù)據(jù)庫的組織時(shí),X500允許更豐富的語法。X500是標(biāo)準(zhǔn)化的。X500提供了一種對(duì)用戶更友好的方法,即允許數(shù)據(jù)庫管理者容易地描述其數(shù)據(jù)的結(jié)構(gòu)。還可以使用己知語言UML設(shè)計(jì)X500規(guī)范。RDB和X500環(huán)境都具有其自身優(yōu)勢(shì),從這兩個(gè)環(huán)境中獲益將是有利的。由此,人們有興趣來提供X500數(shù)據(jù)模型向關(guān)系數(shù)據(jù)庫模型的映射。源于這種解決方案一定會(huì)被需要時(shí)間性能且在大量數(shù)據(jù)上工作的電信應(yīng)用所使用的事實(shí),其他約束條件是提供與直接的RDB使用等價(jià)的性能以及盡可能多地提供對(duì)整個(gè)數(shù)據(jù)庫大小的優(yōu)化的能力。WO96/07147(US6052681)描述了這個(gè)問題的解決方案。然而,X500信息被整合到RDB表中。這導(dǎo)致了數(shù)據(jù)庫大小上的很大開銷。此外,一個(gè)X500訪問觸發(fā)了許多數(shù)據(jù)庫訪問,從而降低了性能。在US2006/0173873中描述了一種層級(jí)/關(guān)系轉(zhuǎn)換系統(tǒng),其使用虛擬目錄服務(wù)。在US6823338中描述了一種用于將X500訪問控制數(shù)據(jù)映射到關(guān)系數(shù)據(jù)庫的方法。在US5333317中描述了一種在X500數(shù)據(jù)庫中進(jìn)行搜索的方法。然而,這些方法都沒有滿足所給出的全部約束。
發(fā)明內(nèi)容本發(fā)明通過提供RDB的X500模型圖提出并解決了該問題?;诠芾頂?shù)據(jù)對(duì)象的基礎(chǔ)RDB,提供了向用戶展示對(duì)象的映射接口,好像這些對(duì)象是根據(jù)X500模型進(jìn)行組織的一樣。用戶訪問對(duì)象并管理對(duì)象,就好像這些對(duì)象是X500對(duì)象一樣。映射系統(tǒng)隨后以透明的方式向與RDB管理系統(tǒng)的接口提供所有必要的動(dòng)作。本發(fā)明的主要?jiǎng)?chuàng)意思想是.使用或創(chuàng)建標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù),并且將與X500模型的結(jié)構(gòu)有關(guān)的信息分開存儲(chǔ)。這樣一來,數(shù)據(jù)庫不會(huì)被映射方法修改或影響,并且數(shù)據(jù)庫的大小僅僅依賴于有用數(shù)據(jù)的大小。此外,提供了與將X500模型映射到關(guān)系數(shù)據(jù)庫模型有關(guān)的信息,該信息描述了X500實(shí)體與關(guān)系數(shù)據(jù)庫模式和數(shù)據(jù)之間的關(guān)系。本發(fā)明的目的是一種用于在計(jì)算機(jī)系統(tǒng)中將X500數(shù)據(jù)模型映射到關(guān)系數(shù)據(jù)庫RDB上的方法,其中,X500數(shù)據(jù)模型包括至少一個(gè)條目、至少一個(gè)對(duì)象類和目錄信息樹DIT,條目包括至少一個(gè)屬性,屬性包括類型和值,所述條目收集關(guān)于一個(gè)對(duì)象的信息,對(duì)象類是用于定義存在于描述所述對(duì)象的條目中的所述屬性的類型的模型,所述DIT的頂點(diǎn)是條目,每個(gè)條目包括區(qū)別名DN,所述區(qū)別名DN包括所述DIT中的雙親條目的DN以及相對(duì)區(qū)別名RDN,所述相對(duì)區(qū)別名RDN包括適合于所述條目的一個(gè)特別指定的屬性,并且,所述關(guān)系數(shù)據(jù)庫RDB包括關(guān)系表,每個(gè)表包括若干已命名的列,其中的一些列是主關(guān)鍵字,主關(guān)鍵字包含唯一地標(biāo)識(shí)對(duì)象數(shù)據(jù)的值,其中,對(duì)象數(shù)據(jù)被存儲(chǔ)在行中,所述方法包括以下步驟-構(gòu)建對(duì)象類,每個(gè)對(duì)象類包括其屬性的列表;-構(gòu)建屬性,每個(gè)屬性包括其類型;-構(gòu)建靜態(tài)目錄信息樹SDIT,所述靜態(tài)目錄信息樹SDIT僅包括靜態(tài)DN,即SDN,所述靜態(tài)DN是僅包括靜態(tài)RDN的DN,所述靜態(tài)RDN是有任何變量值被移除的RDN;以及-通過以下方式將X500數(shù)據(jù)映射到到RDB:-將X500對(duì)象類與RDB表相關(guān)聯(lián);以及-將X500屬性與RDB表的列相關(guān)聯(lián),并將具有所述X500屬性的所述表列的名稱存儲(chǔ),作為指向所述屬性的地址。依據(jù)本發(fā)明的另一特征,構(gòu)建對(duì)象類、構(gòu)建屬性和構(gòu)建靜態(tài)目錄信息樹的步驟是通過分別從X500規(guī)范提取所述元素而進(jìn)行的。依據(jù)本發(fā)明的另一特征,構(gòu)建對(duì)象類、構(gòu)建屬性和構(gòu)建靜態(tài)目錄信息樹的步驟是通過從RDB的分析中創(chuàng)建這些元素而進(jìn)行的。依據(jù)本發(fā)明的另一特征,對(duì)X500映射RDB.的條目(7)的訪問/請(qǐng)求以及分別對(duì)X500映射RDB的條目的屬性(8)的訪問/請(qǐng)求,由所述條目(7)的DN定義以及分別由所述屬性(8)的條目的DN和所述屬性(8)—起定義,包括以下步驟-通過從所述條目的DN移除任何變量值,從所述DN構(gòu)建靜態(tài)DN,艮卩SDN;-獲取靜態(tài)DIT,即SDIT,以定位匹配靜態(tài)DN;-分別針對(duì)所述屬性,從所述匹配靜態(tài)DN的屬性中提取與所述條目的所有屬性相對(duì)應(yīng)的表列的映射地址;-構(gòu)建包含所述映射地址的RDB請(qǐng)求;-執(zhí)行請(qǐng)求;以及-得到所述請(qǐng)求的結(jié)果。通過結(jié)合附圖而給出的詳細(xì)描述,本發(fā)明的其他特征、細(xì)節(jié)和優(yōu)點(diǎn)將變得更加明顯,在附圖中-圖1是映射方法的UML視圖;、-圖2是X500模型的組織的UML視-圖3示出了允許的/不允許的拓?fù)涞氖纠?圖4示出了X500DIT的層級(jí)組織;-圖5是DIT的示例;-圖6是RDB的示例;-圖7-13示出了處理的示例,其中o圖7示出了X500模型;o圖8示出了針對(duì)條目而產(chǎn)生的XML代碼;o圖9示出了針對(duì)映射信息的XML代碼;o圖10示出了針對(duì)RDB表的創(chuàng)建的XML代碼;o圖11示出了用于創(chuàng)建填充數(shù)據(jù)庫的條目的XML代碼;o圖12示出了第一査詢的范例,;o圖13示出了第二查詢的范例。具體實(shí)施例方式首先,將描述X500模型的特征。X500模型是基于目錄信息庫DIB的。DIB及其結(jié)構(gòu)在ITU-TRec.X501—ISO/IEC9594-2中定義。為了使本發(fā)明易于理解,隨后將對(duì)X500的主要特征進(jìn)行解釋。DIB由關(guān)于對(duì)象的信息構(gòu)成。DIB由(目錄)條目組成,其中的每個(gè)(目錄)條目由關(guān)于一個(gè)對(duì)象的信息的集合構(gòu)成。每個(gè)條目由屬性組成。每個(gè)屬性具有類型和一個(gè)值。DIB的條目是以樹的形式排列的,該樹是目錄信息樹DIT,其中,頂點(diǎn)表示條目。樹中較高的條目(較接近于根)將常常表示諸如國家或組織之類的對(duì)象,而樹中較低的條目將表示人或應(yīng)用過程。例如,條目(C-GB,L=Winslow,O-GraphicServices,CN=LaserPrinter)標(biāo)識(shí)了應(yīng)用實(shí)體"LaserPrinter",其具有位置的地理屬性。所述條目由四個(gè)屬性組成。用于指示類型C具有值GB的第一屬性C-GB在其間表示出符號(hào),告知對(duì)象的C(代表國家)。圖3示出了DIT的不同拓?fù)?。DIT—定是如上部的3個(gè)方案1、2、3所示的樹形結(jié)構(gòu)。下部的2個(gè)方案4、5不是樹形結(jié)構(gòu),這2個(gè)方案4、5不是DIT的有效方案。圖4示出了DIT6的示例,DIT6包括多個(gè)頂點(diǎn)/條目7。條目7被詳細(xì)地示為包括多個(gè)屬性8。屬性8被進(jìn)一步詳細(xì)描述為由類型9/值10對(duì)組成。每個(gè)條目7具有區(qū)別名DN,區(qū)別名DN唯一且明確地標(biāo)識(shí)條目7。區(qū)別名DN的這些屬性派生自信息的樹形結(jié)構(gòu)。條目7的區(qū)別名DN由其上級(jí)條目的區(qū)別名DN以及來自條目7的特別指定的屬性值(區(qū)別值)組成,該特別指定的屬性值(區(qū)別值)也被稱為相對(duì)DN或RDN。區(qū)別名DN也被稱為條目7的地址,提供了從給定的DN描述開始對(duì)DN進(jìn)行實(shí)例化(構(gòu)建)或分析(提取)的能力。圖5提供了DIT6的示例。示意性條目(C-GB,L=Winslow,0=GraphicServices,CN=LaserPrinterH立于樹的右邊最低的葉子處。條目的特別指定的屬性值是屬性CN-LaserPrinter。因此,RDN等價(jià)于CN=LaserPrinter。在爬上樹的根的同時(shí),所述條目的DN是可以通過附加接續(xù)的上級(jí)條目的RDN而構(gòu)建的。隨后,往上一層增加0=GraphiCServices。再往上一層增加L-Winslow。根的最后一層最終增加C=GB以提供所述條目的整個(gè)DN:{C=GB,L=Winslow,0=GraphicServices,CN=LaserPrinter},作為所有接續(xù)的RDN的合并。目錄實(shí)施了一組規(guī)則,以確保在隨著時(shí)間的修改過程中,DIB保持良好地形成。這些已知為目錄模式的規(guī)則防止條目具有其對(duì)象類的錯(cuò)誤的屬性類型、防止屬性值具有屬性類型的錯(cuò)誤形式、甚至防止條目具有錯(cuò)誤類的下級(jí)條目。DIT6包括關(guān)于數(shù)據(jù)庫中對(duì)象的全部的結(jié)構(gòu)和層級(jí)信息。DIT6是數(shù)據(jù)庫的尋址方案,即,用于對(duì)條目7的實(shí)例進(jìn)行尋址的DN語法或DN描述。在該尋址方案中,存在條目7之間的層級(jí)組織。X500模型還包括與屬性8的類型9有關(guān)的信息,屬性8存在于特定條目7中。這些屬性的類型依賴于條目7所描述的對(duì)象的類。對(duì)象類是用于定義存在于給定的條目7中的所述屬性的類型的模型。對(duì)象類被定義為表示功能性地鏈接在一起的屬性8的邏輯分組,以及表示該組屬性8內(nèi)的邏輯約束。除定義DIT的DN之外給出的對(duì)象類規(guī)范允許構(gòu)建條目7。條目7是一個(gè)或多個(gè)對(duì)象類的實(shí)例,g卩,符合由對(duì)象類給出的應(yīng)用模式的一組屬性8。舉例而言,以下幾行-ObjectClass="AuthorIdentity"Attributes-"name,country"ObjectClass="BookDescription"Attributes="title,publisherld"定義了兩個(gè)示意性對(duì)象類。第一對(duì)象類Authorldentity包括兩個(gè)屬性名稱和國家。作者條目的實(shí)例可以有利地使用對(duì)象類Authorldentity。當(dāng)處理所述作者的書目時(shí),對(duì)象類BookDescription可以用于對(duì)所述作者寫的每一本書進(jìn)行實(shí)例化。例如,名稱(C-GB,L=Winslow,0=GraphicServices,CN-LaserPrinter}標(biāo)識(shí)了應(yīng)用條目"LaserPrinter",應(yīng)用條目"LaserPrinter"在其區(qū)別名中具有位置的地理屬性。名為{C=GB,L=Winslow,CN=JohnJones}的居民JohnJones在他的區(qū)別名中具有相同的地理屬性。那么,有利地,地理屬性可以是對(duì)象類。.圖2提供了X500模型的組織的UML視圖,以及各個(gè)實(shí)體之間的關(guān)系。可在X500模型中尋址到的實(shí)體是條目7和條目中的屬性8。對(duì)象類是不能由此尋址到的。它們僅僅表示功能上鏈接在一起的屬性的邏輯分組以及該組屬性8內(nèi)的邏輯約束(強(qiáng)制、可選)。其次,將描述關(guān)系數(shù)據(jù)庫RDB的特征。圖6示出了這種RDB的范例。關(guān)系數(shù)據(jù)庫模型基于以下基本概念將數(shù)據(jù)呈現(xiàn)為關(guān)系的集合;將每個(gè)關(guān)系描述為表lh列14是由其標(biāo)題13描述的屬性;以及行15表示對(duì)象。每個(gè)表11具有一組屬性13,該組屬性13共同被視為唯一地標(biāo)識(shí)每個(gè)對(duì)象的"關(guān)鍵字"。圖6的范例示出了被組織為RDB的數(shù)據(jù)庫,其中有四個(gè)表ll由其標(biāo)題12描述Author、Title、Publisher和Author—title。對(duì)象被安排在行15中。例如,標(biāo)題表11的對(duì)象/行15包括被表示為列標(biāo)題13的五個(gè)屬性13。標(biāo)題表11的第四行15具有值為"BU7832"的類型"title—id"的屬性13。它還具有值為"StraightTalkAboutComputers"的"tMe"屬性、值為"business"的"type"屬性、值為"19.99"的"price"屬性、和值為"1389"的"pub—id,,屬性。.關(guān)系數(shù)據(jù)庫中的關(guān)鍵字有兩個(gè)目的通過選擇一個(gè)或多個(gè)列充當(dāng)關(guān)鍵字,從數(shù)據(jù)庫快速檢索信息;以及最后以關(guān)鍵字值對(duì)它們進(jìn)行分類。數(shù)據(jù)庫管理系統(tǒng)DBMS創(chuàng)建索引,該索引僅包含關(guān)鍵字字段內(nèi)容和相應(yīng)行15的位置,并且數(shù)據(jù)庫管理系統(tǒng)DBMS維持表11的結(jié)構(gòu)完整性,幫助避免諸如列13中重復(fù)記錄/對(duì)象和沖突值之類的問題。在這些關(guān)鍵字當(dāng)中,主關(guān)鍵字唯一地標(biāo)識(shí)表11中的對(duì)象或行15。例如,在學(xué)生表中,由姓+名構(gòu)建的關(guān)鍵字可能不會(huì)給出唯一標(biāo)識(shí)符(例如,學(xué)校中有兩個(gè)或多個(gè)JaneDoe)。為了唯一識(shí)別每個(gè)學(xué)生,可以添加特定的StudentID字段以用作主關(guān)鍵字。這是在圖6給出的關(guān)系數(shù)據(jù)庫示例中完成的,其中,au一id(作者Id)作為AUTHOR關(guān)系11的主關(guān)鍵字。在這個(gè)示例中,插入具有Id172-32-1176的新作者的嘗試可能違反數(shù)據(jù)庫的設(shè)計(jì),這是因?yàn)閍u—id是主關(guān)鍵字并由此已經(jīng)是客戶172-32-1176。DBMS必須拒絕這種違反完整性約束而可能導(dǎo)致數(shù)據(jù)庫不協(xié)調(diào)的事務(wù)。外關(guān)鍵字是用在一個(gè)表11中以表示相關(guān)表中主關(guān)鍵字的值的關(guān)鍵字。雖然主關(guān)鍵字必須包含唯一值,但外關(guān)鍵字可能有重復(fù)。例如,如果我們?cè)赟tudent表中使用學(xué)生ID作為主關(guān)鍵字(每個(gè)學(xué)生具有唯一的ID),那么我們可以在Courses表中使用學(xué)生ID作為外關(guān)鍵字這是由于每個(gè)學(xué)生可能完成多于一門課程,Courses表中的學(xué)生ID字段(??s寫為Courses.studentID)將有重復(fù)值。外關(guān)鍵字是完整性約束,其實(shí)施了在另一種關(guān)系中從候選關(guān)鍵字提取屬性集合的值。例如,在圖5的示例中的Title關(guān)系11中,屬性pub—id是外關(guān)鍵字,其在Publisher關(guān)系中提供了向出版者描述的訪問。10從以上對(duì)X500和關(guān)系模型的特征的描述得到,RDB僅提供關(guān)系/表以構(gòu)造數(shù)據(jù),從而提供不如X500模型好的語法。當(dāng)將X500模型映射到RDB數(shù)據(jù)庫時(shí),首先必須提供關(guān)于數(shù)據(jù)的結(jié)構(gòu)信息,其次提供將對(duì)象存儲(chǔ)在RDB中何處、在什么表中、參照X500模型尋址實(shí)體的映射信息。DIT6是X500條目7的層級(jí)組織的靜態(tài)表示。DIT6定義了必須以層級(jí)方式如何組織條目7。該層級(jí)組織是通過對(duì)每個(gè)條目7的命名而提供的。X500數(shù)據(jù)模型的所有條目都是由區(qū)別名DN命名的。由于X500數(shù)據(jù)模型被組織為條目的層級(jí)樹DIT6,因而每個(gè)條目7是以其雙親條目的上下文而命名的。這個(gè)名稱被稱為相對(duì)區(qū)別名RDN,這是因?yàn)樗c條目7的雙親條目相關(guān)。DIT6是X500條目的層級(jí)組織的靜態(tài)表示。DIT6定義了必須以層級(jí)方式如何組織條目。X500數(shù)據(jù)模型的層級(jí)樹具有公共根。條目7的區(qū)別名DN由條目7的RDN序列以及直到層級(jí)樹的根的其全部接續(xù)雙親條目組成。DN唯一地標(biāo)識(shí)X500樹的每個(gè)條目7。從條目7的DN,可以推得其包含的條目的DN等(如果有的話)。這種包含關(guān)系是由DN承載的唯一關(guān)系。DN無法承載或暗示其他關(guān)系。可以例如使用字符串表示,對(duì)DN進(jìn)行編碼。涉及DN字符串表示的最重要限制是RDN不能是多值數(shù)據(jù)。另外,輸出由RDN序列中每個(gè)RDN的字符串編碼構(gòu)成,開始于序列的第一個(gè)元素,向前移至最后一個(gè)元素。RDN字符串表示由單獨(dú)AttributeTypeAndValue的字符串編碼構(gòu)成,如下所示將AttributeTypeAndValue編碼為AttributeType的字符串表示,隨后緊跟等號(hào)字符('=',ASCII61),隨后緊跟AttributeValue的字符串表示。","可以用作RDN之間的分隔符。如以下示例CN=JohnT.Mills,OCyberSystemConsulting,L=G6teborg,C=SE中所示,空格和句號(hào)可以用作RDN的合法字符語法的一部分。這就允許通過包括每個(gè)條目7的唯一DN在內(nèi)的DN列表來描述DIT的樹形結(jié)構(gòu)。這是一種針對(duì)處理的方便表示。圖7包括與DIT6等價(jià)的、采用DN形式的、條目的范例列表。稍后將詳述這個(gè)示例。軟件應(yīng)用程序負(fù)責(zé)X500視圖與關(guān)系視圖之間的映射。所述應(yīng)用程序提取并管理所有必要的信息以將X500模型映射到RDB上。該映射包括X500視圖與關(guān)系模式之間的靜態(tài)映射,其中將X500對(duì)象類映射到RDB表上;將X500屬性映射到表列上。關(guān)于動(dòng)態(tài)映射,由條目或DN指示的數(shù)據(jù)對(duì)象裝載對(duì)應(yīng)于在相應(yīng)表列中對(duì)相應(yīng)行/記錄的檢索。當(dāng)處理創(chuàng)建、更新或刪除條目或?qū)傩詴r(shí),其分別對(duì)應(yīng)于在相應(yīng)表中創(chuàng)建、更新或刪除相應(yīng)的行/記錄。對(duì)于X500數(shù)據(jù)模型中的每個(gè)條目,我們必須知道條目被映射到的關(guān)系數(shù)據(jù)庫表的列表,以及相應(yīng)的對(duì)象類映射。我們必須知道每個(gè)對(duì)象類的數(shù)據(jù)被映射到哪些列。我們還必須能夠從條目的DN推斷出關(guān)鍵字屬性的值,以訪問該條目被映射到的所有表。所有這些映射的描述必須能夠?qū)⑨槍?duì)給定條目的請(qǐng)求映射到關(guān)系數(shù)據(jù)庫表上的請(qǐng)求的恰當(dāng)集合上。在X500數(shù)據(jù)模型中,必須將在任意對(duì)象類中定義的每個(gè)屬性映射到關(guān)系數(shù)據(jù)模型中的關(guān)系表的列名稱。必須將在任意條目中定義的每個(gè)對(duì)象類映射到關(guān)系數(shù)據(jù)模型中的關(guān)系表。DN語法DNS定義了用于對(duì)給定條目進(jìn)行尋址的DN結(jié)構(gòu)。DN語法被軟件應(yīng)用程序使用以尋找條目被映射到的相應(yīng)的表,并將接收到的DN中的屬性映射到這些表的相應(yīng)關(guān)鍵字屬性。DN語法DNS由RDN描述(相對(duì)區(qū)別名的描述)的序列組成,其中,在適當(dāng)時(shí),g卩,當(dāng)RDN具有變量值/是可變的時(shí),將RDN的每個(gè)屬性映射到關(guān)系表的關(guān)鍵字屬性。一個(gè)DN語法DNS與一個(gè)且僅一個(gè)條目相關(guān)聯(lián),并且一個(gè)條目使用將要尋址到的一個(gè)且僅一個(gè)DN語法。序列的每個(gè)RDN描述應(yīng)當(dāng)指示相應(yīng)RDN屬性的名稱,而如果12RDN具有常量值,舉例而言,組織單元,例如OU《AMEL,則還指示該常量的值。另外,在適當(dāng)時(shí),向不同關(guān)鍵字屬性的映射的描述包括與關(guān)鍵字屬性相對(duì)應(yīng)的列的名稱,以及在必要時(shí)根據(jù)所使用的語法或語言,還包括表的名稱。RDN可以是<RDNattributeName="Nameofaconstantattribute:forexample"OU""〉<VAI>valueoftheconstant</VAI></RDN>或者,<RDNattributeName="NameoftheRDNattribute"columnName-"Nameofthecorrespondingkeyattributeofthetable"/></RDN>以下基于作為示例而定義的X500和關(guān)系數(shù)據(jù)模型提供了DN描述的示例<DNSyntaxname="Author—DN"><RDNattributeName-"authorld"coIumnName="au—id'7><RDNattributeName="OU"><Val>BookshopOnline</Val></RDN></DNSyntax>〈DNSyntaxname="Title—DN"><RDNattributeName="isbn"columnName="title—id'V><RDNattributeName="OU"><Val>BookshopOnline</Val></RDN></DNSyntax>〈DNSyntaxname="Publisher—DN"><RDNattributeName-"publisherld"columnName="pub—id"/><RDNattributeName="OU"><Val>BookshopOnline</Val></RDN></DNSyntax>由此可見,區(qū)別常量RDN和變量RDN是重要的。RDN始終對(duì)應(yīng)于具有類型和值的屬性。在常量RDN中,值是常量。在變量RDN中,值是變量。常量RDN可以例如定義OU或組織單元。這樣的常量RDN定義條目的層級(jí)組織并將出現(xiàn)在DIT中。而變量RDN允許對(duì)條目進(jìn)行實(shí)例化并且必須被映射到RDB模型中的表列。圖1提供了映射過程和所暗示的所有實(shí)體之間的交互的UML描述。根據(jù)本發(fā)明的方法包括以下步驟-構(gòu)建對(duì)象類,每個(gè)對(duì)象類包括其屬性的列表;-構(gòu)建屬性,每個(gè)屬性包括其類型;-構(gòu)建靜態(tài)目錄信息樹SDIT,靜態(tài)目錄信息樹SDIT僅包括靜態(tài)DN,即SDN,靜態(tài)DN是僅包括靜態(tài)RDN的DN,靜態(tài)RDN是有任何變量值被移除的RDN;以及-通過以下方式將X500數(shù)據(jù)映射到到RDB:-將X500對(duì)象類與RDB表相關(guān)聯(lián);以及-將X500屬性與RDB表的列相關(guān)聯(lián),并將具有所述X500屬性的所述表列的名稱存儲(chǔ),作為指向所述屬性的地址。構(gòu)建屬性和對(duì)象類的步驟是重要的,以捕獲數(shù)據(jù)的拓?fù)?。典型地,這是X500模型中存在的特征而不是RDB模型中存在的特征。僅存在于X500模型中的另一點(diǎn)是條目的層級(jí)。這被包括在DIT6中,并且不存在于RDB視圖中,RDB視圖中無法找到等價(jià)物。一種捕獲所述條目層級(jí)的方式是保持DIT6。本發(fā)明的重要特征在于不是保持整個(gè)DIT,而是僅保持指示層級(jí)的那部分。有利地,可以將DIT6的所有變量部分分割開來,以便僅保持靜態(tài)目錄信息樹SDIT。這樣的SDIT僅包括靜態(tài)DN,即,靜態(tài)DN是僅包括靜態(tài)RDN的DN,靜態(tài)RDN是被移除了任何變量值的RDN。在移除后,由于不同的條目?jī)H僅因它們的值而不同,因而可能出現(xiàn)多個(gè)相同的靜態(tài)DN。僅保持每個(gè)SDIT的一個(gè)SDN。這種"分層"大大減小了SDIT的大小。SDIT還適于查詢數(shù)據(jù)庫,這將在稍后進(jìn)行解釋。例如,與前述示例的DN{C=GB,L=Winslow,0=GraphicServices,CN=LaserPrinter}相對(duì)應(yīng)的靜態(tài)DN將成為{C=,L=,0=,CN=},這是因?yàn)檫@個(gè)條目的四個(gè)RDN是變量RDN。因此,包含數(shù)據(jù)對(duì)象的RDB被拓?fù)湫畔?對(duì)象類和屬性"以及拓?fù)?層級(jí)信息"靜態(tài)DIT"擴(kuò)大。這些信息可以用于針對(duì)查詢對(duì)數(shù)據(jù)庫進(jìn)行掃描。其他信息必須由作為映射地址本身的映射應(yīng)用程序進(jìn)行維持。通過將X500對(duì)象類與RDB表相關(guān)聯(lián),將X500數(shù)據(jù)映射到RDB。這一點(diǎn)在涉及到實(shí)現(xiàn)數(shù)據(jù)庫本身時(shí)是很重要的,這將在稍后進(jìn)行解釋。但是,X500數(shù)據(jù)與RDB數(shù)據(jù)之間的真正鏈接是通過將X500屬性映射到RDB表列來維持的。這一點(diǎn)是可以通過存儲(chǔ)具有所述X500屬性的所述表列的名稱來實(shí)現(xiàn)的。那么,這樣的名稱可以用作指向所述屬性的地址。有利地,可以將該名稱存儲(chǔ)在先前構(gòu)建的屬性中甚至存儲(chǔ)在骨干SDIT中。對(duì)于所有這些所定義的元素,隨后可以通過映射應(yīng)用程序?qū)⒒A(chǔ)RDB作為X500數(shù)據(jù)庫進(jìn)行觀看和訪問,并且可以通過映射地址來鏈接兩個(gè)環(huán)境的元素。為了得到這樣的映射應(yīng)用程序,可能有依賴于數(shù)據(jù)庫歷史的兩個(gè)出發(fā)點(diǎn)。對(duì)應(yīng)于權(quán)利要求3的第一出發(fā)點(diǎn)假設(shè)存在已構(gòu)造和填充了的RDB。為了利用現(xiàn)有的情況,RDB被保持原樣,并且必須添加X500模型以向用戶提供X500視圖。對(duì)應(yīng)于權(quán)利要求2的第二個(gè)出發(fā)點(diǎn)假設(shè)預(yù)先不存在RDB,但存在數(shù)據(jù)的X500組織以及使用RDB管理工具的意愿,但是,RDB數(shù)據(jù)庫是將要構(gòu)建和填充的。在第二點(diǎn)中,數(shù)據(jù)的組織包含于X500模型中。所述模型提供了所有信息對(duì)象類、屬性和DIT或SDIT。僅需要將這些信息從所述模型中提取出來。需要注意的是,DIT不需要"填充"有數(shù)據(jù)庫的整個(gè)條目,并且,數(shù)據(jù)庫創(chuàng)建器可以直接以靜態(tài)DIT的方式給出層級(jí)組織的規(guī)范。如果DIT被填充,即,其對(duì)應(yīng)于已被填充的X500數(shù)據(jù)庫,則可以首先對(duì)其"分層"。由于預(yù)先不存在RDB,因而可以將其調(diào)整為匹配于X500組織,并改善將來的映射。然后,針對(duì)每個(gè)對(duì)象類創(chuàng)建RDB表。這個(gè)表的列是由其屬性的列表定義的。隨后,通過根據(jù)對(duì)象類創(chuàng)建表,以及在相應(yīng)的屬性中存儲(chǔ)表名稱和表列,來完成映射。RDB隨后可以被填充,無論是直接通過RDB直接訪問,還是通過具有X500視圖的映射應(yīng)用程序。當(dāng)開始于已被填充的DIT或X500完成數(shù)據(jù)庫時(shí),必須以己知的方式傳送所有數(shù)據(jù)。在第一點(diǎn)中,所有的都始于已有的RDB。問題產(chǎn)生于RDB完全不包含拓?fù)浠驅(qū)蛹?jí)信息的事實(shí)。那么,可將兩種選擇提供給管理者。第一個(gè)選擇在于,從RDB自動(dòng)推得所需的信息,即,對(duì)象類、屬性和SDIT。這一點(diǎn)是可以通過例如針對(duì)每個(gè)表構(gòu)建對(duì)象類、針對(duì)這樣的表的每個(gè)列構(gòu)建屬性、以及構(gòu)建DIT來完成的。由于在RDB中無法找到層級(jí)信息,因而無法自動(dòng)創(chuàng)建層級(jí)信息。那么,將不會(huì)創(chuàng)建靜態(tài)RDB,并且,SDIT將在于一級(jí)的樹,該樹包括根,其中所有條目直接鏈接到所述根。第二個(gè)選擇是利用映射的機(jī)會(huì)來擴(kuò)大數(shù)據(jù)庫的組織。在這種情況下,數(shù)據(jù)庫管理者可以增加一些層級(jí)并創(chuàng)建具有多個(gè)所增加的層的SDIT。這樣的操作必須由知道應(yīng)如何組織數(shù)據(jù)的操作者來手動(dòng)執(zhí)行。由于最初不存在這樣的信息,因而必須添加該信息并檢査所有的一致性。無論以何種方式獲得,我們從現(xiàn)在開始都假設(shè)所有的映射信息是可用的并且映射應(yīng)用程序已準(zhǔn)備就緒。這樣的映射應(yīng)用程序是以如下方式使用的。目的是在向用戶提供X500的同時(shí)訪問存儲(chǔ)在RDB中的對(duì)象。愿意訪問給定條目的所述用戶將條目或條目的屬性作為他請(qǐng)求的參數(shù)來提供。為了用X500視圖來完成這一點(diǎn),他提供了DN。該DN或者是所述條目的DN,或者是所述屬性的條目的DN,由所述屬性的指示完成。請(qǐng)求可以是咨詢(讀取)或修改(創(chuàng)建、修改或刪除)請(qǐng)求。需要等價(jià)地考慮所有這些請(qǐng)求,這是因?yàn)榇颂幍闹饕康氖菫榱私忉層成?,而映射保持相同。所述映射?yīng)用程序所操作的請(qǐng)求過程包括以下步驟。通過應(yīng)用與前述相同的分層過程,即通過移除所述DN的所有變量值,來從所述給定的DN構(gòu)建/提取靜態(tài)DN,即SDN。然后,將所述SDN與SDIT的SDN進(jìn)行比較,直到所述SDN與所述SDIT的SDN之一相匹配為止。在給定所述匹配SDN的情況下,映射應(yīng)用程序可以引用與所述SDN相對(duì)應(yīng)的對(duì)象類以及所述SDN的屬性,其中每個(gè)變量RDN對(duì)應(yīng)于一個(gè)屬性。對(duì)于每個(gè)所述屬性,將所述屬性的地址(表和列)存儲(chǔ)在RDB中。在請(qǐng)求針對(duì)屬性的情況下,使用單個(gè)地址。在條目的情況下,使用所述條目的所有屬性的地址?;谒龅刂罚褂肦DB管理工具的RDB請(qǐng)求語言,映射應(yīng)用程序構(gòu)建RDB請(qǐng)求。將該請(qǐng)求提交給所述管理工具以得到結(jié)果。所述結(jié)果隨后可以被呈現(xiàn)給用戶。修改的請(qǐng)求將以完全相同的方式進(jìn)行處理以得到數(shù)據(jù)。然后,修改將使用相同地址機(jī)制進(jìn)行處理,以修改/更新RDB內(nèi)容。為了幫助理解本發(fā)明的范圍以及提供對(duì)本發(fā)明教導(dǎo)的運(yùn)用,現(xiàn)在將方法的若干步驟應(yīng)用于示例。這個(gè)示例對(duì)應(yīng)于第二個(gè)出發(fā)點(diǎn)的情況。預(yù)先不存在RDB數(shù)據(jù)庫。其涉及書籍的應(yīng)用。數(shù)據(jù)庫管理者已經(jīng)以圖7的DIT的形式設(shè)計(jì)了層級(jí)樹。所述DIT規(guī)范已經(jīng)是靜態(tài)的。所述DIT包括己被包括的根、11個(gè)頂點(diǎn)/葉子,其對(duì)應(yīng)于U個(gè)條目或11個(gè)靜態(tài)DN:SchemaRoot、AuthorRoot、Author、Work、Book、PublisherRoot、Publisher、ClientRoot、Client、Orders、Order、OrderDescription、Orderstatus。在圖8的列表中提供與圖7的所述DIT等價(jià)的、采用XML語法的文本表示。每個(gè)條目包含RDN和雙親RDN,以便用文本的方式捕獲樹形結(jié)構(gòu)。如樹中所示,包括有定義了屬性及其類型的必要對(duì)象類,例如,在Book條目中定義的BookDescription。BookDescription對(duì)象類包括兩個(gè)屬性字符串類型的"title"和整數(shù)類型的"publisherld"。從這個(gè)直接來自X500模型的文本描述,映射方法提取了以下內(nèi)容-SDN,其為SDIT的直接文本表示;-包含于條目中的對(duì)象類;-以及所述對(duì)象類/條目的屬性,如圖9的XML列表所示。對(duì)應(yīng)于包括至少一個(gè)變量RDN的5個(gè)頂點(diǎn)/條目,提取5個(gè)靜態(tài)DN。需要注意的是,純常量DN,即僅包含常量RDN的條目,確實(shí)產(chǎn)生SDN。這些靜態(tài)DN組成SDIT。對(duì)應(yīng)于出現(xiàn)在初始樹中的對(duì)象類,提取6個(gè)對(duì)象類。最后,從初始定義中提取13個(gè)屬性。屬性是通過其所屬對(duì)象類進(jìn)行區(qū)分的。例如,將"Authorldentity"的屬性"name"與"Clientldentity"的屬性"name"進(jìn)行區(qū)分。它們分別被表示為"Authorldentity.name"和"Cientldentity.name"。每個(gè)屬性除其名稱外還通過類型來完成。由于預(yù)先不存在RDB數(shù)據(jù)庫,因而在映射過程中可以創(chuàng)建表。這在圖IO中示出,圖IO示出了用于創(chuàng)建示例的表的RDB管理命令。這是一種可自動(dòng)進(jìn)行的直截了當(dāng)?shù)牟僮?。?duì)應(yīng)于先前提取出的6個(gè)對(duì)象類,創(chuàng)建6個(gè)表。在對(duì)象類名稱之后命名每個(gè)表。每個(gè)表針對(duì)在對(duì)象類提取中標(biāo)識(shí)的每個(gè)屬性包含一個(gè)列,其可以被稱為"普通"列;每個(gè)表還針對(duì)對(duì)所述對(duì)象類進(jìn)行實(shí)例化的條目/DN中的每個(gè)變量RDN包含一個(gè)列,其可以被稱為"特殊"列。每個(gè)特殊列還被聲明為表的主關(guān)鍵字。例如,"BookDescription"對(duì)象類包括屬性"title"和"publisherld"。兩個(gè)靜態(tài)DN"Authorld"和"ISBN"使用對(duì)象類"BookDescription"。那么,所創(chuàng)建的相應(yīng)"BookDescription"表具有4列"Authorld"、"ISBN"、"title"和"publishers"。"title"和"publisherfd"是普通列,而"Authorld"和"ISBN"列是特殊列,這些特殊列還被聲明為是該表的主關(guān)鍵字。在創(chuàng)建了所述表之后,最后一個(gè)步驟是捕獲并存儲(chǔ)數(shù)據(jù)的映射地址。這一點(diǎn)是在映射過程中通過例如在每個(gè)屬性中存儲(chǔ)表的標(biāo)識(shí)符和18屬性所出現(xiàn)的列的標(biāo)識(shí)符來完成的。例如,屬性"BookDescription.title"包括表和列兩個(gè)字段,表和列分別包含表的名稱"BookDescription"和列的名稱"title",在RDB中分別用于存儲(chǔ)所述屬性。這些字段值可以用于在RDB中對(duì)所述表的內(nèi)容進(jìn)行尋址。那么,RDB的結(jié)構(gòu)準(zhǔn)備就緒以迎接數(shù)據(jù)。換言之,必須已填充數(shù)據(jù)庫。如圖11的XML列表所示那樣應(yīng)用一些條目創(chuàng)建。此處使用兩種命令創(chuàng)建條目的"createEntry"和定義屬性的"setAttribute"。例如,創(chuàng)建條目BALZAC,并且其兩個(gè)屬性是由以下指令序列進(jìn)行實(shí)例化的createEntryAuthorId=BALZAC,OU=Authors,OU=BookshopOnLinesetAttributeAuthorId=BALZAC,OU-Authors,OU-BookshopOnLinename="Honor6deBalzac"setAttributeAuthorld-BALZAC,OU=Authors,OU=BookshopOnLinecountry-"FRANCE"。此后,可以使用數(shù)據(jù)庫,例如,詢問數(shù)據(jù)庫。圖12和13示出了數(shù)據(jù)庫請(qǐng)求的兩個(gè)范例。如圖12所示,第一個(gè)是嘗試讀取條目的簡(jiǎn)單請(qǐng)求。其使用后跟DNAuthorId=BALZAC,OU=Authors,OU=BookshopOnLine的指令"readEntry"。通過移除變量值"BALZAC",接收所述DN的映射應(yīng)用程序首先推導(dǎo)出靜態(tài)DN,艮P:Authorld-,OU=Authors,OU-BookshopOnLine。隨后,將所述SDN與靜態(tài)DN(圖9的列表)進(jìn)行比較以匹配于其中的第一個(gè)。其引用對(duì)象類"Authorldentity",對(duì)象類"Authorldentity"進(jìn)而弓|用屬性"name"和"country"。在對(duì)應(yīng)的屬性描述中,Attribute="AuthorIdentity.name"Type-"String(l6)"Table-"Authorldentity"Column-"name"Attribute-"Authorldentity,country"Type-"String(l6)"Table-"AuthorIdentity"Column-"country"能夠找到其地址,即,對(duì)于兩者都是Table="AuthorIdentity",并且分別是Column-"name"和Column="country"。映射應(yīng)用程序隨后可以構(gòu)建RDB請(qǐng)求,該RDB請(qǐng)求指示搜索表"Authorldentity",嘗試將的主關(guān)鍵字給定的"Authorld"與給定值"BALZAC"進(jìn)行匹配,并嘗試在匹配行中檢索信息列"name"和"country"的內(nèi)容。這樣的RDB請(qǐng)求隨后將提供以下結(jié)果->Authorld-BALZAC,OU-Authors,OU=BookshopOnLine>name=''Honor6deBalzac">country-"FRANCE"圖13的XML列表示出了另一示例,其中列表請(qǐng)求由通配符"*"引入。權(quán)利要求1、一種用于在計(jì)算機(jī)系統(tǒng)中將X500數(shù)據(jù)模型映射到關(guān)系數(shù)據(jù)庫RDB上的方法,其中,X500數(shù)據(jù)模型包括至少一個(gè)條目(7)、至少一個(gè)對(duì)象類和目錄信息樹DIT(6),條目(7)包括至少一個(gè)屬性(8),屬性(8)包括類型(9)和值(10),所述條目(7)收集關(guān)于一個(gè)對(duì)象的信息,對(duì)象類是用于定義存在于描述所述對(duì)象的條目(7)中的所述屬性(8)的類型的模型,所述DIT(6)的頂點(diǎn)是條目(7),每個(gè)條目(7)包括區(qū)別名DN,所述區(qū)別名DN包括所述DIT(6)中的雙親條目的DN以及相對(duì)區(qū)別名RDN,所述相對(duì)區(qū)別名RDN包括適合于所述條目(7)的一個(gè)特別指定的屬性(8),并且,所述關(guān)系數(shù)據(jù)庫RDB包括關(guān)系表(11),每個(gè)表(11)包括若干已命名的列(14),其中的一些列是主關(guān)鍵字,所述主關(guān)鍵字包含唯一地標(biāo)識(shí)對(duì)象數(shù)據(jù)的值,其中,對(duì)象數(shù)據(jù)被存儲(chǔ)在行(15)中,其特征在于所述方法包括以下步驟-構(gòu)建對(duì)象類,每個(gè)對(duì)象類包括其屬性(8)的列表;-構(gòu)建屬性(8),每個(gè)屬性包括其類型(9);-構(gòu)建靜態(tài)目錄信息樹SDIT,所述靜態(tài)目錄信息樹SDIT僅包括靜態(tài)DN,即SDN,所述靜態(tài)DN是僅包括靜態(tài)RDN的DN,所述靜態(tài)RDN是被移除了任何變量值的RDN;以及-通過以下方式將X500數(shù)據(jù)映射到到RDB-將X500對(duì)象類與RDB表(11)相關(guān)聯(lián);以及-將X500屬性(8)與RDB表的列(14)相關(guān)聯(lián),并將具有所述X500屬性(8)的表列(14)的名稱(13)存儲(chǔ),作為指向所述屬性(8)的地址。2、如權(quán)利要求l所述的方法,其中,構(gòu)建對(duì)象類、構(gòu)建屬性和構(gòu)建靜態(tài)目錄信息樹的步驟是通過分別從X500規(guī)范提取這些元素而進(jìn)行的。3、如權(quán)利要求1或2所述的方法,其中,構(gòu)建對(duì)象類、構(gòu)建屬性和構(gòu)建靜態(tài)目錄信息樹的步驟是通過從RDB的分析中創(chuàng)建這些元素而進(jìn)行的。4、如權(quán)利要求1-3中任一項(xiàng)所述的方法,其中,對(duì)X500映射RDB的條目(7)的訪問/請(qǐng)求以及分別對(duì)X500映射RDB的條目的屬性(8)的訪問/請(qǐng)求,由所述條目(7)的DN定義以及分別由所述屬性(8)的條目的DN和所述屬性(8)—起定義,包括以下步驟-通過從所述條目的DN移除任何變量值,從所述DN構(gòu)建靜態(tài)DN,即SDN;-獲取靜態(tài)DIT,即SDIT,以定位匹配靜態(tài)DN;-分別針對(duì)所述條目(7)的所有屬性(8),從所述匹配靜態(tài)DN的屬性(8)中提取與所述條目(7)的所有屬性(8)相對(duì)應(yīng)的表列(14)的映射地址;-構(gòu)建包含所述映射地址的RDB請(qǐng)求;-執(zhí)行請(qǐng)求;以及-得到所述請(qǐng)求的結(jié)果。全文摘要本發(fā)明涉及一種用于將X500數(shù)據(jù)模型映射到關(guān)系數(shù)據(jù)庫上的方法,包括以下步驟構(gòu)建對(duì)象類,每個(gè)對(duì)象類包括其屬性(8)的列表;構(gòu)建屬性(8),每個(gè)屬性(8)包括其類型(9);構(gòu)建靜態(tài)目錄信息樹SDIT,所述靜態(tài)目錄信息樹SDIT僅包括靜態(tài)DN,即SDN,所述靜態(tài)DN是僅包括靜態(tài)RDN的DN,所述靜態(tài)RDN是有任何變量值被移除的RDN;以及通過以下方式將X500數(shù)據(jù)映射到RDB將X500對(duì)象類與RDB表11相關(guān)聯(lián);以及將X500屬性(8)與RDB表的列(14)相關(guān)聯(lián),并將具有所述X500屬性(8)的所述表列(14)的名稱(13)存儲(chǔ),作為指向所述屬性(8)的地址。文檔編號(hào)G06F17/30GK101645092SQ20091016697公開日2010年2月10日申請(qǐng)日期2009年6月3日優(yōu)先權(quán)日2008年6月3日發(fā)明者居伊·雅弗雷,弗朗索瓦·若蓋申請(qǐng)人:阿爾卡特朗訊