用于将x500数据模型映射到关系数据库上的方法

文档序号:6579928阅读:326来源:国知局

专利名称::用于将x500数据模型映射到关系数据库上的方法
技术领域
:本发明的
技术领域
是数据库领域。数据库被公知为以实用方式收集和组织数据,以对数据进行存储、修改、检索和分析。
背景技术
:己知有一些数据库组织的范例。以对象的形式提供数据,每个对象是一块数据并聚集了多个与所述对象相关的属性,每个属性包含名称或类型以及数值。最常用的范例之一是关系数据库RDB。在关系数据库中,数据被存储在表中,表也被称为关系。列的名称是属性的名称,每个对象对应于表中的行,所述行包含相应属性的值。关系数据库作为公知已有很长时间。它们己经被证明是一种强大的存储数据的方式。它们在全世界已广为使用,并且许多工具和系统可用于管理这些数据库。此外,许多从业者经过培训,可以创建、管理或使用这些数据库及相关工具。例如SQL査询语言是公知可使用的。然而,在处理复杂的数据组织时,关系范例似乎稍有局限,并且,已开发出新的范例,以提供具有更详尽语义的工具来表述所述的复杂性。X500是往往能满足数据库拥有者和用户的需求的那些备选范例中的一个。在描述数据库的组织时,X500允许更丰富的语法。X500是标准化的。X500提供了一种对用户更友好的方法,即允许数据库管理者容易地描述其数据的结构。还可以使用己知语言UML设计X500规范。RDB和X500环境都具有其自身优势,从这两个环境中获益将是有利的。由此,人们有兴趣来提供X500数据模型向关系数据库模型的映射。源于这种解决方案一定会被需要时间性能且在大量数据上工作的电信应用所使用的事实,其他约束条件是提供与直接的RDB使用等价的性能以及尽可能多地提供对整个数据库大小的优化的能力。WO96/07147(US6052681)描述了这个问题的解决方案。然而,X500信息被整合到RDB表中。这导致了数据库大小上的很大开销。此外,一个X500访问触发了许多数据库访问,从而降低了性能。在US2006/0173873中描述了一种层级/关系转换系统,其使用虚拟目录服务。在US6823338中描述了一种用于将X500访问控制数据映射到关系数据库的方法。在US5333317中描述了一种在X500数据库中进行搜索的方法。然而,这些方法都没有满足所给出的全部约束。
发明内容本发明通过提供RDB的X500模型图提出并解决了该问题。基于管理数据对象的基础RDB,提供了向用户展示对象的映射接口,好像这些对象是根据X500模型进行组织的一样。用户访问对象并管理对象,就好像这些对象是X500对象一样。映射系统随后以透明的方式向与RDB管理系统的接口提供所有必要的动作。本发明的主要创意思想是.使用或创建标准关系数据库来存储数据,并且将与X500模型的结构有关的信息分开存储。这样一来,数据库不会被映射方法修改或影响,并且数据库的大小仅仅依赖于有用数据的大小。此外,提供了与将X500模型映射到关系数据库模型有关的信息,该信息描述了X500实体与关系数据库模式和数据之间的关系。本发明的目的是一种用于在计算机系统中将X500数据模型映射到关系数据库RDB上的方法,其中,X500数据模型包括至少一个条目、至少一个对象类和目录信息树DIT,条目包括至少一个属性,属性包括类型和值,所述条目收集关于一个对象的信息,对象类是用于定义存在于描述所述对象的条目中的所述属性的类型的模型,所述DIT的顶点是条目,每个条目包括区别名DN,所述区别名DN包括所述DIT中的双亲条目的DN以及相对区别名RDN,所述相对区别名RDN包括适合于所述条目的一个特别指定的属性,并且,所述关系数据库RDB包括关系表,每个表包括若干已命名的列,其中的一些列是主关键字,主关键字包含唯一地标识对象数据的值,其中,对象数据被存储在行中,所述方法包括以下步骤-构建对象类,每个对象类包括其属性的列表;-构建属性,每个属性包括其类型;-构建静态目录信息树SDIT,所述静态目录信息树SDIT仅包括静态DN,即SDN,所述静态DN是仅包括静态RDN的DN,所述静态RDN是有任何变量值被移除的RDN;以及-通过以下方式将X500数据映射到到RDB:-将X500对象类与RDB表相关联;以及-将X500属性与RDB表的列相关联,并将具有所述X500属性的所述表列的名称存储,作为指向所述属性的地址。依据本发明的另一特征,构建对象类、构建属性和构建静态目录信息树的步骤是通过分别从X500规范提取所述元素而进行的。依据本发明的另一特征,构建对象类、构建属性和构建静态目录信息树的步骤是通过从RDB的分析中创建这些元素而进行的。依据本发明的另一特征,对X500映射RDB.的条目(7)的访问/请求以及分别对X500映射RDB的条目的属性(8)的访问/请求,由所述条目(7)的DN定义以及分别由所述属性(8)的条目的DN和所述属性(8)—起定义,包括以下步骤-通过从所述条目的DN移除任何变量值,从所述DN构建静态DN,艮卩SDN;-获取静态DIT,即SDIT,以定位匹配静态DN;-分别针对所述属性,从所述匹配静态DN的属性中提取与所述条目的所有属性相对应的表列的映射地址;-构建包含所述映射地址的RDB请求;-执行请求;以及-得到所述请求的结果。通过结合附图而给出的详细描述,本发明的其他特征、细节和优点将变得更加明显,在附图中-图1是映射方法的UML视图;、-图2是X500模型的组织的UML视-图3示出了允许的/不允许的拓扑的示例;-图4示出了X500DIT的层级组织;-图5是DIT的示例;-图6是RDB的示例;-图7-13示出了处理的示例,其中o图7示出了X500模型;o图8示出了针对条目而产生的XML代码;o图9示出了针对映射信息的XML代码;o图10示出了针对RDB表的创建的XML代码;o图11示出了用于创建填充数据库的条目的XML代码;o图12示出了第一査询的范例,;o图13示出了第二查询的范例。具体实施例方式首先,将描述X500模型的特征。X500模型是基于目录信息库DIB的。DIB及其结构在ITU-TRec.X501—ISO/IEC9594-2中定义。为了使本发明易于理解,随后将对X500的主要特征进行解释。DIB由关于对象的信息构成。DIB由(目录)条目组成,其中的每个(目录)条目由关于一个对象的信息的集合构成。每个条目由属性组成。每个属性具有类型和一个值。DIB的条目是以树的形式排列的,该树是目录信息树DIT,其中,顶点表示条目。树中较高的条目(较接近于根)将常常表示诸如国家或组织之类的对象,而树中较低的条目将表示人或应用过程。例如,条目(C-GB,L=Winslow,O-GraphicServices,CN=LaserPrinter)标识了应用实体"LaserPrinter",其具有位置的地理属性。所述条目由四个属性组成。用于指示类型C具有值GB的第一属性C-GB在其间表示出符号,告知对象的C(代表国家)。图3示出了DIT的不同拓扑。DIT—定是如上部的3个方案1、2、3所示的树形结构。下部的2个方案4、5不是树形结构,这2个方案4、5不是DIT的有效方案。图4示出了DIT6的示例,DIT6包括多个顶点/条目7。条目7被详细地示为包括多个属性8。属性8被进一步详细描述为由类型9/值10对组成。每个条目7具有区别名DN,区别名DN唯一且明确地标识条目7。区别名DN的这些属性派生自信息的树形结构。条目7的区别名DN由其上级条目的区别名DN以及来自条目7的特别指定的属性值(区别值)组成,该特别指定的属性值(区别值)也被称为相对DN或RDN。区别名DN也被称为条目7的地址,提供了从给定的DN描述开始对DN进行实例化(构建)或分析(提取)的能力。图5提供了DIT6的示例。示意性条目(C-GB,L=Winslow,0=GraphicServices,CN=LaserPrinterH立于树的右边最低的叶子处。条目的特别指定的属性值是属性CN-LaserPrinter。因此,RDN等价于CN=LaserPrinter。在爬上树的根的同时,所述条目的DN是可以通过附加接续的上级条目的RDN而构建的。随后,往上一层增加0=GraphiCServices。再往上一层增加L-Winslow。根的最后一层最终增加C=GB以提供所述条目的整个DN:{C=GB,L=Winslow,0=GraphicServices,CN=LaserPrinter},作为所有接续的RDN的合并。目录实施了一组规则,以确保在随着时间的修改过程中,DIB保持良好地形成。这些已知为目录模式的规则防止条目具有其对象类的错误的属性类型、防止属性值具有属性类型的错误形式、甚至防止条目具有错误类的下级条目。DIT6包括关于数据库中对象的全部的结构和层级信息。DIT6是数据库的寻址方案,即,用于对条目7的实例进行寻址的DN语法或DN描述。在该寻址方案中,存在条目7之间的层级组织。X500模型还包括与属性8的类型9有关的信息,属性8存在于特定条目7中。这些属性的类型依赖于条目7所描述的对象的类。对象类是用于定义存在于给定的条目7中的所述属性的类型的模型。对象类被定义为表示功能性地链接在一起的属性8的逻辑分组,以及表示该组属性8内的逻辑约束。除定义DIT的DN之外给出的对象类规范允许构建条目7。条目7是一个或多个对象类的实例,g卩,符合由对象类给出的应用模式的一组属性8。举例而言,以下几行-ObjectClass="AuthorIdentity"Attributes-"name,country"ObjectClass="BookDescription"Attributes="title,publisherld"定义了两个示意性对象类。第一对象类Authorldentity包括两个属性名称和国家。作者条目的实例可以有利地使用对象类Authorldentity。当处理所述作者的书目时,对象类BookDescription可以用于对所述作者写的每一本书进行实例化。例如,名称(C-GB,L=Winslow,0=GraphicServices,CN-LaserPrinter}标识了应用条目"LaserPrinter",应用条目"LaserPrinter"在其区别名中具有位置的地理属性。名为{C=GB,L=Winslow,CN=JohnJones}的居民JohnJones在他的区别名中具有相同的地理属性。那么,有利地,地理属性可以是对象类。.图2提供了X500模型的组织的UML视图,以及各个实体之间的关系。可在X500模型中寻址到的实体是条目7和条目中的属性8。对象类是不能由此寻址到的。它们仅仅表示功能上链接在一起的属性的逻辑分组以及该组属性8内的逻辑约束(强制、可选)。其次,将描述关系数据库RDB的特征。图6示出了这种RDB的范例。关系数据库模型基于以下基本概念将数据呈现为关系的集合;将每个关系描述为表lh列14是由其标题13描述的属性;以及行15表示对象。每个表11具有一组属性13,该组属性13共同被视为唯一地标识每个对象的"关键字"。图6的范例示出了被组织为RDB的数据库,其中有四个表ll由其标题12描述Author、Title、Publisher和Author—title。对象被安排在行15中。例如,标题表11的对象/行15包括被表示为列标题13的五个属性13。标题表11的第四行15具有值为"BU7832"的类型"title—id"的属性13。它还具有值为"StraightTalkAboutComputers"的"tMe"属性、值为"business"的"type"属性、值为"19.99"的"price"属性、和值为"1389"的"pub—id,,属性。.关系数据库中的关键字有两个目的通过选择一个或多个列充当关键字,从数据库快速检索信息;以及最后以关键字值对它们进行分类。数据库管理系统DBMS创建索引,该索引仅包含关键字字段内容和相应行15的位置,并且数据库管理系统DBMS维持表11的结构完整性,帮助避免诸如列13中重复记录/对象和冲突值之类的问题。在这些关键字当中,主关键字唯一地标识表11中的对象或行15。例如,在学生表中,由姓+名构建的关键字可能不会给出唯一标识符(例如,学校中有两个或多个JaneDoe)。为了唯一识别每个学生,可以添加特定的StudentID字段以用作主关键字。这是在图6给出的关系数据库示例中完成的,其中,au一id(作者Id)作为AUTHOR关系11的主关键字。在这个示例中,插入具有Id172-32-1176的新作者的尝试可能违反数据库的设计,这是因为au—id是主关键字并由此已经是客户172-32-1176。DBMS必须拒绝这种违反完整性约束而可能导致数据库不协调的事务。外关键字是用在一个表11中以表示相关表中主关键字的值的关键字。虽然主关键字必须包含唯一值,但外关键字可能有重复。例如,如果我们在Student表中使用学生ID作为主关键字(每个学生具有唯一的ID),那么我们可以在Courses表中使用学生ID作为外关键字这是由于每个学生可能完成多于一门课程,Courses表中的学生ID字段(常縮写为Courses.studentID)将有重复值。外关键字是完整性约束,其实施了在另一种关系中从候选关键字提取属性集合的值。例如,在图5的示例中的Title关系11中,属性pub—id是外关键字,其在Publisher关系中提供了向出版者描述的访问。10从以上对X500和关系模型的特征的描述得到,RDB仅提供关系/表以构造数据,从而提供不如X500模型好的语法。当将X500模型映射到RDB数据库时,首先必须提供关于数据的结构信息,其次提供将对象存储在RDB中何处、在什么表中、参照X500模型寻址实体的映射信息。DIT6是X500条目7的层级组织的静态表示。DIT6定义了必须以层级方式如何组织条目7。该层级组织是通过对每个条目7的命名而提供的。X500数据模型的所有条目都是由区别名DN命名的。由于X500数据模型被组织为条目的层级树DIT6,因而每个条目7是以其双亲条目的上下文而命名的。这个名称被称为相对区别名RDN,这是因为它与条目7的双亲条目相关。DIT6是X500条目的层级组织的静态表示。DIT6定义了必须以层级方式如何组织条目。X500数据模型的层级树具有公共根。条目7的区别名DN由条目7的RDN序列以及直到层级树的根的其全部接续双亲条目组成。DN唯一地标识X500树的每个条目7。从条目7的DN,可以推得其包含的条目的DN等(如果有的话)。这种包含关系是由DN承载的唯一关系。DN无法承载或暗示其他关系。可以例如使用字符串表示,对DN进行编码。涉及DN字符串表示的最重要限制是RDN不能是多值数据。另外,输出由RDN序列中每个RDN的字符串编码构成,开始于序列的第一个元素,向前移至最后一个元素。RDN字符串表示由单独AttributeTypeAndValue的字符串编码构成,如下所示将AttributeTypeAndValue编码为AttributeType的字符串表示,随后紧跟等号字符('=',ASCII61),随后紧跟AttributeValue的字符串表示。","可以用作RDN之间的分隔符。如以下示例CN=JohnT.Mills,OCyberSystemConsulting,L=G6teborg,C=SE中所示,空格和句号可以用作RDN的合法字符语法的一部分。这就允许通过包括每个条目7的唯一DN在内的DN列表来描述DIT的树形结构。这是一种针对处理的方便表示。图7包括与DIT6等价的、采用DN形式的、条目的范例列表。稍后将详述这个示例。软件应用程序负责X500视图与关系视图之间的映射。所述应用程序提取并管理所有必要的信息以将X500模型映射到RDB上。该映射包括X500视图与关系模式之间的静态映射,其中将X500对象类映射到RDB表上;将X500属性映射到表列上。关于动态映射,由条目或DN指示的数据对象装载对应于在相应表列中对相应行/记录的检索。当处理创建、更新或删除条目或属性时,其分别对应于在相应表中创建、更新或删除相应的行/记录。对于X500数据模型中的每个条目,我们必须知道条目被映射到的关系数据库表的列表,以及相应的对象类映射。我们必须知道每个对象类的数据被映射到哪些列。我们还必须能够从条目的DN推断出关键字属性的值,以访问该条目被映射到的所有表。所有这些映射的描述必须能够将针对给定条目的请求映射到关系数据库表上的请求的恰当集合上。在X500数据模型中,必须将在任意对象类中定义的每个属性映射到关系数据模型中的关系表的列名称。必须将在任意条目中定义的每个对象类映射到关系数据模型中的关系表。DN语法DNS定义了用于对给定条目进行寻址的DN结构。DN语法被软件应用程序使用以寻找条目被映射到的相应的表,并将接收到的DN中的属性映射到这些表的相应关键字属性。DN语法DNS由RDN描述(相对区别名的描述)的序列组成,其中,在适当时,g卩,当RDN具有变量值/是可变的时,将RDN的每个属性映射到关系表的关键字属性。一个DN语法DNS与一个且仅一个条目相关联,并且一个条目使用将要寻址到的一个且仅一个DN语法。序列的每个RDN描述应当指示相应RDN属性的名称,而如果12RDN具有常量值,举例而言,组织单元,例如OU《AMEL,则还指示该常量的值。另外,在适当时,向不同关键字属性的映射的描述包括与关键字属性相对应的列的名称,以及在必要时根据所使用的语法或语言,还包括表的名称。RDN可以是<RDNattributeName="Nameofaconstantattribute:forexample"OU""〉<VAI>valueoftheconstant</VAI></RDN>或者,<RDNattributeName="NameoftheRDNattribute"columnName-"Nameofthecorrespondingkeyattributeofthetable"/></RDN>以下基于作为示例而定义的X500和关系数据模型提供了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>由此可见,区别常量RDN和变量RDN是重要的。RDN始终对应于具有类型和值的属性。在常量RDN中,值是常量。在变量RDN中,值是变量。常量RDN可以例如定义OU或组织单元。这样的常量RDN定义条目的层级组织并将出现在DIT中。而变量RDN允许对条目进行实例化并且必须被映射到RDB模型中的表列。图1提供了映射过程和所暗示的所有实体之间的交互的UML描述。根据本发明的方法包括以下步骤-构建对象类,每个对象类包括其属性的列表;-构建属性,每个属性包括其类型;-构建静态目录信息树SDIT,静态目录信息树SDIT仅包括静态DN,即SDN,静态DN是仅包括静态RDN的DN,静态RDN是有任何变量值被移除的RDN;以及-通过以下方式将X500数据映射到到RDB:-将X500对象类与RDB表相关联;以及-将X500属性与RDB表的列相关联,并将具有所述X500属性的所述表列的名称存储,作为指向所述属性的地址。构建属性和对象类的步骤是重要的,以捕获数据的拓扑。典型地,这是X500模型中存在的特征而不是RDB模型中存在的特征。仅存在于X500模型中的另一点是条目的层级。这被包括在DIT6中,并且不存在于RDB视图中,RDB视图中无法找到等价物。一种捕获所述条目层级的方式是保持DIT6。本发明的重要特征在于不是保持整个DIT,而是仅保持指示层级的那部分。有利地,可以将DIT6的所有变量部分分割开来,以便仅保持静态目录信息树SDIT。这样的SDIT仅包括静态DN,即,静态DN是仅包括静态RDN的DN,静态RDN是被移除了任何变量值的RDN。在移除后,由于不同的条目仅仅因它们的值而不同,因而可能出现多个相同的静态DN。仅保持每个SDIT的一个SDN。这种"分层"大大减小了SDIT的大小。SDIT还适于查询数据库,这将在稍后进行解释。例如,与前述示例的DN{C=GB,L=Winslow,0=GraphicServices,CN=LaserPrinter}相对应的静态DN将成为{C=,L=,0=,CN=},这是因为这个条目的四个RDN是变量RDN。因此,包含数据对象的RDB被拓扑信息"对象类和属性"以及拓扑/层级信息"静态DIT"扩大。这些信息可以用于针对查询对数据库进行扫描。其他信息必须由作为映射地址本身的映射应用程序进行维持。通过将X500对象类与RDB表相关联,将X500数据映射到RDB。这一点在涉及到实现数据库本身时是很重要的,这将在稍后进行解释。但是,X500数据与RDB数据之间的真正链接是通过将X500属性映射到RDB表列来维持的。这一点是可以通过存储具有所述X500属性的所述表列的名称来实现的。那么,这样的名称可以用作指向所述属性的地址。有利地,可以将该名称存储在先前构建的属性中甚至存储在骨干SDIT中。对于所有这些所定义的元素,随后可以通过映射应用程序将基础RDB作为X500数据库进行观看和访问,并且可以通过映射地址来链接两个环境的元素。为了得到这样的映射应用程序,可能有依赖于数据库历史的两个出发点。对应于权利要求3的第一出发点假设存在已构造和填充了的RDB。为了利用现有的情况,RDB被保持原样,并且必须添加X500模型以向用户提供X500视图。对应于权利要求2的第二个出发点假设预先不存在RDB,但存在数据的X500组织以及使用RDB管理工具的意愿,但是,RDB数据库是将要构建和填充的。在第二点中,数据的组织包含于X500模型中。所述模型提供了所有信息对象类、属性和DIT或SDIT。仅需要将这些信息从所述模型中提取出来。需要注意的是,DIT不需要"填充"有数据库的整个条目,并且,数据库创建器可以直接以静态DIT的方式给出层级组织的规范。如果DIT被填充,即,其对应于已被填充的X500数据库,则可以首先对其"分层"。由于预先不存在RDB,因而可以将其调整为匹配于X500组织,并改善将来的映射。然后,针对每个对象类创建RDB表。这个表的列是由其属性的列表定义的。随后,通过根据对象类创建表,以及在相应的属性中存储表名称和表列,来完成映射。RDB随后可以被填充,无论是直接通过RDB直接访问,还是通过具有X500视图的映射应用程序。当开始于已被填充的DIT或X500完成数据库时,必须以己知的方式传送所有数据。在第一点中,所有的都始于已有的RDB。问题产生于RDB完全不包含拓扑或层级信息的事实。那么,可将两种选择提供给管理者。第一个选择在于,从RDB自动推得所需的信息,即,对象类、属性和SDIT。这一点是可以通过例如针对每个表构建对象类、针对这样的表的每个列构建属性、以及构建DIT来完成的。由于在RDB中无法找到层级信息,因而无法自动创建层级信息。那么,将不会创建静态RDB,并且,SDIT将在于一级的树,该树包括根,其中所有条目直接链接到所述根。第二个选择是利用映射的机会来扩大数据库的组织。在这种情况下,数据库管理者可以增加一些层级并创建具有多个所增加的层的SDIT。这样的操作必须由知道应如何组织数据的操作者来手动执行。由于最初不存在这样的信息,因而必须添加该信息并检査所有的一致性。无论以何种方式获得,我们从现在开始都假设所有的映射信息是可用的并且映射应用程序已准备就绪。这样的映射应用程序是以如下方式使用的。目的是在向用户提供X500的同时访问存储在RDB中的对象。愿意访问给定条目的所述用户将条目或条目的属性作为他请求的参数来提供。为了用X500视图来完成这一点,他提供了DN。该DN或者是所述条目的DN,或者是所述属性的条目的DN,由所述属性的指示完成。请求可以是咨询(读取)或修改(创建、修改或删除)请求。需要等价地考虑所有这些请求,这是因为此处的主要目的是为了解释映射,而映射保持相同。所述映射应用程序所操作的请求过程包括以下步骤。通过应用与前述相同的分层过程,即通过移除所述DN的所有变量值,来从所述给定的DN构建/提取静态DN,即SDN。然后,将所述SDN与SDIT的SDN进行比较,直到所述SDN与所述SDIT的SDN之一相匹配为止。在给定所述匹配SDN的情况下,映射应用程序可以引用与所述SDN相对应的对象类以及所述SDN的属性,其中每个变量RDN对应于一个属性。对于每个所述属性,将所述属性的地址(表和列)存储在RDB中。在请求针对属性的情况下,使用单个地址。在条目的情况下,使用所述条目的所有属性的地址。基于所述地址,使用RDB管理工具的RDB请求语言,映射应用程序构建RDB请求。将该请求提交给所述管理工具以得到结果。所述结果随后可以被呈现给用户。修改的请求将以完全相同的方式进行处理以得到数据。然后,修改将使用相同地址机制进行处理,以修改/更新RDB内容。为了帮助理解本发明的范围以及提供对本发明教导的运用,现在将方法的若干步骤应用于示例。这个示例对应于第二个出发点的情况。预先不存在RDB数据库。其涉及书籍的应用。数据库管理者已经以图7的DIT的形式设计了层级树。所述DIT规范已经是静态的。所述DIT包括己被包括的根、11个顶点/叶子,其对应于U个条目或11个静态DN:SchemaRoot、AuthorRoot、Author、Work、Book、PublisherRoot、Publisher、ClientRoot、Client、Orders、Order、OrderDescription、Orderstatus。在图8的列表中提供与图7的所述DIT等价的、采用XML语法的文本表示。每个条目包含RDN和双亲RDN,以便用文本的方式捕获树形结构。如树中所示,包括有定义了属性及其类型的必要对象类,例如,在Book条目中定义的BookDescription。BookDescription对象类包括两个属性字符串类型的"title"和整数类型的"publisherld"。从这个直接来自X500模型的文本描述,映射方法提取了以下内容-SDN,其为SDIT的直接文本表示;-包含于条目中的对象类;-以及所述对象类/条目的属性,如图9的XML列表所示。对应于包括至少一个变量RDN的5个顶点/条目,提取5个静态DN。需要注意的是,纯常量DN,即仅包含常量RDN的条目,确实产生SDN。这些静态DN组成SDIT。对应于出现在初始树中的对象类,提取6个对象类。最后,从初始定义中提取13个属性。属性是通过其所属对象类进行区分的。例如,将"Authorldentity"的属性"name"与"Clientldentity"的属性"name"进行区分。它们分别被表示为"Authorldentity.name"和"Cientldentity.name"。每个属性除其名称外还通过类型来完成。由于预先不存在RDB数据库,因而在映射过程中可以创建表。这在图IO中示出,图IO示出了用于创建示例的表的RDB管理命令。这是一种可自动进行的直截了当的操作。对应于先前提取出的6个对象类,创建6个表。在对象类名称之后命名每个表。每个表针对在对象类提取中标识的每个属性包含一个列,其可以被称为"普通"列;每个表还针对对所述对象类进行实例化的条目/DN中的每个变量RDN包含一个列,其可以被称为"特殊"列。每个特殊列还被声明为表的主关键字。例如,"BookDescription"对象类包括属性"title"和"publisherld"。两个静态DN"Authorld"和"ISBN"使用对象类"BookDescription"。那么,所创建的相应"BookDescription"表具有4列"Authorld"、"ISBN"、"title"和"publishers"。"title"和"publisherfd"是普通列,而"Authorld"和"ISBN"列是特殊列,这些特殊列还被声明为是该表的主关键字。在创建了所述表之后,最后一个步骤是捕获并存储数据的映射地址。这一点是在映射过程中通过例如在每个属性中存储表的标识符和18属性所出现的列的标识符来完成的。例如,属性"BookDescription.title"包括表和列两个字段,表和列分别包含表的名称"BookDescription"和列的名称"title",在RDB中分别用于存储所述属性。这些字段值可以用于在RDB中对所述表的内容进行寻址。那么,RDB的结构准备就绪以迎接数据。换言之,必须已填充数据库。如图11的XML列表所示那样应用一些条目创建。此处使用两种命令创建条目的"createEntry"和定义属性的"setAttribute"。例如,创建条目BALZAC,并且其两个属性是由以下指令序列进行实例化的createEntryAuthorId=BALZAC,OU=Authors,OU=BookshopOnLinesetAttributeAuthorId=BALZAC,OU-Authors,OU-BookshopOnLinename="Honor6deBalzac"setAttributeAuthorld-BALZAC,OU=Authors,OU=BookshopOnLinecountry-"FRANCE"。此后,可以使用数据库,例如,询问数据库。图12和13示出了数据库请求的两个范例。如图12所示,第一个是尝试读取条目的简单请求。其使用后跟DNAuthorId=BALZAC,OU=Authors,OU=BookshopOnLine的指令"readEntry"。通过移除变量值"BALZAC",接收所述DN的映射应用程序首先推导出静态DN,艮P:Authorld-,OU=Authors,OU-BookshopOnLine。随后,将所述SDN与静态DN(图9的列表)进行比较以匹配于其中的第一个。其引用对象类"Authorldentity",对象类"Authorldentity"进而弓|用属性"name"和"country"。在对应的属性描述中,Attribute="AuthorIdentity.name"Type-"String(l6)"Table-"Authorldentity"Column-"name"Attribute-"Authorldentity,country"Type-"String(l6)"Table-"AuthorIdentity"Column-"country"能够找到其地址,即,对于两者都是Table="AuthorIdentity",并且分别是Column-"name"和Column="country"。映射应用程序随后可以构建RDB请求,该RDB请求指示搜索表"Authorldentity",尝试将的主关键字给定的"Authorld"与给定值"BALZAC"进行匹配,并尝试在匹配行中检索信息列"name"和"country"的内容。这样的RDB请求随后将提供以下结果->Authorld-BALZAC,OU-Authors,OU=BookshopOnLine>name=''Honor6deBalzac">country-"FRANCE"图13的XML列表示出了另一示例,其中列表请求由通配符"*"引入。权利要求1、一种用于在计算机系统中将X500数据模型映射到关系数据库RDB上的方法,其中,X500数据模型包括至少一个条目(7)、至少一个对象类和目录信息树DIT(6),条目(7)包括至少一个属性(8),属性(8)包括类型(9)和值(10),所述条目(7)收集关于一个对象的信息,对象类是用于定义存在于描述所述对象的条目(7)中的所述属性(8)的类型的模型,所述DIT(6)的顶点是条目(7),每个条目(7)包括区别名DN,所述区别名DN包括所述DIT(6)中的双亲条目的DN以及相对区别名RDN,所述相对区别名RDN包括适合于所述条目(7)的一个特别指定的属性(8),并且,所述关系数据库RDB包括关系表(11),每个表(11)包括若干已命名的列(14),其中的一些列是主关键字,所述主关键字包含唯一地标识对象数据的值,其中,对象数据被存储在行(15)中,其特征在于所述方法包括以下步骤-构建对象类,每个对象类包括其属性(8)的列表;-构建属性(8),每个属性包括其类型(9);-构建静态目录信息树SDIT,所述静态目录信息树SDIT仅包括静态DN,即SDN,所述静态DN是仅包括静态RDN的DN,所述静态RDN是被移除了任何变量值的RDN;以及-通过以下方式将X500数据映射到到RDB-将X500对象类与RDB表(11)相关联;以及-将X500属性(8)与RDB表的列(14)相关联,并将具有所述X500属性(8)的表列(14)的名称(13)存储,作为指向所述属性(8)的地址。2、如权利要求l所述的方法,其中,构建对象类、构建属性和构建静态目录信息树的步骤是通过分别从X500规范提取这些元素而进行的。3、如权利要求1或2所述的方法,其中,构建对象类、构建属性和构建静态目录信息树的步骤是通过从RDB的分析中创建这些元素而进行的。4、如权利要求1-3中任一项所述的方法,其中,对X500映射RDB的条目(7)的访问/请求以及分别对X500映射RDB的条目的属性(8)的访问/请求,由所述条目(7)的DN定义以及分别由所述属性(8)的条目的DN和所述属性(8)—起定义,包括以下步骤-通过从所述条目的DN移除任何变量值,从所述DN构建静态DN,即SDN;-获取静态DIT,即SDIT,以定位匹配静态DN;-分别针对所述条目(7)的所有属性(8),从所述匹配静态DN的属性(8)中提取与所述条目(7)的所有属性(8)相对应的表列(14)的映射地址;-构建包含所述映射地址的RDB请求;-执行请求;以及-得到所述请求的结果。全文摘要本发明涉及一种用于将X500数据模型映射到关系数据库上的方法,包括以下步骤构建对象类,每个对象类包括其属性(8)的列表;构建属性(8),每个属性(8)包括其类型(9);构建静态目录信息树SDIT,所述静态目录信息树SDIT仅包括静态DN,即SDN,所述静态DN是仅包括静态RDN的DN,所述静态RDN是有任何变量值被移除的RDN;以及通过以下方式将X500数据映射到RDB将X500对象类与RDB表11相关联;以及将X500属性(8)与RDB表的列(14)相关联,并将具有所述X500属性(8)的所述表列(14)的名称(13)存储,作为指向所述属性(8)的地址。文档编号G06F17/30GK101645092SQ20091016697公开日2010年2月10日申请日期2009年6月3日优先权日2008年6月3日发明者居伊·雅弗雷,弗朗索瓦·若盖申请人:阿尔卡特朗讯
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1