创建轻量目录访问协议数据交换格式片段的方法与计算机的制作方法

文档序号:6557919阅读:190来源:国知局
专利名称:创建轻量目录访问协议数据交换格式片段的方法与计算机的制作方法
技术领域
本发明涉及配置和提供额外计算资源的领域,更具体地说,本发明涉及从单个计算机目录服务到分布式目录服务的改良转换。
背景技术
X.500目录模型是独立系统的分布式集合,它们相互协作以提供信息的逻辑数据库,从而提供全局目录服务。关于特定组织的目录信息在目录系统代理(DSA)或目录服务器中被本地维护。该信息是在规定的标准内构造的。对这些标准的遵守使得分布式模型成为可能。一个组织可以保留关于其它组织的信息,并且一个组织可以作为独立系统独立于全局模型而运行。全局模型内运行的DSA具有利用X.500协议与其它DSA交换信息的能力。
互连的DSA形成目录信息树(DIT)。DIT是虚拟分级数据结构。使用QUIPU软件的X.500向导(pilot)引入了“根”DSA的概念,其中“根”DSA代表世界;在其之下定义了“国家”。国家之下定义了“组织”。组织进一步定义了“组织单元”和/或“人民”。
轻量目录访问协议(LDAP)是X.500目录服务的流线化版本。其去除了ISO协议栈,作为替代定义了基于IP协议套的协议。LDAP还简化了X.500的数据编码与命令集,并且定义了用于目录访问的标准API。LDAP已经过若干修订,并且可能再次修订。例如,一些LDAP版本并入了改进安全性的多种措施。
LDAP和X.500标准定义在目录服务中使用的信息模型。目录中的所有信息被存储在“条目”中,每个条目属于至少一个“对象类”。作为示例,在X.500的白页应用中,对象类被定义为国家、组织、组织单元和人民。
条目所属的对象类定义了与特定条目相关联的属性。一些属性是强制性的,其它属性是可选的。系统管理员可以定义他们自身的属性,并且将这些属性向管理方登记,这又将使这些属性可大规模应用。
每个条目具有相对可区别名(RDN),其唯一地标识条目。RDN由DIT信息和实际条目构成。
过去,出于多种原因,利用分布式目录是有问题的。首先,每个后端服务器的配置可能很复杂,尤其是当后端服务器的数目增加的时候。这通常意味着必须被管理员添加到每个后端服务器的额外的配置文件条目、复制协定或转荐对象(referral object)。
其次,数据必须从一个主服务器或LDAP数据交换格式(LDIF)文件转移到每个后端服务器。在配置了空的分布式目录服务器之后,这通常是通过代理服务器或多个代理服务器进行的。将数据加载到空目录通常非常慢,因为每个条目是通过代理服务器逐个被加载的。这样的加载没能利用初始分布式目录提供的并行性。如果能够进行一些并行拷贝和加载,则所述加载将受益良多。
因此,尽管运行中的分布式目录快速响应客户请求,但是从典型单个服务器配置的目录支持移植到这种分布式目录是很麻烦的。

发明内容
本发明提供了一种用于从目录信息树创建至少两个LDIF(轻量目录访问协议数据交换格式)片段的方法、装置和计算机指令。具有LDIF片段名称的设置配置文件被读取,LDIF片段名称定位例如LDIF片段文件的在存储设备中的位置。来自目录信息树(DIT)的连续LDIF条目被读取。基于分割函数,判定每个LDIF条目应当被存储到第一LDIF片段中还是应当被存储到第二LDIF片段中。根据选中的LDIF片段,LDIF条目被写入到选中的LDIF片段。一旦所有的LDIF条目已被分割或以其它方式写入,则包括LDIF片段的最终文件被以并发方式大批加载(bulkloading),每个LDIF片段被加载到一个后端服务器。


