CN1659547A - 具有可插入体系结构的键值仓库 - Google Patents
具有可插入体系结构的键值仓库 Download PDFInfo
- Publication number
- CN1659547A CN1659547A CN038078562A CN03807856A CN1659547A CN 1659547 A CN1659547 A CN 1659547A CN 038078562 A CN038078562 A CN 038078562A CN 03807856 A CN03807856 A CN 03807856A CN 1659547 A CN1659547 A CN 1659547A
- Authority
- CN
- China
- Prior art keywords
- warehouse
- client
- buffer memory
- assembly
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了管理键值对的系统和技术,这种系统和技术使用的体系结构不把其用户限制到任何特定的平台或存储子系统。根据本发明的一个方面,仓库是可移植的,其体系结构无须根据环境和该仓库使用的平台而做出改变。相反的,该体系结构中与特定平台相关的部分仅限于在该仓库的存储抽象层中的插件。这些插件提供同样的存储抽象接口给该仓库的其它层,但在实现时与不同的平台和存储子系统交互。因此,当从一个平台迁移到另一个平台时,该仓库只简单的改变插件就可以调用持久性存储操作。
Description
相关申请
本申请主张以下美国临时专利申请的优先权,其全部内容结合于此作为参考:
美国临时专利申请号60/370,963,标题为“在全局命名空间中的个性化内容(Personalized Content Within a Global Namespace)”,2002年4月8日提交;以及
美国临时专利申请号60/372,186,标题为“在全局命名空间中实现个性化内容的方法(Approach for Personalized Content Within aGlobal Namespace)”,2002年4月12日提交。
技术领域
本发明涉及数据仓库,更具体而言,涉及存储键值对的数据仓库。
背景技术
许多类型的信息通常以键值对的形式存储,其中该对中的“键”部分是一个标签,而该对中的“值”部分提供与该标签相关的值。比如,有关计算机系统的配置信息包括下面的键值对:(“内存”,512M)表明该计算机系统的动态内存的容量是512兆字节。
典型的,需要储存大量的键值对的软件程序或系统会包括一个仓库来储存该信息,并包括管理该仓库的逻辑。当这些仓库被用于存储配置数据时,这些仓库通常被称作注册表。
当每个需要键值对仓库的程序或系统实现并管理其自身的仓库时,其结果是专用仓库的不断增长以及大量重复性的工作。为了解决该问题,键值对仓库设计者为其仓库提供了应用编程接口(API)以允许特定的第三方应用使用他们的仓库。比如,操作系统可能允许为该操作系统设计的第三方应用来储存键值对到由该操作系统管理的仓库。
不幸的是,这种“开放”的仓库不提供通用的解决方案,原因在于它们通常与特定的平台或存储子系统相关,因此它们不能或不便于用作通用目标的键值对仓库。由于它们被设计成使用特定的有关环境和运行平台的假设条件,他们通常不能被不符合这些假设条件的应用或系统所使用。
附图说明
本发明参考附图以举例方式进行描述而不是以限制性方式加以描述,其中同样的参考数字指的是同样的部件,其中:
图1的方框图是根据本发明的实施例的键值对仓库;以及
图2的方框图是描述本发明实例所实现的计算机系统。
具体实施方式
本文描述了提供集群级访问的共享的,键值对仓库的方法和系统。在下面的描述中,出于解释的目的,大量的具体细节被提出以便提供对本发明透彻的理解。但是,很显然,本发明可以在没有这些具体细节的情况下实现。在其它情形下,已知的结构和设备被显示在方框图中以避免对本发明不必要的阻碍。
功能概述
提供了使用不限制其用户到任何特定平台或存储子系统的体系结构管理键值对的技术。根据其一个方面,仓库是可移植的,其体系结构无须根据环境和该仓库使用的平台而做出改变。相反的,该体系结构中与特定平台相关的部分仅限于在该仓库的存储抽象层(storage abstraction layer)中的插件。每个插件提供同样的存储抽象接口给该仓库的其它层,但在实现时与其它插件不同的平台和存储子系统交互。
另外,该体系结构的可插入特性导致交叉平台的可移植性。比如,该仓库可以用于任何数量的通用操作系统/硬件组合,比如Solaris/SUN,AIX/IBM,HPUX/HP,WINDOWS/DELL,等。因此,当从一个平台迁移到另一个平台时,该仓库只简单的改变插件就可以调用持久性存储操作。
根据一个方面,该仓库的性能通过维护有关键值对信息的主缓冲区以及有关键值对信息的本地缓冲区而得到增强。根据一个实施例,在每个节点管理单一本地缓冲区,而与任何给定节点的缓冲区相关的客户端不专属于该仓库。比如,某节点的缓冲区与在大量使用该仓库的节点的客户端相关,通过让该客户端发出适当的对仓库的调用(call)。
系统概述
参照图1,该方框图描述了根据本发明的实例,提供集群范围的访问共享的键值对仓库118的系统。具体而言,图1描述了包括两个节点102和104的集群100。所显示的两节点集群实例简化了对系统的描述。但是,此处描述的本发明和技术不局限于任何特定数量的节点的集群。
此处使用的术语“集群”指任何能够彼此通信的一组节点。集群可以包括,比如说,一组联网计算机。在某些情形下,集群由集群管理软件作为一个单元进行管理。集群管理软件是一个能够利用键值对仓库118的软件系统的例子。具体而言,集群管理软件可以使用键值对仓库118作为集群注册表,来储存由集群管理软件管理的集群的配置信息。但是,应该注意集群管理软件只是能够使用仓库118的客户(client)的一个例子。本发明不局限于任何特定类型的客户。相反,在许多情形下,各种分离类型的客户能使用仓库118。
再次参照图1,节点102包括仓库118的两个客户106、108,而节点104包括仓库118的一个客户110。客户106、108和110被称为“客户”是因为它们请求仓库118的服务以便管理它们感兴趣的键值对。客户106、108和110一般代表任何形式的需要存储键值对的软件程序,而并不局限于任何特定类型的软件程序。
在图1描述的实施例中,仓库118包括几个层次的功能。具体的,仓库118包括API层112、服务抽象层(service abstraction layer)114、消息和缓存层116、存储抽象层150、以及存储子系统160。一般的,API层112代表面向所有客户106、108和110的通用接口,通过该接口客户可以进行调用,以储存、访问和管理在仓库118中的键值对。正如后面将详细描述的,在API层112中的例程为客户106、108和110提供了独立于实际存储子系统160的接口,该实际存储子系统用来持久地储存键值对。
服务抽象层114包括的例程用来确定如何处理API层112的例程所接收到的调用。消息和缓存层116包括的例程可以被仓库118的组件调用,以便与仓库118的其它组件通信。另外,消息和缓存层116包含的例程可以管理键值对的缓存,从而使得并非所有来自客户的请求都需要访问存储子系统160。
存储抽象层150包括插件152和154。每个插件提供同样的存储访问API给层114和116中的例程。但是,实现通用存储API的例程根据与插件相关的存储子系统的类型的不同而导致其插件也不同。存储子系统160代表任何形式的能够存储键值对的可靠的存储系统。后面将详细的描述每个层。
主控和缓存组件
根据一个实施例,仓库118的一个组件被指派为主控组件。主控组件的消息和缓存层116的例程能独占(排它)访问存储抽象层150。主控组件还管理用来存放来自仓库118的信息的主控缓存。在图1描述的实施例中,组件174是主控组件。因此,组件174中的消息和缓存层116的例程管理主控缓存148,并能独占访问驻留在存储抽象层150中的插件152和154。
集群中的每个节点还包括单一“缓存组件”。节点的缓存组件维护来自仓库118的信息。与缓存组件相关联的客户此处被称为“缓存层客户”。根据一个实施例,主控组件是其驻留的节点的缓存组件。
在所描述的实施例中,组件172是节点102的缓存组件,因此它管理着缓存138。客户108与组件172相关联,是节点102的缓存层客户。组件170同样驻留在节点102,不是缓存组件,因此没有维护其自己的缓存来存放来自仓库118的信息。
根据一个实施例,客户建立其所关联的组件为缓存组件的方式是基于通过该客户调用API层112的例程传递信息给仓库118。比如,客户108使其自己成为节点102的缓存层客户的方式是通过适当的调用API 130。该调用传递给API 130一个值来指示组件172将成为节点102的缓存组件。
因为缓存层客户通常能更快的访问由缓存组件管理的缓存,所以在特定的节点的缓存层客户最好是使用仓库118最频繁的客户。比如,客户106和客户108分别代表两种不同类型的客户,其中客户108更频繁的使用仓库118而客户106相对少的使用仓库118。在这些情况下,客户108被选择为缓存层客户。那么客户108就可以被指派对组件172进行适当的调用以便导致组件172成为节点102的缓存组件。
根据另一个实施例,节点102中客户使用仓库的实际情况被监控,使用仓库118最频繁的组件被动态的选择为缓存组件。在该实施例中,甚至提供例程根据与该组件关联的客户的变化的访问模式来动态的把缓存责任从一个组件传递给另一个组件。
当对仓库执行写操作时,各种技术可以被使用来管理缓存。比如,一个实施例使用“写通”方法在写操作期间维护缓存。本发明不局限于任何特定的方法在写操作期间管理缓存。
在图1所描述的实施例中,集群100有单一主控组件174有权限与存储抽象层150进行交互。因为抽象层150仅能从单一主控组件174中访问,与资源共享和并发控制相关的各种问题都可以避免。但是,另一个实施例可以包括一组主控组件有权限直接与存储抽象层150交互。各种并发控制技术可以被使用来避免该系统中的潜在的有害的交互。比如,键的命名空间可以被分区,每个主控组件被指派一个命名空间分区。在该实施例中,每个主控组件仅被允许访问存储抽象层150来操作分配给主控组件的命名空间分区的键。
API层
希望使用仓库118来管理键值对的客户通过调用在API层112的例程实现这一目的。根据一个实施例,在API层112中的例程提供仓库118支持的所有的操作的接口。在一个实施例中,API层112的例程执行参数验证和错误检测。如果对API层112的例程的调用传递测试在API层112被执行,接着调用被向下传递给在服务抽象层114的适当例程。
API层112的例程可能以代码库的形式提供给客户的开发者。开发者,在其客户端上,包括代码来调用在代码库中的例程。接着,在客户代码被编译时代码库被静态链接到客户代码,或者在运行时被动态的链接到客户代码。
根据一个实施例,API层112提供的接口包括为多种编程语言的接口。比如,API层112可以提供JAVA API供客户用户使用或用JAVA编程语言编译,以及提供C语言API供客户用户使用或用C编程语言编译。
根据另一个实施例,API层112只提供C语言接口,而仓库118根据所接收的用其它语言编写的客户调用,包括一个或多个附加的模块来调用API层112。这些模块有效地把来自客户的某种语言的调用转换成API层112所提供的接口所支持的语言的调用。比如,该模块可以提供基于JAVA的仓库API到基于JAVA的客户,并接着使用JNI包装器把调用转换成基于JAVA的仓库API调用通过该模块转换成由API层112提供的基于C的仓库接口。
服务抽象层
服务抽象层114确定如何处理来自客户的调用。有多种因素可以确定如何处理任何给定的调用。这些因素包括,举例而言,发起调用(making call,进行调用)的客户的标志符,施加到该调用上的访问模式,以及由该调用所请求的操作的类型。访问模式将在下面被进一步详细描述。
根据这些因素,在服务抽象层114中的例程可以访问本地缓存,访问主控缓存,或调用在消息和缓存层116中的消息例程来发送请求到仓库118的不同的组件。如果在服务抽象层114中所调用的例程不是在缓存组件或主控组件中,那么在服务抽象层114中所调用的例程就调用在消息和缓存层116中的例程来传递请求到本地缓存组件。
如果服务抽象层114中所调用的例程是在缓存组件中,那么服务抽象层114中所调用的例程就检查本地缓存看是否该缓存包含了回答该请求的信息。如果本地缓存没有包含回答该请求的信息,那么服务抽象层114中所调用的例程就调用在消息和缓存层116中的例程来传递请求到主控组件。
如果服务抽象层114中所调用的例程是在主控组件中,那么服务抽象层114中所调用的例程就检查主控缓存看是否该缓存包含了回答该请求的信息。如果主控缓存没有包含回答该请求的信息,那么服务抽象层114中所调用的例程就调用在消息和缓存层116中的例程来激活在存储抽象层150中的适当的插件以便从某个存储子系统160中的持久存储器中提取信息。
根据一个实施例,服务抽象层114中的例程所调用的位于消息和缓存层116的消息例程的所有调用都是无状态的。在该实施例中,服务抽象层114通过在消息和缓存层116的消息例程发送的每个消息都包含执行预期操作所必须的所有信息。
根据一个实施例,缓存组件和主控组件的服务抽象层114的例程具有验证客户的责任。在验证操作期间,该例程确定该客户是否是值得“信任”的。没有被信任的客户不会被允许执行特定类型的操作。
消息和缓存层
消息和缓存层116包括的例程用来访问和管理缓存,以及用来与仓库118中的其它组件通信。根据一个实施例,在一个节点中只能有一个组件使用缓存例程。节点上的其它组件间接的使用缓存,其方式是转发请求给管理缓存的组件。
根据一个实施例,缓存例程如何满足请求对调用缓存例程的例程而言是完全透明的。具体而言,一旦接收到请求,缓存例程就检查它管理的缓存。如果缓存中包含满足该请求所需的信息,那么缓存例程就从缓存中提取信息并提供该信息给调用例程。但是,如果缓存中不包含满足该请求所需的信息,那么缓存例程就通过其它方式获得所需的信息。比如,如果缓存例程属于缓存组件,那么缓存例程就调用消息例程从主控组件请求所需的信息。如果缓存例程属于主控组件,那么缓存例程就调用适当的存储抽象层插件从存储子系统提取所需的信息。该缓存例程除了提供所请求的信息返回调用例程之外,还可能导致该信息被存储在它管理的缓存中。
根据一个实施例,在消息和缓存层116中的消息例程被配置成按照网络字节顺序发送,至少当该消息必须穿越在集群中的平台边界时。比如,假设节点102运行在第一个平台,而节点104运行在第二个平台。在该情形下,在节点102中的消息例程以网络字节顺序发送消息给节点104中的消息例程。类似的,在节点104中的消息例程以网络字节顺序发送消息给节点102中的消息例程。通过用网络字节顺序发送消息来穿越平台边界,发送者发送的消息可以被驻留在不同于发送者的平台的接收者精确的重新组建。
存储抽象层
根据一个实施例,存储抽象层150提供的例程完全抽象于后端存储器的类型,该后端存储器被用于持久地储存由仓库118管理的键值对信息。比如,插件152和插件154两者都提供相同的接口给主控组件174的消息和缓存层116中的缓存例程,即使插件152被设计成操作完全与插件154的存储子系统不同的存储子系统。尽管插件152和插件154提供了相同的接口给缓存例程,但是实现该接口的例程的逻辑根据该插件所设计的与之交互的后端存储器的类型的不同而可能完全不同。
重要的是,由于所有平台相关的逻辑都包含在存储抽象层150的插件中,所以仓库118的所有其它层的例程都不是平台相关或存储子系统相关的。这样,使用仓库118的客户可以有效的与平台相关的设计细节所隔离,从而使包括客户和仓库118的高层组件在内方便的跨越平台。
由于存储抽象层150使用一个或多个提供相同接口的插件实现,仓库118不局限于任何特定的后端子系统或平台。任何子系统或平台都能够提供与所使用的公用接口相关的功能。该后端平台包括,但不限于,LDAP,MSCS,共享原设备,在无共享集群中的原设备和/或私有文件系统文件,集群文件系统(Cluster File Syetem,CFS)以及分布式配置库。
当仓库118被请求执行操作来请求访问在持久性存储中的键值对时,就会发起一个调用(通常来自主控组件的消息和缓存层的缓存例程)给存储抽象层150。根据一个实施例,仓库118根据一个或多个不同的可能因素选择特定的插件来调用。比如,仓库118可以包含其值由管理员设置的环境变量,该环境变量的值指示哪种类型的存储子系统被用于持久存储仓库118所管理的数据。另外,仓库118可以包括发现逻辑来检测哪个存储子系统对仓库118的特定安装而言是可用的。如果仅有一种类型的子系统可用,那么就选择与该类型的子系统相关的插件。如果有几种类型都可用,那么仓库118就根据其它的各种原因来选择仓库118。这些原因包括但不限于存储容量或存储子系统160的可用剩余空间。一旦做出了选择,适当的插件就被动态的装载到易失性内存中,并调用在该插件中的例程。
由于每个插件被设计成与不同类型的后端存储系统交互,插件的选择就确定了后端平台的特性,在该后端平台上持久地储存由仓库118管理的键值对信息。比如,如果目标键值对位于共享的存储设备,在插件152中的例程被调用。如果目标键值对被由LDAP服务器管理的存储子系统所管理,那么在插件154中的相应的例程就被调用。根据一个实施例,被调用的例程的名字,以及调用的参数,在两种情况下是相同的,因为插件152和154提供的接口是相同的,从而使得存储子系统160的特性对客户106,108和110以及仓库118的高层例程而言是透明的。
存储抽象层150提供的接口允许在存储抽象层150之外的例程通过存储抽象层150的例程调用来执行仓库118所需的各种操作。在一个实施例中,仓库118支持节点相关键。具体而言,仓库118的多个客户(节点102的客户106和108,节点104的客户110)每个都希望储存键值对,而每个客户所使用的键名都是相同的,但是在不同节点上的每个客户针对该键名所使用的值可能是不同的。比如,每个客户都希望储存键值对“背景色”=X,而X可能是蓝,绿或紫等一种颜色。使用节点相关键,仓库118将为每个客户分别存储“背景色”的值,根据该客户碰巧运行的节点。对目前这个例子而言,在节点102上的客户106和108将看到有关背景色键的同样的值,而在节点104上的客户110则将看到对同一个背景色键的不同的值。
例样请求序列
根据一个实施例,请求仓库118所管理的信息的过程首先检查与请求者驻留在同一个节点的缓存。如果该信息没有在本地节点缓存,那么就检查主控缓存。如果该信息没有在主控缓存,那么就调用存储抽象层150从可靠的存储中提取信息。
比如,假设客户106请求仓库118管理的特定的键值对,该信息目前没有驻留在任何缓存中。根据一个实施例,为客户106提取键值对的操作如下处理:
最初,客户106调用在API层112中的例程(API 120)请求读取期望的键值对。API 120发送请求到服务抽象层114的例程(SVC ABST 122)。SVC ABST 122确定如何处理请求。在该例子中,SVC ABST 122确定请求应该转发到节点102本身的缓存。由于组件170不是节点102的缓存组件,转发请求给缓存的操作导致组件170与另一个组件172通信。为了完成该通信,该请求被传递到组件170的消息和缓存层116的例程(MSG 124)。
MSG 124与缓存组件172的消息和缓存层116的例程MSG 134通信。MSG 134向上传递请求给缓存组件172的服务抽象层114的例程(SVC ABST 132)。SVC ABST 132确定应该检查缓存138中是否包含所请求的信息。SVC ABST 132调用在消息和缓存层116的适当的例程。
当在本地缓存138中没有发现信息时,就从MSG 134发送消息给主控组件174的消息和缓存层116的例程(MSG 144)。MSG 144向上传递请求给主控组件174的服务抽象层114的例程(SVC ABST142)。SVC ABST 142确定应该检查缓存148中是否包含所请求的信息。SVC ABST 142调用在消息和缓存层116的适当的例程。
当在主控缓存148中没有发现信息时,就发送消息给存储抽象层150的插件(比如插件152)。该插件152导致所请求的信息从一个存储子系统160的持久存储被提取到缓存148中。MSG 144接着就通过传递回所请求的信息返回来自MSG 134的调用。MSG 134导致该信息被存储在缓存138,并通过传递回所请求的信息返回来自MSG 124的调用。
MSG 124传递该消息给SVC ABST 122,并接着返回该消息给API 120。最后,API 120发送请求的信息给客户106。
由于所请求的信息被存储在缓存138,节点102的任何客户针对该同一信息的后续请求都被处理成从缓存138提取数据。由于所请求的信息被存储在主控缓存148,在本地缓存中没有该信息的节点的客户针对该同一信息的后续请求都可能被处理成从主控缓存148提取数据。
访问模式
根据一个实施例,在API层112中提供的例程可以被四种访问模式中的任何一种所访问。客户可以指定特定的访问模式到API层112的例程,比如,通过传递参数值来指示访问模式。不是在每个调用中都传递这样的参数给API层112,而是在客户发起的对API层112的第一个调用中指定期望的模式,这称为“初始化例程”。该初始化例程可以传回一个句柄给客户,接着客户就使用该句柄实现对API层112的所有未来的调用。该句柄可以与指示客户访问模式的数据相关联。因此,在后续所有调用中传递句柄将有效的通告处理这些后续调用的例程有关用来服务这些调用的访问模式的信息。
根据一个实施例,同一客户的不同模块可能以不同的访问模式访问仓库118。比如,在客户108中的第一个模块可能以只读模式访问仓库118,而在客户108中的另一个模块可能以缓存访问模式访问仓库118。类似的,客户可能通过适当的对API层112的调用从一种访问模式转化到另一种访问模式。
特定客户请求的访问模式取决于该客户的角色和/或该客户想要执行的操作类型。根据一个实施例,仓库118所支持的模式包括安装模式,只读访问模式,缓存访问模式,以及缺省访问模式。
安装模式:安装模式是客户(通常是仓库安装程序)用来执行创建或重建仓库工作的模式。根据一个实施例,一次只能有一个客户使用安装模式,并禁止所有其它客户执行任何仓库操作。
只读访问模式:通过请求只读访问模式,客户表明它将只进行只读操作。当客户处于只读访问模式执行操作时,在仓库118中的所有并发控制逻辑被禁用/回避。因此,相比允许写操作的模式而言,只读访问模式下的操作通常被更快的以更少的消耗执行。只读访问模式可以并发的被多个客户共享,由于读操作通常不会与其它读操作发生访问冲突。
根据一个实施例,仓库118使用集群配置软件来在仓库118的操作期间执行某些并发控制。该集群配置软件还使用仓库118来存储集群100的启动信息。在该实施例中,当集群100被启动时,该集群配置软件使用只读访问模式访问集群配置信息,以确保集群配置软件的并发控制例程直到集群配置软件自身完全初始化之后才被执行。
缓存访问模式:缓存访问模式是客户用来建立组件作为客户的节点的缓存组件的模式。比如,组件172被建立为节点102的缓存组件以响应客户108以缓存访问模式初始化组件172。当客户108发起调用来初始化组件172时,就为缓存138分配资源。当在缓存访问模式中执行读操作时,在服务抽象层114中的例程就激活消息和缓存层116中的缓存例程以便在缓存138中搜索需要的信息。
缺省访问模式:缺省访问模式是如下客户所使用的模式,(1)没有与缓存组件相关联的客户,(2)没有执行需要安装或只读访问模式的操作的客户。当按照缺省访问模式执行操作时,在服务抽象层114中的例程使用消息和缓存层116的消息例程转发读取请求给本地缓存组件。
根据一个实施例,客户能够从一种模式转化到另一种模式。该转化可以通过一定方式而发起,举例而言,在对API层例程的后续调用中传递不同于对API层例程的前期调用的访问模式参数值。根据另一个实施例,单一客户进程的不同线程或模块使用不同的访问模式。比如,客户的第一个模块的所有调用都传递一个访问模式值给API层例程来获得一个访问模式,而同一客户的第二个模块的所有调用都传递一个不同的访问模式值给API层例程来获得不同的访问模式。
硬件综述
图2是描述可以执行本发明一个实施例的计算机系统200的框图。计算机系统200包括总线202或用于传递信息的其他通信结构,并且包括与总线202耦合并用于处理信息的处理器204。计算机系统200还包含主存储器206,例如随机访问存储器(RAM)或是其它动态存储器,这个存储器与总线202耦合,用于保存信息以及处理器204所要执行的指令。在运行处理器204所执行指令的过程中,主存储器206还可用于保存临时变量或是其它中间信息。计算机系统200还包括一个只读存储器(ROM)208或其它静态存储设备,它与总线202耦合,用于保存静态信息和涉及处理器204的指令。此外还提供了诸如磁盘或光盘的存储设备210,所述设备与总线202耦合,以便保存信息和指令。
计算机系统200可以经由总线202而与阴极射线管(CRT)之类的显示器212相连,以便将信息显示给计算机用户。包含字母数字及其它键的输入设备214与总线202相连,以便将信息和命令选择传递到处理器204。另一种用户输入设备是光标控制216,例如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传递给处理器204以控制显示器212上的游标移动。这种输入设备通常在第一轴(例如x)和第二轴(例如y)这两个轴上具有两个自由度,由此设备能够确定一个平面上的位置。
本发明涉及使用计算机系统200来执行这里所描述的技术方法。根据本发明的一个实施例,处理器204执行主存储器206中包含的一个或多个指令的一个或多个序列,计算机系统200对此做出响应,由此执行这些技术方案。这些指令可以从诸如存储设备210等等的另一种计算机可读介质读入主存储器206。通过执行主存储器中包含的指令序列,处理器204执行这里描述的处理步骤。在替换实施例中,硬布线电路可用于取代软件指令或是与之组合,由此实现本发明。因此,本发明的实施例不限于硬件电路和软件的任何一种特定组合。
这里使用的术语“计算机可读介质”是指任何一种参与向处理器204提供指令以供执行的介质。这种介质可以采取很多形式,其中包括但不局限于:非易失介质、易失介质和传输介质。举例来说,非易失介质包括光盘或磁盘,例如存储设备210。易失介质包括动态存储器,例如主存储器206。传输介质包括同轴电缆、铜线和光纤,其中包括了构成总线202的线路。传输介质还可以采取声波或光波的形式,例如无线电波和红外数据通信中产生的信号。
举例来说,计算机可读介质的通用形式包括:软盘、软磁盘、硬盘、磁带或任何其它磁介质、光盘或任何其它光学介质、穿孔卡、纸带纸条或具有孔洞图案的任何其它物理介质、RAM、PROM和EPROM、FLASH-EPROM、其它任何存储芯片或盒式磁盘机、如下所述的载波或是计算机可以读取的其它任何介质。
各种形式的计算机可读介质可以承载一个或多个序列的一个或多个指令以便处理器204执行。举例来说,最初将指令传送到远程计算机磁盘上。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器而经由电话线来发送指令。计算机系统200的本地调制解调器可以在电话线上接收数据并且使用红外发射机来将数据转换成红外信号。红外检测器可以接收红外信号中传送的数据,而适当的电路则可将数据放置到总线202上。总线202将数据传送到主存储器206,处理器204从主存储器206中提取并执行指令。主存储器206接收的指令还可选地在处理器204执行之前或之后被储存在存储设备210中。
计算机系统200还包括与总线202相连的通信接口218。通信接口218提供了与网络链路220耦合的双向数据通信,其中网络链路220与本地网络222相连。举例来说,通信接口218可以是一个向相应类型的电话线路提供数据通信连接的综合业务数字网(ISDN)的网卡或是调制解调器。作为另一个实例,通信接口218可以是一个LAN网卡,它向兼容的LAN提供数据通信连接。此外还可以实施无线链路。在任何一种这类实施中,通信接口218都会收发电、电磁或光信号,这些信号传送的是那些代表不同类型信息的数字数据流。
网络链路220通常经由一个或多个网络来向其它数据设备提供数据通信。举例来说,网络链路220可以经由本地网络222而将一个连接提供给主机224或是互联网服务供应商(ISP)226运作的数据设备。ISP 226进而又通过现在通常称为“互联网”的全球分组数据通信网络228来提供数据通信业务。本地网络222和互联网228都使用了传送数字数据流的电、电磁或光信号。经由不同网络的信号以及网络链路220上经由通信接口218的信号传送的是那些往返于计算机系统200的数字数据,而这些信号即为传送信息的载波的示范性形式。
计算机系统200可以经由一个或多个网络、网络链路220以及通信接口218来发送消息和接收数据,其中包括了程序代码。在互联网实例中,服务器230可以经由互联网228、ISP 226、本地网络222以及通信接口218来发送一个用于应用程序的被请求码。
接收到的代码可以在接收时由处理器204执行和/或存入存储设备210或其它非易失存储器中,以供稍后执行。这样,计算机系统200可以通过载波形式来获取应用码。
在前面的说明中,本发明的描述是参照特定的实施例的。但是,显而易见地是,可以对本发明进行各种修正和改变而不偏离本发明的广泛的精神和范围。因此,说明书和附图应该视为是示范性而不是限制意义的。
Claims (34)
1.一种用于储存键值对的方法,所述方法包括:
在应用编程层提供仓库接口,客户通过所述仓库接口可以进行调用,以储存并访问在仓库中的键值对信息;
通过公用存储抽象接口调用多个插件中的一个,从而通过所述仓库接口进行服务调用;
其中,所述多个插件中的每个插件都提供所述公用存储抽象接口,以持久地访问键值对信息;
其中,所述多个插件中的每个插件都被设计成:响应通过所述公用存储抽象接口进行的调用,与特定类型的存储子系统交互;以及
其中,每个插件与之交互的存储子系统是不同于所述多个插件中的每个其它插件与之交互的存储子系统的不同类型的存储子系统。
2.根据权利要求1所述的方法,进一步包括如下步骤:
将所述仓库的单个组件指派为主控组件;
在分布在集群的多个节点的组件处,通过所述仓库接口接收来自驻留在所述多个节点上的客户的调用;
将所有需要访问持久性存储器的调用引导向所述主控组件;
其中所述主控组件是所述仓库中唯一允许通过所述公用存储抽象接口执行插件调用步骤的组件。
3.根据权利要求1所述的方法,进一步包括如下步骤:
接收请求,以执行操作;
确定所述多个插件中的哪个插件对应于执行所述操作期间要访问的存储子系统的类型;
动态装载对应于所述存储子系统的类型的特定插件;以及
通过所述公用接口进行一个或多个对所述特定插件的调用,执行所述操作。
4.根据权利要求1所述的方法,进一步包括如下步骤:
通过所述仓库接口接收来自客户的请求;
在通过所述公用存储抽象接口进行调用获得所述请求所需的信息之前,在主控缓存中查找所述信息。
5.根据权利要求4所述的方法,其中:
所述客户驻留在第一节点,而所述主控缓存驻留在第二节点;以及
所述方法进一步包括如下步骤:在所述主控缓存中查找所述信息之前,在所述第一节点的本地缓存中查找所述信息。
6.根据权利要求5所述的方法,其中:
所述第一节点包括所述仓库的多个组件;
所述客户与所述多个组件中的第一组件相关联;
所述方法进一步包括如下步骤:
仅将所述多个组件中的一个组件建立为缓存组件;以及
如果所述第一组件不是所述缓存组件,那么就从所述第一组件发送消息给所述缓存组件,以使所述缓存组件在所述本地缓存查找所述信息。
7.根据权利要求1所述的方法,进一步包括如下步骤:
创建代码库,所述代码库包含实现所述仓库接口的例程;
将所述代码库链接到客户代码,以允许在所述客户代码中的例程能通过调用所述代码库中的所述例程使用所述仓库。
8.根据权利要求1所述的方法,进一步包括如下步骤:
通过例程接收来自客户的调用,所述例程用于实现所述仓库接口的一部分;以及
根据在所述调用中的参数的值,确定是否把与所述客户相关联的所述仓库的组件建立成缓存组件,所述缓存组件负责管理所述仓库的缓存。
9.一种用于储存键值对的方法,所述方法包括:
提供仓库接口,客户通过所述仓库接口进行调用,以储存和访问仓库中的键值对信息;
通过例程接收来自客户的调用,所述例程用于实现所述仓库接口的一部分;以及
根据所述调用,确定是否把与所述客户相关联的所述仓库的组件建立成缓存组件,所述缓存组件管理所述仓库的缓存。
10.根据权利要求9所述的方法,其中:
所述仓库支持多个访问模式,所述访问模式包括缓存访问模式和缺省访问模式;
所述接收调用的步骤包括接收指定了缓存访问模式和缺省访问模式中之一的调用;以及
所述方法包括以下步骤:如果所述调用指定了所述缓存访问模式,就把与所述客户相关联的所述仓库的组件建立成缓存组件。
11.根据权利要求10所述的方法,进一步包括如下步骤:
作为对确定所述调用指定所述缺省访问模式的响应,传递请求以从所述仓库读取信息,所述信息被所述组件从所述客户接收到与第二客户相关联的第二缓存组件;以及
使所述第二组件响应所述请求,检查由所述第二组件所管理的缓存中是否有来自所述仓库的信息。
12.根据权利要求11所述的方法,其中,所述组件和所述第二缓存组件驻留在单一节点上。
13.根据权利要求12所述的方法,进一步包括如下步骤:
如果第二缓存组件管理的缓存不包含来自所述客户的特定请求所需要的信息,那么所述第二缓存组件发送所述请求到驻留在第二节点的第三组件,所述第二节点相对所述节点是远程节点。
14.根据权利要求10所述的方法,其中:
所述多个访问模式进一步包括安装访问模式和只读访问模式;
当最初创建所述仓库时,所述客户使用所述安装访问模式;以及
当从所述仓库启动时,所述客户使用所述只读访问模式。
15.一种用于储存键值对的方法,所述方法包括:
提供仓库接口,客户通过所述仓库接口进行调用,以储存和访问专门为键值对信息设计的仓库中的键值对信息;通过所述仓库接口接收来自客户的一个或多个调用;
其中,在持久存储器中分配用于所述仓库的任何结构以持久地储存所述键值对信息之前,在所述仓库接口处接收所述一个或多个调用;以及
根据所述一个或多个调用,在所述持久存储器上创建结构,以持久地储存所述键值对信息。
16.根据权利要求15所述的方法,其中:
所述仓库支持多个访问模式,包括安装访问模式和缺省访问模式;
接收一个或多个调用的步骤包括接收至少一个指定安装访问模式的调用;以及
所述方法包括以下步骤:将所述安装访问模式授权给所述客户,当所述客户处于所述安装访问模式时,能够排它地使用所述仓库。
17.根据权利要求16所述的方法,其中:
所述多个访问模式包括只读访问模式;以及
所述方法包括如下步骤:
接收来自第二客户的请求,从而使用只读访问模式执行操作;
在执行所述操作过程中,回避所述仓库的并发控制机制。
18.一种计算机可读介质,用于承载用来储存键值对的指令,所述指令包含执行如下步骤的指令:
在应用编程层提供仓库接口,客户通过所述仓库接口可以调用,以储存并访问在仓库中的键值对信息;
通过公用存储抽象接口调用多个插件中的一个,从而通过所述仓库接口进行服务调用;
其中,所述多个插件中的每个插件都提供所述公用存储抽象接口,以持久地访问键值对信息;
其中,所述多个插件中的每个插件都被设计成:响应通过所述公用存储抽象接口进行的调用,与特定类型的存储子系统交互;以及
其中,每个插件与之交互的存储子系统是不同于所述多个插件中的每个其它插件与之交互的存储子系统的不同类型的存储子系统。
19.根据权利要求18所述的计算机可读介质,进一步包含执行如下步骤的指令:
将所述仓库的单个组件指派为主控组件;
在分布在集群的多个节点的组件处,通过所述仓库接口接收来自驻留在所述多个节点上的客户的调用;
将所有需要访问持久性存储器的调用引导向所述主控组件;
其中所述主控组件是所述仓库中唯一允许通过所述公用存储抽象接口执行插件调用步骤的组件。
20.根据权利要求18所述的计算机可读介质,进一步包含执行如下步骤的指令:
接收请求,以执行操作;
确定所述多个插件中的哪个插件对应于执行所述操作期间要访问的存储子系统的类型;以及
动态装载对应于所述存储子系统的类型的特定插件;以及
通过所述公用接口进行一个或多个对所述特定插件的调用,执行所述操作。
21.根据权利要求18所述的计算机可读介质,进一步包含执行如下步骤的指令:
通过所述仓库接口接收来自客户的请求;
在通过所述公用存储抽象接口进行调用获得所述请求所需的信息之前,在主控缓存中查找所述信息。
22.根据权利要求21所述的计算机可读介质,进一步包含执行如下步骤的指令:
所述客户驻留在第一节点,而所述主控缓存驻留在第二节点;以及
所述计算机可读介质还包括用于执行以下步骤的指令:
在所述主控缓存中查找所述信息之前,在所述第一节点的本地缓存中查找所述信息。
23.根据权利要求22所述的计算机可读介质,其中:
所述第一节点包括所述仓库的多个组件;
所述客户与所述多个组件中的第一组件相关联;
所述计算机可读介质还包括用于执行以下步骤的指令:
仅将所述多个组件中的一个组件建立为缓存组件;以及
如果所述第一组件不是所述缓存组件,那么就从所述第一组件发送消息给所述缓存组件,以使所述缓存组件在所述本地缓存查找所述信息。
24.根据权利要求18所述的计算机可读介质,进一步包含执行如下步骤的指令:
创建代码库,所述代码库包含实现所述仓库接口的例程;
将所述代码库链接到客户代码,以允许在所述客户代码中的例程能通过调用所述代码库中的所述例程使用所述仓库。
25.根据权利要求18所述的计算机可读介质,进一步包含执行如下步骤的指令:
通过例程接收来自客户的调用,所述例程用于实现所述仓库接口的一部分;以及
根据在所述调用中的参数的值,确定是否把与所述客户相关联的所述仓库的组件建立成缓存组件,所述缓存组件负责管理所述仓库的缓存。
26.一种计算机可读介质,用于承载用来储存键值对的指令,所述计算机可读介质包含执行如下步骤的指令:
提供仓库接口,客户通过所述仓库接口进行调用,以储存和访问仓库中的键值对信息;
通过例程接收来自客户的调用,所述例程用于实现所述仓库接口的一部分;以及
根据所述调用,确定是否把与所述客户相关联的所述仓库的组件建立成缓存组件,所述缓存组件管理所述仓库的缓存。
27.根据权利要求26所述的计算机可读介质,其中:
所述仓库支持多种访问模式,所述访问模式包括缓存访问模式和缺省访问模式;
所述接收调用的步骤包括接收指定了缓存访问模式和缺省访问模式中之一的调用;以及
所述计算机可读介质还包括用于执行以下步骤的指令:
如果所述调用指定了所述缓存访问模式,就把与所述客户相关联的所述仓库的组件建立成缓存组件。
28.根据权利要求27所述的计算机可读介质,进一步包含执行如下步骤的指令:
作为对确定所述调用指定所述缺省访问模式的响应,传递请求以从所述仓库读取信息,所述信息被所述组件从所述客户接收到与第二客户相关联的第二缓存组件;以及
使所述第二组件响应所述请求,检查由所述第二组件所管理的缓存中是否有来自所述仓库的信息。
29.根据权利要求28所述的计算机可读介质,其中所述组件和所述第二缓存组件驻留在单一节点上。
30.根据权利要求29所述的计算机可读介质,进一步包含执行如下步骤的指令:
如果所述第二缓存组件管理的缓存不包含来自所述客户的特定请求所需要的信息,那么所述第二缓存组件发送所述请求到驻留在第二节点的第三组件,所述第二节点相对所述节点是远程节点。
31.根据权利要求27所述的计算机可读介质,其中:
所述多个访问模式进一步包括安装访问模式和只读访问模式;
当最初创建所述仓库时,所述客户使用所述安装访问模式;以及
当从所述仓库启动时,所述客户使用所述只读访问模式。
32.一种计算机可读介质,用于承载用来储存键值对的指令,所述计算机可读介质包含执行如下步骤的指令:
提供仓库接口,客户通过所述仓库接口进行调用,以储存和访问专门为键值对信息设计的仓库中的键值对信息;
通过所述仓库接口接收来自客户的一个或多个调用;
其中,在持久存储器中分配用于所述仓库的任何结构以持久地储存所述键值对信息之前,在所述仓库接口处接收所述一个或多个调用;以及
根据所述一个或多个调用,在所述持久存储器上创建结构,以持久地储存所述键值对信息。
33.根据权利要求32所述的计算机可读介质,其中:
所述仓库支持多个访问模式,包括安装访问模式和缺省访问模式;
接收一个或多个调用的步骤包括接收至少一个指定安装访问模式的调用;以及
所述计算机可读介质包括用于执行以下步骤的指令:将所述安装访问模式授权给所述客户,当所述客户处于所述安装访问模式时,能够排它地使用所述仓库。
34.根据权利要求33所述的计算机可读介质,其中:
所述多个访问模式包括只读访问模式;以及
所述计算机可读介质还包括用于执行以下步骤的指令:
接收来自第二客户的请求,从而使用只读访问模式执行操作;
在执行所述操作过程中,回避所述仓库的并发控制机制。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37096302P | 2002-04-08 | 2002-04-08 | |
US60/370,963 | 2002-04-08 | ||
US37218602P | 2002-04-12 | 2002-04-12 | |
US60/372,186 | 2002-04-12 | ||
US10/253,088 US7096213B2 (en) | 2002-04-08 | 2002-09-23 | Persistent key-value repository with a pluggable architecture to abstract physical storage |
US10/253,088 | 2002-09-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1659547A true CN1659547A (zh) | 2005-08-24 |
CN100410929C CN100410929C (zh) | 2008-08-13 |
Family
ID=28678885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038078562A Expired - Lifetime CN100410929C (zh) | 2002-04-08 | 2003-03-26 | 具有可插入体系结构的键值仓库 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7096213B2 (zh) |
EP (1) | EP1493105B1 (zh) |
JP (1) | JP4297790B2 (zh) |
CN (1) | CN100410929C (zh) |
CA (1) | CA2480459C (zh) |
WO (1) | WO2003088093A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043645A (zh) * | 2009-10-20 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种加载插件的方法及装置 |
CN102132256A (zh) * | 2008-08-25 | 2011-07-20 | 国际商业机器公司 | 使用名称解析来供应虚拟资源 |
CN111552596A (zh) * | 2015-07-22 | 2020-08-18 | 奥普塔姆软件股份有限公司 | 紧凑二进制事件日志生成方法及系统 |
CN113326033A (zh) * | 2021-06-09 | 2021-08-31 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050220286A1 (en) * | 2001-02-27 | 2005-10-06 | John Valdez | Method and apparatus for facilitating integrated access to communications services in a communication device |
BR0215411A (pt) * | 2001-12-28 | 2005-09-06 | Jeffrey James Jonas | Métodos para processar dados e para separar registros previamente conjugados, e, meio legìvel por computador |
US7445196B2 (en) * | 2002-02-20 | 2008-11-04 | Universal Consumer Products, Inc. | Plastic fencing simulative of wrought iron |
US8271530B2 (en) * | 2002-04-08 | 2012-09-18 | Oracale International Corporation | Method and mechanism for managing and accessing static and dynamic data |
US7672945B1 (en) | 2002-04-08 | 2010-03-02 | Oracle International Corporation | Mechanism for creating member private data in a global namespace |
US7058639B1 (en) | 2002-04-08 | 2006-06-06 | Oracle International Corporation | Use of dynamic multi-level hash table for managing hierarchically structured information |
US7136867B1 (en) | 2002-04-08 | 2006-11-14 | Oracle International Corporation | Metadata format for hierarchical data storage on a raw storage device |
US7900052B2 (en) | 2002-11-06 | 2011-03-01 | International Business Machines Corporation | Confidential data sharing and anonymous entity resolution |
US8620937B2 (en) * | 2002-12-27 | 2013-12-31 | International Business Machines Corporation | Real time data warehousing |
WO2004061668A1 (en) | 2002-12-31 | 2004-07-22 | International Business Machines Corporation | Authorized anonymous authentication |
US7200602B2 (en) * | 2003-02-07 | 2007-04-03 | International Business Machines Corporation | Data set comparison and net change processing |
EP1631908A4 (en) * | 2003-03-24 | 2012-01-25 | Ibm | SECURE COORDINATED IDENTIFICATION METHOD, SYSTEM AND PROGRAM |
US7467384B2 (en) * | 2004-02-20 | 2008-12-16 | Microsoft Corporation | Uniform resource discovery with multiple computers |
US7461054B2 (en) * | 2004-02-20 | 2008-12-02 | Microsoft Corporation | Uniform resource discovery and API layering |
US7921419B2 (en) * | 2004-05-12 | 2011-04-05 | Oracle International Corporation | Method and mechanism for managing incompatible changes in a distributed system |
US7779022B2 (en) * | 2004-09-01 | 2010-08-17 | Oracle International Corporation | Efficient retrieval and storage of directory information system knowledge referrals |
US7792860B2 (en) * | 2005-03-25 | 2010-09-07 | Oracle International Corporation | System for change notification and persistent caching of dynamically computed membership of rules-based lists in LDAP |
US8204831B2 (en) | 2006-11-13 | 2012-06-19 | International Business Machines Corporation | Post-anonymous fuzzy comparisons without the use of pre-anonymization variants |
US7903819B2 (en) * | 2007-09-07 | 2011-03-08 | Yahoo! Inc. | Memory efficient storage of large numbers of key value pairs |
US8402106B2 (en) * | 2010-04-14 | 2013-03-19 | Red Hat, Inc. | Asynchronous future based API |
US9053032B2 (en) | 2010-05-05 | 2015-06-09 | Microsoft Technology Licensing, Llc | Fast and low-RAM-footprint indexing for data deduplication |
US20110276744A1 (en) | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8935487B2 (en) | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US9208472B2 (en) | 2010-12-11 | 2015-12-08 | Microsoft Technology Licensing, Llc | Addition of plan-generation models and expertise by crowd contributors |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US8832111B2 (en) * | 2010-12-30 | 2014-09-09 | Facebook, Inc. | Distributed cache for graph data |
KR101398959B1 (ko) | 2012-06-28 | 2014-05-27 | 엘아이지넥스원 주식회사 | 플러그인을 이용한 인터페이스 방법 및 장치 |
US9276942B2 (en) | 2012-09-07 | 2016-03-01 | Oracle International Corporation | Multi-tenancy identity management system |
US9069979B2 (en) * | 2012-09-07 | 2015-06-30 | Oracle International Corporation | LDAP-based multi-tenant in-cloud identity management system |
KR102044023B1 (ko) * | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
US9870168B1 (en) * | 2014-12-22 | 2018-01-16 | Emc Corporation | Key-value store with internal key-value storage interface |
US10013353B2 (en) | 2015-02-23 | 2018-07-03 | Red Hat, Inc. | Adaptive optimization of second level cache |
US9767028B2 (en) * | 2015-10-30 | 2017-09-19 | Advanced Micro Devices, Inc. | In-memory interconnect protocol configuration registers |
US10261913B2 (en) * | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
CN107196920B (zh) * | 2017-04-28 | 2019-07-30 | 中国人民解放军信息工程大学 | 一种面向无线通信系统的密钥产生分配方法 |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
US10403351B1 (en) | 2018-02-22 | 2019-09-03 | Advanced Micro Devices, Inc. | Save and restore scoreboard |
US11507392B2 (en) * | 2020-02-26 | 2022-11-22 | Red Hat, Inc. | Automatically configuring computing clusters |
US11914563B2 (en) | 2022-03-24 | 2024-02-27 | Oracle International Corporation | Data structure generation system for analyzing logs |
US11822939B2 (en) * | 2022-03-24 | 2023-11-21 | Oracle International Corporation | Collaborative analysis system for analyzing logs |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228496A (en) | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US5555388A (en) | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
US5504892A (en) | 1994-09-08 | 1996-04-02 | Taligent, Inc. | Extensible object-oriented file system |
FR2735261B1 (fr) * | 1995-06-08 | 1997-07-11 | France Telecom | Procede de realisation d'un paiement utilisant un gestionnaire de comptes |
US6105025A (en) | 1996-03-08 | 2000-08-15 | Oracle Corporation | Method for using an index as a workspace for deferred enforcement of uniqueness constraints |
US5727950A (en) | 1996-05-22 | 1998-03-17 | Netsage Corporation | Agent based instruction system and method |
US5822526A (en) * | 1996-06-03 | 1998-10-13 | Microsoft Corporation | System and method for maintaining and administering email address names in a network |
US5901214A (en) * | 1996-06-10 | 1999-05-04 | Murex Securities, Ltd. | One number intelligent call processing system |
US6067584A (en) | 1996-09-09 | 2000-05-23 | National Instruments Corporation | Attribute-based system and method for configuring and controlling a data acquisition task |
US6016499A (en) | 1997-07-21 | 2000-01-18 | Novell, Inc. | System and method for accessing a directory services respository |
US6766327B2 (en) * | 1997-07-29 | 2004-07-20 | Acxiom Corporation | Data linking system and method using encoded links |
US6523041B1 (en) * | 1997-07-29 | 2003-02-18 | Acxiom Corporation | Data linking system and method using tokens |
US6073140A (en) * | 1997-07-29 | 2000-06-06 | Acxiom Corporation | Method and system for the creation, enhancement and update of remote data using persistent keys |
US6073129A (en) * | 1997-12-29 | 2000-06-06 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a database management system through a central cache mechanism |
US6345382B1 (en) | 1998-02-12 | 2002-02-05 | International Business Machines Corporation | Run-time customization in object-oriented design |
US6298419B1 (en) * | 1998-03-26 | 2001-10-02 | Compaq Computer Corporation | Protocol for software distributed shared memory with memory scaling |
US6915307B1 (en) * | 1998-04-15 | 2005-07-05 | Inktomi Corporation | High performance object cache |
US6122629A (en) * | 1998-04-30 | 2000-09-19 | Compaq Computer Corporation | Filesystem data integrity in a single system image environment |
GB9811574D0 (en) | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
US6748374B1 (en) * | 1998-12-07 | 2004-06-08 | Oracle International Corporation | Method for generating a relational database query statement using one or more templates corresponding to search conditions in an expression tree |
US6327594B1 (en) | 1999-01-29 | 2001-12-04 | International Business Machines Corporation | Methods for shared data management in a pervasive computing environment |
US6393415B1 (en) * | 1999-03-31 | 2002-05-21 | Verizon Laboratories Inc. | Adaptive partitioning techniques in performing query requests and request routing |
US6578045B1 (en) * | 1999-04-20 | 2003-06-10 | Microsoft Corporation | System and method for retrieving registry data |
US6421662B1 (en) | 1999-06-04 | 2002-07-16 | Oracle Corporation | Generating and implementing indexes based on criteria set forth in queries |
US7308426B1 (en) * | 1999-08-11 | 2007-12-11 | C-Sam, Inc. | System and methods for servicing electronic transactions |
US6442748B1 (en) * | 1999-08-31 | 2002-08-27 | Accenture Llp | System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment |
US6738775B2 (en) * | 1999-11-30 | 2004-05-18 | Base One International Corp. | Database communication system and method for communicating with a database |
CN1114164C (zh) * | 1999-12-27 | 2003-07-09 | 英业达集团(上海)电子技术有限公司 | 互联网电子读物的下载与加密方法 |
WO2001050396A1 (en) * | 2000-01-05 | 2001-07-12 | Iprivacy Llc | Method and system for private shipping to anonymous users of a computer network |
US20010044787A1 (en) * | 2000-01-13 | 2001-11-22 | Gil Shwartz | Secure private agent for electronic transactions |
WO2001059545A2 (en) * | 2000-02-11 | 2001-08-16 | Subramaniam Arun K | System and method for providing anonymous internet transaction |
EP1266320A2 (en) * | 2000-02-23 | 2002-12-18 | Capital One Financial Corporation | Systems and methods for providing anonymous financial transactions |
US7412422B2 (en) * | 2000-03-23 | 2008-08-12 | Dekel Shiloh | Method and system for securing user identities and creating virtual users to enhance privacy on a communication network |
US6826626B1 (en) * | 2000-07-21 | 2004-11-30 | Clear Blue Technologies Management, Inc. | Method of and apparatus for rapid retrieval of data in a content distribution network |
AU2001291175A1 (en) * | 2000-09-21 | 2002-04-02 | Md Online Inc. | Medical image processing systems |
US7043760B2 (en) * | 2000-10-11 | 2006-05-09 | David H. Holtzman | System and method for establishing and managing relationships between pseudonymous identifications and memberships in organizations |
EP1379947B1 (en) | 2001-01-19 | 2012-09-05 | Hostbridge Technology, LLC | An improved system, method and apparatus to allow communication between cics and non-cics software applications |
US20020133537A1 (en) * | 2001-03-12 | 2002-09-19 | Whizz Technology Ltd. | Server cluster and server-side cooperative caching method for use with same |
US6950833B2 (en) * | 2001-06-05 | 2005-09-27 | Silicon Graphics, Inc. | Clustered filesystem |
US20040139125A1 (en) * | 2001-06-05 | 2004-07-15 | Roger Strassburg | Snapshot copy of data volume during data access |
US20030004819A1 (en) * | 2001-06-28 | 2003-01-02 | International Business Machines Corporation | Anonymous email guarantor processing |
CA2460833C (en) * | 2001-09-21 | 2013-02-26 | Polyserve, Inc. | System and method for implementing journaling in a multi-node environment |
US20030088656A1 (en) * | 2001-11-02 | 2003-05-08 | Wahl Mark F. | Directory server software architecture |
US8321543B2 (en) * | 2002-03-04 | 2012-11-27 | International Business Machines Corporation | System and method for determining weak membership in set of computer nodes |
US6901401B2 (en) * | 2002-03-21 | 2005-05-31 | International Business Machines Corporation | System and method for database integrity via local database lockout |
US8271530B2 (en) | 2002-04-08 | 2012-09-18 | Oracale International Corporation | Method and mechanism for managing and accessing static and dynamic data |
DE10219916A1 (de) * | 2002-05-03 | 2003-12-04 | Infineon Technologies Ag | Testanordnung mit Testautomat und integriertem Schaltkreis sowie Verfahren zur Ermittlung des Zeitverhaltens eines integrierten Schaltkreises |
US6954524B2 (en) * | 2002-06-07 | 2005-10-11 | Sbc Properties, L.P. | System and method for implementing and accessing call forwarding services |
US7103616B1 (en) * | 2003-02-19 | 2006-09-05 | Veritas Operating Corporation | Cookie-based directory name lookup cache for a cluster file system |
US7197632B2 (en) * | 2003-04-29 | 2007-03-27 | International Business Machines Corporation | Storage system and cluster maintenance |
US7783741B2 (en) | 2003-11-17 | 2010-08-24 | Hardt Dick C | Pseudonymous email address manager |
US20050125461A1 (en) * | 2003-12-08 | 2005-06-09 | International Business Machines Corporation | Version control of metadata |
US7383285B1 (en) | 2005-03-08 | 2008-06-03 | Unisys Corporation | Method for exposing hierarchical table structures and relationships to OLE DB applications |
US20070022314A1 (en) * | 2005-07-22 | 2007-01-25 | Pranoop Erasani | Architecture and method for configuring a simplified cluster over a network with fencing and quorum |
US7653682B2 (en) * | 2005-07-22 | 2010-01-26 | Netapp, Inc. | Client failure fencing mechanism for fencing network file system data in a host-cluster environment |
-
2002
- 2002-09-23 US US10/253,088 patent/US7096213B2/en active Active
-
2003
- 2003-03-26 CA CA002480459A patent/CA2480459C/en not_active Expired - Lifetime
- 2003-03-26 WO PCT/US2003/009407 patent/WO2003088093A2/en active IP Right Grant
- 2003-03-26 CN CNB038078562A patent/CN100410929C/zh not_active Expired - Lifetime
- 2003-03-26 JP JP2003584961A patent/JP4297790B2/ja not_active Expired - Lifetime
- 2003-03-26 EP EP03716862.2A patent/EP1493105B1/en not_active Expired - Lifetime
-
2006
- 2006-04-13 US US11/404,159 patent/US7617218B2/en not_active Expired - Lifetime
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102132256A (zh) * | 2008-08-25 | 2011-07-20 | 国际商业机器公司 | 使用名称解析来供应虚拟资源 |
CN102132256B (zh) * | 2008-08-25 | 2013-07-24 | 国际商业机器公司 | 一种使用名称解析来供应虚拟资源的方法和系统 |
CN102043645A (zh) * | 2009-10-20 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种加载插件的方法及装置 |
CN102043645B (zh) * | 2009-10-20 | 2014-01-08 | 阿里巴巴集团控股有限公司 | 一种加载插件的方法及装置 |
CN111552596A (zh) * | 2015-07-22 | 2020-08-18 | 奥普塔姆软件股份有限公司 | 紧凑二进制事件日志生成方法及系统 |
CN113326033A (zh) * | 2021-06-09 | 2021-08-31 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
CN113326033B (zh) * | 2021-06-09 | 2023-08-11 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1493105B1 (en) | 2019-03-13 |
US20030191739A1 (en) | 2003-10-09 |
CN100410929C (zh) | 2008-08-13 |
WO2003088093A3 (en) | 2004-03-25 |
US7096213B2 (en) | 2006-08-22 |
AU2003220549A1 (en) | 2003-10-27 |
EP1493105A2 (en) | 2005-01-05 |
CA2480459A1 (en) | 2003-10-23 |
CA2480459C (en) | 2010-01-19 |
WO2003088093A2 (en) | 2003-10-23 |
US7617218B2 (en) | 2009-11-10 |
JP4297790B2 (ja) | 2009-07-15 |
JP2005522787A (ja) | 2005-07-28 |
US20060195450A1 (en) | 2006-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1659547A (zh) | 具有可插入体系结构的键值仓库 | |
US7490074B1 (en) | Mechanism for selectively providing mount information to processes running within operating system partitions | |
US7392261B2 (en) | Method, system, and program for maintaining a namespace of filesets accessible to clients over a network | |
US6556995B1 (en) | Method to provide global sign-on for ODBC-based database applications | |
US7827217B2 (en) | Method and system for a grid-enabled virtual machine with movable objects | |
US8677477B2 (en) | Application program launching method and system for improving security of embedded Linux kernel | |
US7158995B2 (en) | Method for managing pointers to external objects in a run-time environment | |
US6108649A (en) | Method and system for supplanting a first name base with a second name base | |
US8001327B2 (en) | Method and apparatus for managing placement of data in a tiered storage system | |
CN1601465A (zh) | 动态注册表分区 | |
CN1531303A (zh) | 协议无关的客户端高速缓存系统和方法 | |
CN101080694A (zh) | 具有最少存储区域网络重新配置的操作系统迁移 | |
CN101044483A (zh) | 跨越多个位置的存储池空间分配 | |
JPH11327919A (ja) | オブジェクト指向割込みシステム用の方法およびデバイス | |
US20040019887A1 (en) | Method, system, and program for loading program components | |
US20070220001A1 (en) | Mechanism for implementing file access control using labeled containers | |
CN1777154A (zh) | 用于对应用组件的接口的方法和系统 | |
CN1829949A (zh) | 用于将多个安全组表示为单个数据对象的系统和方法 | |
US6829761B1 (en) | Method and apparatus for managing shared memory in a run-time environment | |
US20050091215A1 (en) | Technique for provisioning storage for servers in an on-demand environment | |
CN1829962A (zh) | 数据所有权的动态再分配 | |
EP1480124A2 (en) | Method and system for associating resource pools with operating system partitions | |
CN1298507A (zh) | 分布式系统中用于确定远程对象状态的方法和装置 | |
CN1717656A (zh) | 用分离的服务器支持专用存取控制的技术 | |
Sousa et al. | Naming and Identification in Distributed Systems: A Pattern for Naming Policies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080813 |