权利要求中阐述了被认为是本发明新颖特征的特性。然而,通过参考下文对说明性实施例的详细描述并结合附图,将能最好地理解本发明自身以及优选实施方式、发明的其它目标及其优点。
图1以方框的形式示出了根据本发明说明性实施例的典型分布式目录环境;图2以方框的形式示出了根据本发明说明性实施例的第一实施例设置计算机;图3示出了可以运行实施例的示例性设置配置文件;以及图4示出了由本发明说明性实施例执行的步骤的流程图。
具体实施例方式
图1示出了根据本发明说明性实施例的典型分布式目录网络的框图。第一后端目录服务器103支持域中全部目录的一部分。工作负荷与第二后端目录服务器105共享。每个后端目录服务器可以被简称为后端。组合的后端可以向网络表现为它们就像具有例如共同因特网协议(IP)地址的单个设备。这通常是通过使用代理服务器101来实现的,代理服务器101可以提供安全与负载共享功能。对目录服务的查询可以通过网络连接109到达域,除此之外,网络连接109可以与因特网111连接。这种分布式目录网络往往是利用多于两个后端服务器建立的。
现在参考图2,描述了可以实现本发明的数据处理系统的框图。数据处理系统200是可以作为后端分布式目录服务器、单个目录服务器或代理服务器运行的计算机的示例。数据处理系统200使用外围组件互连(PCI)本地总线体系结构。尽管所描述的示例使用PCI总线,但是也可以使用诸如加速图形端口(AGP)和工业标准体系结构(ISA)的其它总线体系结构。处理器202和主存储器204通过PCI桥208连接到PCI本地总线206。PCI桥208还可以包括用于处理器202的高速缓冲存储器和集成存储器控制器。通过直接组件互连或通过内插板可以实现到PCI本地总线206的附加连接。在所描述的示例中,局域网(LAN)适配器210、小计算机系统接口(SCSI)主机总线适配器212和扩展总线接口214通过直接组件连接而被连接到PCI本地总线206。LAN适配器210可以将计算机(例如,代理101)与图1的一个或多个后端103和105互连,即,一个LAN适配器用于代理、后端103和后端105中的每一个。相反,音频适配器216、图形适配器218和音频/视频适配器219通过插入到扩展槽中的内插板而连接到PCI本地总线206。扩展总线接口214提供了用于键盘与鼠标适配器220、调制解调器222和附加存储器224的连接。SCSI主机总线适配器212提供用于硬盘驱动器226、磁带驱动器228和CD-ROM驱动器230的连接。典型PCI本地总线实现将支持三个或四个PCI扩展槽或内插连接器。
操作系统运行在处理器202上,并且被用来协调和提供对图2中的数据处理系统200内各种组件的控制。操作系统可以是可购买到的操作系统,例如可从Microsoft公司购买到的Windows XP。面向对象编程系统(例如Java)可以和操作系统一道运行,并且提供从数据处理系统200上运行的Java程序或应用对操作系统的调用。“Java”是Sun Microsystems公司的商标。用于操作系统、面向对象编程系统和应用或程序的指令位于存储设备(例如硬盘驱动器226)中,并且可以被加载到主存储器204中以由处理器202执行。
图3示出了可被建立用来引导实施例运行的设置配置文件300的示例。设置配置文件可以包括输入文件名称303;第一片段文件名称305;和第二片段文件名称307。baseDN 302规定了目录信息树中的节点,其中baseDN302规定了DIT的分割点。对于设置配置文件300的情形,baseDN 302具有两个属性对“o=ibm,c=US”。由属性对“c=US”定义的节点是父亲。在该情形中“c=US”没有父亲节点,因为它是DIT的根节点。“o=ibm,c=US”的子节点是这样的节点,其具有包括“o=ibm”左侧的附加属性对的区别名称。子节点的孩子还将具有被添加到左侧的另一属性对。在属性对中具有baseDN 302中所描述的分割点的DIT的所有节点被认为是baseDN 302的后代。缺少baseDN的一个或多个属性对的DIT的节点被认为是baseDN的祖先。这包括父亲“c=US”。
可选地,设置配置文件可以包括第一后端服务器统一资源定位符(URL)309和第二后端服务器URL 311。应当认识到,设置配置文件中提到的许多细节还可以呈现在命令行上,或者还可以在被称为设置配置的数据结构中对运行中的程序可用。因此,设置配置可以在运行实现实施例的程序之前进行手工编辑,或者设置配置可以在运行之时被提供。
图4示出了根据实施例的初始步骤。图4的步骤可以由代理101、后端分布式目录服务器103或后端分布式目录服务器105执行。当运行实施例时,运行步骤的计算机可以被称作设置计算机。实施例可以接收重要的选项和文件,基于此其在命令行上运行。设置程序可以解析(步骤401)命令行,以定位并从命令行获得图3的设置配置文件。此外,还可以从命令行解析出调试级别。为了快速引用重复访问的数据,设置程序可以在通常所说的构造配置对象的过程中,读取、解析并分配来自设置配置文件的变量数据(步骤402)。配置对象可以是一数据结构。
设置计算机可以读取设置配置文件(诸如图3所述),或者以其它方式访问指明至少两个文件(第一片段文件名称和第二片段文件名称)的文件或数据结构。作为数据结构,配置对象可以用作设置配置,设置计算机可以读取该设置配置。此后,设置计算机可以读取(步骤403)目录信息树或例如由输入文件名称303规定的输入文件的LDIF条目。每个LDIF条目可以以连续的顺序读取(步骤403),即,连续的LDIF条目。初始步骤判定连续的LDIF条目是否是图3的baseDN 302的后代(步骤407)。如果连续的LDIF条目是后代,则设置计算机可以以下述方式使用对连续LDIF条目的区别名称(DN)运行的哈希函数,所述方式是将要进行写入的LDIF片段标识为写文件(步骤413)。这样的LDIF片段可以选自包括第一LDIF片段名称和第二LDIF片段名称(如第一后端服务器URL 309详细规定的SERVERA和SERVERB)的片段集合。对于每个LDIF条目的每次选择是选中的写文件。这样的LDIF片段名称可以在设置配置文件中规定。这些文件是将要放置所有后代LDIF条目的目标,但是最初,预期LDIF片段将是空的。
哈希函数将每个后代LDIF条目映射到后端服务器或LDIF片段名称的域,其中LDIF条目可以被放置到后端服务器中。应当认识到,后端服务器可以被列举1个、2个、3个等,并且简单的阵列可以包含LDIF片段名称或其它唯一的标识符,其中利用这样的唯一标识符来访问输出文件,这种阵列由整数所索引。因此,哈希函数所映射(步骤413)到的域可以仅仅是从1到数值“n”的整数,其中“n”是将要被设置以形成分布式目录的服务器的数目。
设置计算机随后将LDIF条目写入或附加到选中的写文件(步骤415)。写入可以是写入硬盘驱动器(图2的226),或者可以是写入设置计算机之外的存储设备,例如这可以通过LAN适配器(图2的210)的设施将数据流传输到伺服计算机而发生。如果存在另一LDIF条目(步骤417),则由设置计算机读取(步骤403)另一LDIF条目。因此,每次读取将推进下一LDIF条目,并且下一LDIF条目或连续的LDIF条目随着每次读取的发生(步骤403)而改变。在没有附加的LDIF条目可用的情况下(步骤417),处理进入大批加载步骤421和423。
如果连续的LDIF条目不是baseDN的后代(步骤407),则条目被专门处理。条目被写入(步骤409)到缺省输出文件中,例如,图3的根片段308。在写入之后,判断是否存在其它的LDIF条目(步骤417)。如果存在,则读取更多连续的LDIF条目(步骤403)。如果不存在,则执行大批加载步骤421和423。图4的一个或多个步骤可以由处理器(图2的202)来实现。
高速离线加载器是“大批负载”实用程序。执行该大批负载实用程序被称为“大批加载”。大批加载指的是将至少两个不同的数据结构从一个长期存储设备(例如,硬盘驱动器)转移到通常位于另一计算机内的另一长期存储设备。
大批加载的第一步骤是将每个LDIF片段拷贝(步骤421)到后端服务器的步骤。可以在设置配置文件中规定要进行拷贝的指定后端服务器。大批加载的第二步骤是将每个LDIF片段加载(步骤423)到其所处的后端。
由于在将这样的写入提交长期存储设备之前程序会将一系列写操作聚集到缓冲器,所以设置计算机可以接收用于写入的目录信息树的第一LDIF条目和目录信息树的第二LDIF条目,其中第一LDIF条目和第二LDIF条目在其所起源的目录信息树中是非连续的。由于非连续,所以意味着在第一LDIF条目和第二LDIF条目之间出现至少一个LDIF条目。在接收第一LDIF条目和第二LDIF条目之后,大批负载可以将组合的LDIF条目拷贝到后端服务器。组合LDIF条目的拷贝可以使得第一LDIF条目和第二LDIF条目在它们到达后端服务器时是连续的。大批负载还可以将第一LDIF条目和第二LDIF条目加载到后端服务器。
考虑到微处理器可以共享处理第一LDIF片段的拷贝操作以及第二LDIF片段的拷贝操作的时间,所以拷贝(步骤421)可以是若干并发的拷贝。因此,从本实施例到后端服务器的拷贝可以实现在有效时间间隔期间到多个后端服务器的多次拷贝,从而引起关于两个或更多个LDIF片段的并行拷贝的发生。类似地,加载(步骤423)可以是若干LDIF片段被并发加载到它们各自的后端服务器中。
表1dn:cn=ServerA,cn=ProxyDB,cn=Proxy Backends,cn=IBMDirectory,cn=Schemas,cn=Configurationcn:ServerAibm-slapdProxyBindMethod:Simpleibm-slapdProxyConnectionPoolSize:5ibm-slapdProxyDN:cn=rootibm-slapdProxyPW:secretibm-slapdProxyTargetURL:ldap://serverA:389objectClass:top
objectClass:ibm-slapdProxyBackendServerobjectClass:ibm-slapdConfigEntrydn:cn=ServerB cn=ProxyDB,cn=Proxy Backends,cn=IBM Directory,cn=Schemas,cn=Configurationcn:ServerBibm-slapdProxyBindMethod:Simpleibm-slapdProxyConnectionPoolSize:5ibm-slapdProxyDN:cn=rootibm-slapdProxyPW:secretibm-slapdPfoxyTargetURL:ldap://sererB:389objectClass:topobjectClass:ibm-slapdProxyBackendServerobjectClass:ibm-slapdCofigEntrydn:cn=ibm split,cn=ProxyDB,cn=Proxy Backends,cn=IBMDirectory,cn=Schemas,cn=Configurationcn:ibm splitibm-slapdProxyNumPartitions:2ibm-slapdProxyPartitionBase:o=ibm,c=usobjectclass:topobjectclass:ibm-slapdConfigEntryobjectclass:ibm-slapdProxyBackendSplitContainerdn:cn=split1,cn=ibm split cn=ProxyDB,cn=Proxy Backends,cn=IBM Directory,cn=Schemas,cn=Configurationcn:split1ibm-slapdProxyBackendServerDN:cn=ServerA,cn=ProxyDB,cn=Proxy Backends,cn=IBM Directory,cn=Schemas,cn=Configurationibm-slapdProxyPartitionIndex:1objectclass:topobjectclass:ibm-slapdConfigEntryobjectclass:ibm-slapdProxyBackendSplitdn:cn=split2,cn=ibm split,cn=ProxyDB,cn=Proxy Backends,cn=IBM Directory,cn=Schemas,cn=Configurationcn:split2ibm-slapdProxyBackendServerDN:cn=ServerB,cn=ProxyDB,cn=Proxy Backends,cn=IBM Directory,cn=Schemas,cn=Configurationibm-slapdProxyPartitionIndex:2objectclass:topobjectclass:ibm-slapdConfigEntryobjectclass:ibm-slapdProxyBackendSplit表1示出了代理配置文件的示例,如果命令行选项或其它输入请求的话,本发明实施例可以生成所述文件。代理配置文件在本领域中被公知用于规定代理计算机应当把流量引导到计算机的支持集的方式。
一般而言,代理配置文件源自设置配置文件。第一条目是含有保持第一LDIF片段的第一服务器的连接信息的LDIF条目。第二条目相同,但是用于第二服务器。因此,最初两个条目向代理描述了图3中规定的ServerA和ServerB,并且在每个条目中的ibm-slapdProxyTargetURL的右手侧被发现。对于不同的制造商,代理配置文件的格式发生变化。其满足代理配置文件向代理服务器描述共同提供目录信息服务的服务器之间的逻辑互连和工作划分。
第三条目是o=ibm,c=us分割点的顶级条目。它标识了分区的数目(对于图3来说为2)以及baseDN。
第四条目代表在分割之前在DIT的兄弟节点之间的分割或分区的第一部分。第五条目代表分割的第二部分。第四和第五条目中的属性有如下意义。ibm-slapdProxyBackendServerDN指的是含有后端服务器所保持的分区的连接信息的条目。ibm-slapdProxyPartitionIndex指的是唯一标识该分区的整数。在我们的示例中,在存在两个分区的条件下,ibm-slapdProxyPartitionIndex可以是1或2,分别指的是DIT的第一分区部分和DIT的第二分区部分。
除了命令行调用之外,应当认识到,设置配置文件可以提供用以生成代理配置文件的命令。例如图3中的“ActionType”行可以被分配至少请求单独或与LDIF片段的生成一起生成的代理配置文件的值“SplitConfig”或类似的文本关键字。
本发明中实现了大批负载的高效率,这是因为,通常LDIF条目在被加载到每个后端服务器的分布式目录数据结构之前被聚集到大的LDIF片段中。因此,与过去的逐个方法相比,可以实现对若干后端服务器中的分布式目录的快捷得多的调度。
重要的是要注意,尽管已经在充分运行的数据处理系统的语境中描述了本发明,但是本领域普通技术人员将意识到,本发明的过程能够以指令的计算机可读媒体等多种形式发布,并且本发明能够同等地应用而不用考虑实际被用来实施该发布的含信号媒体的具体类型。计算机可读媒体的示例包括可记录型媒体(例如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM)和传输型媒体(例如数字和模拟通信链路、使用诸如射频和光波传输的传输形式的有线或无线通信链路)。计算机可读媒体可以采用经解码用于在特定数据处理系统中实际使用的编码格式的形式。
本发明的说明书是用于说明和描述的目的,而不是要穷尽本发明或将本发明限制在所公开的形式中。许多修改和变化形式对本领域普通技术人员来说将是显而易见的。所选择并描述的实施例是为了更好地解释本发明的原理、实际应用,并且使本领域普通技术人员能够理解本发明具有适于所构思的具体用途的多种修改的多种实施例。
权利要求
1.一种用于创建至少两个LDIF(轻量目录访问协议数据交换格式)片段的方法,该方法包括计算机实现的下述步骤读取设置配置,所述设置配置具有与第一LDIF片段相对应的第一LDIF片段名称和与第二LDIF片段相对应的第二LDIF片段名称;从目录信息树(DIT)读取多个连续的LDIF条目;基于分割函数,对每个LDIF条目判定每个LDIF条目应当被写入第一LDIF片段还是应当被写入第二LDIF片段;以及基于分割函数将每个LDIF条目写入第一LDIF片段或第二LDIF片段。
2.如权利要求1所述的方法,还包括将第一LDIF片段大批加载到第一后端服务器;以及将第二LDIF片段大批加载到第二后端服务器,其中第一LDIF片段的大批加载和第二LDIF片段的大批加载并行发生。
3.如权利要求1所述的方法,还包括对每个LDIF条目判定每个LDIF条目是否是BaseDN的后代节点,其中BaseDN规定目录信息树的分割点;以及基于判定每个LDIF条目不是BaseDN的后代节点,将每个LDIF条目写入根输出文件。
4.如权利要求3所述的方法,还包括将根输出文件大批加载到第三后端服务器。
5.如权利要求4所述的方法,还包括将第一LDIF片段大批加载到第一后端服务器;以及将第二LDIF片段大批加载到第二后端服务器,其中第一LDIF的大批加载、第二LDIF的大批加载以及根输出文件的大批加载并行发生。
6.如权利要求5所述的方法,还包括在读取设置配置之前构造设置配置。
7.如权利要求6所述的方法,还包括解析命令行以定位设置配置文件。
8.一种用于创建至少两个LDIF(轻量目录访问协议数据交换格式)片段的设置计算机,包括第一处理器装置,用于读取设置配置,所述设置配置具有与第一LDIF片段相对应的第一LDIF片段名称和与第二LDIF片段相对应的第二LDIF片段名称;第二处理器装置,用于从目录信息树(DIT)读取多个连续的LDIF条目;第一硬盘驱动器,用于基于分割函数,对每个LDIF条目判定每个LDIF条目应当被写入第一LDIF片段还是应当被写入第二LDIF片段;第二硬盘驱动器,用于基于分割函数将每个LDIF条目写入第一LDIF片段或第二LDIF片段。
9.如权利要求8所述的设置计算机,还包括第一局域网适配器,用于将第一LDIF片段大批加载到第一后端服务器;以及第二局域网适配器,将第二LDIF片段大批加载到第二后端服务器,其中第一LDIF片段的大批加载和第二LDIF片段的大批加载并行发生。
10.如权利要求8所述的设置计算机,还包括第三处理器装置,用于对每个LDIF条目判定每个LDIF条目是否是BaseDN的后代节点,其中BaseDN规定目录信息树的分割点;以及第三硬盘驱动器,用于基于判定每个LDIF条目不是BaseDN的后代节点,将每个LDIF条目写入根输出文件。
11.如权利要求10所述的设置计算机,还包括第一局域网适配器,用于将根输出文件大批加载到第三后端服务器。
12.如权利要求11所述的设置计算机,还包括第二局域网适配器,用于将第一LDIF片段大批加载到第一后端服务器;以及第三局域网适配器,用于将第二LDIF片段大批加载到第二后端服务器,其中第一LDIF的大批加载、第二LDIF的大批加载以及根输出文件的大批加载并行发生。
13.如权利要求12所述的设置计算机,还包括用于构造设置配置的第三处理器装置,第三处理器装置可操作地耦合到用于读取所述设置配置的第一处理器装置。
14.如权利要求13所述的设置计算机,还包括第四处理器装置,用于解析命令行以定位设置配置文件。
15.一种计算机可读媒体中的计算机程序产品,用于创建至少两个LDIF(轻量目录访问协议数据交换格式)片段,该方法包括计算机实现的下述步骤用于执行前述方法权利要求中的任何一个方法的步骤的第一指令。
全文摘要
目录树的每个LDIF条目被读取,被分割到LDIF片段的域(对应于后端服务器),并且被写入每个LDIF片段。所述分割可以是通过哈希函数为LDIF条目的迭代建立写文件而完成的。LDIF条目被附加到写文件。后续的LDIF条目被读取。对应的LDIF片段被判定,其不需要与写入了第一LDIF条目的LDIF片段不同。当前的LDIF条目被写入当前选中的写文件。过程持续直到穷尽目录树的所有LDIF条目。LDIF片段每个被拷贝到不同的后端服务器,在后端服务器处,每个LDIF片段可以被加载到分布式目录数据结构中。
文档编号G06F17/30GK1848851SQ200610072110
公开日2006年10月18日 申请日期2006年4月12日 优先权日2005年4月14日
发明者J·M·贝尔, K·M·黑兹尔伍德, R·A·黑勒, M·J·卡瓦格 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1