CN113574518A - 用于减少高速缓存内存占用的高速缓存对象的内存式规范化 - Google Patents
用于减少高速缓存内存占用的高速缓存对象的内存式规范化 Download PDFInfo
- Publication number
- CN113574518A CN113574518A CN202080020558.XA CN202080020558A CN113574518A CN 113574518 A CN113574518 A CN 113574518A CN 202080020558 A CN202080020558 A CN 202080020558A CN 113574518 A CN113574518 A CN 113574518A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- normalized
- sharable
- inter
- 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.)
- Pending
Links
- 238000010606 normalization Methods 0.000 title description 3
- 238000000034 method Methods 0.000 claims description 23
- 238000010276 construction Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
从数据库中取回数据库对象并且将其解析为规范化高速缓存数据对象。数据库对象存储在高速缓存存储库中的规范化高速缓存数据对象中,并且租户数据请求由规范化高速缓存数据对象提供服务。规范化高速缓存数据对象包括对共享对象池中的共享对象的引用,共享对象可以跨规范化高速缓存数据对象的不同行和跨不同的租户高速缓存***被共享。
Description
背景技术
计算***目前被广泛使用。一些计算***是为多个不同租户或组织托管服务的多租户***。
在这样的计算***中,租户经常访问存储在一个或多个不同数据存储库中的数据。为了提高服务的性能,来自数据存储库或数据库的表通常被高速缓存为内存式(in-memory)数据结构。存储在数据库或数据存储库中的数据可能不是按照优化的模式(schema)布置的。这样做是为了降低访问数据所需要的查询复杂性,和/或为了提高数据库或数据存储库的性能。
这可以表示,就存储在那里的数据库对象而言,在数据库或数据存储库中存在冗余。
发明内容
从数据库中取回数据库对象并且将其解析为规范化(normalized)高速缓存数据对象。数据库对象存储在高速缓存存储库中的规范化高速缓存数据对象中,并且租户数据请求由规范化高速缓存数据对象提供服务。规范化高速缓存数据对象包括对共享对象池中的共享对象的引用,共享对象可以跨规范化高速缓存数据对象的不同行和跨不同租户高速缓存***被共享。
提供本“发明内容”以便以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中指出的任何或所有缺点的实现。
附图说明
图1是计算***架构的一个示例的框图。
图2示出了传统数据库表的一个示例(以简化形式)。
图3是更详细地示出服务计算***的一个示例的框图。
图4是更详细地示出服务计算***的操作的一个示例的流程图。
图5是示出存储器加载***的操作的一个示例的流程图。
图6是更详细地示出高速缓存存储库的一个示例的框图。
图7示出了规范化对象的一个示例。
图8示出了行间可共享对象的一个示例。
图9示出了租户间可共享对象的一个示例。
图10是示出高速缓存共享逻辑的操作的一个示例的流程图。
图11是示出部署在云计算架构中的图1所示的架构的一个示例的框图。
图12是示出可以部署在先前图中所示的架构中的计算环境的一个示例的框图。
具体实施方式
图1是示出计算***架构100的一个示例的框图。架构100示出了服务计算***102可以访问一组数据存储库104-106(其可以在服务计算***102中,或位于别处)并且说明性地托管可以由客户端(或租户)计算***108-110通过网络112访问的服务。客户端(或租户)计算***108的用户114可以说明性地通过网络112通过由服务计算***102托管的服务来访问数据存储库104-106上的数据。类似地,客户端(或租户)计算***110的用户116也可以通过网络112使用由服务计算***102托管的服务来访问存储在数据存储库104-106中的数据。因此,网络112可以是多种不同类型的网络中的任何一种。它可以是广域网、局域网、近场通信***、蜂窝通信网络、或者各种其他网络或网络组合中的任何一种。
在图1所示的示例中,服务计算***102说明性地包括处理器或服务器117、服务逻辑118、一个或多个高速缓存存储库120,并且可以包括各种其他项122。服务逻辑118可以具有前端,该前端从客户端计算***108-110接收请求访问数据存储库104-106中的各种数据项的数据请求。在为这些请求提供服务时,服务逻辑118可以包括后端逻辑,该后端逻辑取回所请求的数据并且将其作为高速缓存数据124存储在高速缓存存储库120中。这样做可以提高服务响应于来自各种不同客户端计算***108-110的对相同数据的后续数据请求的性能。
举例来说,高速缓存存储库120中的高速缓存数据124可以包括来自数据存储库104-106的被存储为内存式数据结构的数据库表。以这种方式,可以响应于来自客户端计算***108-110的请求而更快速地(从高速缓存存储库120)访问数据。因此,可以看出,存储在高速缓存存储库120中的任何高速缓存数据124增加了由使用该数据的服务计算***102托管的服务(或进程)的内存占用。
此外,用于在数据存储库104-106中存储数据的数据库模式可能未被规范化或优化。因此,存储在数据存储库104-106中的各种不同数据对象之间可能存在冗余。这样做是为了降低针对数据存储库104-106的查询的查询复杂度,并且为了提高数据库(或数据存储库)104-106响应于查询的性能。
然而,在很多当前***中,服务逻辑118直接将数据库表复制到高速缓存,以作为高速缓存存储库120中的高速缓存数据124。因此,在很多当前***中,数据库对象的内存式高速缓存副本(例如,高速缓存数据124)也包括在数据存储库104-106中发现的相同冗余。根据冗余级别,这会大大增加由服务计算***102托管的服务(或进程)的内存占用。
虽然修改由数据存储库104-106使用的数据库模式可能是不需要的,但是根据本文中描述的一个示例的服务逻辑118减少了服务(或进程)的内存占用,而无需修改数据库模式或者将与访问该数据的各种应用或服务一起维护的任何上游应用合同。相反,服务逻辑118说明性地规范化内存式数据结构(高速缓存数据124)并且与不同内存式高速缓存对象共享规范化对象。存储器加载***(下面更详细地描述)将从数据存储库104-106中取回的数据库结构(例如,表)解析为一组规范化对象。规范化对象包括在行间基础上与高速缓存数据124中的其他对象共享的对象。它还包括在不同租户之间共享的数据。以这种方式,当客户端计算***108-110请求访问高速缓存数据时,可以以客户端计算***108-110不可见的方式快速取回数据,因为它作为高速缓存数据124内存式地被存储。但是,由于存储在规范化并且共享的数据结构中,与服务(或进程)相对应的内存占用大大减少。
为了进一步说明这一点,图2示出了传统数据库表的简化版本的一个示例。与该表相对应的强类型类(称为AttributeMetadata类)如下表1所示:
表1
可以在图2中看到,数据库表的冗余度相对较高。由于在当前***中,在用于生成数据库表的数据库模式(例如,图2所示)与存储为高速缓存数据124的内存式对象之间存在一对一映射,因此使用当前***,在高速缓存数据124中发现相同数量的冗余。
图3是更详细地示出服务计算***102和数据存储库104-106的一些部分的框图。一些项类似于图1所示的项,并且它们的编号类似。在图3所示的示例中,数据存储库104说明性地包括一组表126,并且它可以包括各种其他数据128。类似地,数据存储库106说明性地包括一组表130,并且它可以包括各种其他项132。图3还示出,在一个示例中,服务逻辑118可以包括存储器加载***134和各种其他服务逻辑136。存储器加载***134本身说明性地包括数据存储库访问逻辑138、规范化对象标识逻辑140、解析逻辑142、高速缓存加载逻辑144、高速缓存共享逻辑146,并且它可以包括各种其他项148。
解析逻辑142本身说明性地包括数据项标识符逻辑150、规范化对象构造逻辑152、引用生成器逻辑154,并且它可以包括其他项156。在更详细地描述存储器加载***134的整体操作之前,将首先提供***134中的一些项及其操作的简要描述。
请求处理逻辑137可以从客户端(或租户)计算***108-110中的一个接收数据访问请求。它处理该请求以标识请求访问的数据。假定该数据尚未加载到高速缓存120中,则它标识要访问的特定数据并且向数据存储库访问逻辑138提供该指示。然后数据存储库访问逻辑138与特定数据存储库104-106交互以访问所请求的数据。例如,数据访问请求可以访问一个或多个不同表126-130中的数据。因此,数据存储库访问逻辑138获取对这些被请求的表的访问。
规范化对象标识逻辑140采用规范化策略来标识任何特定规范化对象,在高速缓存存储库120中,该特定规范化对象将被创建并且表将被存储到该特定规范化对象中。由规范化对象标识逻辑140标识的特定规范化对象可以是各种不同类型的规范化对象中的任何一种,并且它们可以因具体情况而异。此外,各组规范化对象可以是预先定义的,或者它们可以在接收到数据请求时被即时标识。此外,针对从数据库104-106中取回到的任何给定表或一组表(或其他数据结构)而创建的各组规范化对象可以是动态的,因为它们基于机器学习技术或基于其他标准而随着时间发生改变。因此,逻辑140可以是使用查找表或以其他方式访问预定义的一组对象的逻辑。它可以是基于所请求的数据或其他标准来标识该组规范化对象的预定义算法,也可以是使用神经网络或以其他方式动态地标识该组规范化对象的机器学习动态模型。
一旦该组规范化对象被标识,解析逻辑142将取回到的表解析为这些规范化对象。数据项标识符逻辑150标识取回到的表中的不同数据项。规范化对象构造逻辑152标识是否已经针对该数据项构造了规范化对象。如果是,则引用生成器逻辑154生成对已经构造的规范化对象的引用。如果不是,则规范化对象构造逻辑152针对该数据项构造规范化对象。
高速缓存加载逻辑144将规范化对象(和/或引用)作为高速缓存数据124加载到高速缓存存储库120中。高速缓存共享逻辑146然后在引用可共享数据对象的不同规范化对象之间共享高速缓存数据124(存储在规范化对象中的可共享数据)。以这种方式,高速缓存数据124可以用于使用共享数据来响应于来自租户计算***108-110的数据访问请求,而客户端计算***108-110甚至不知道该数据在高速缓存中的不同规范化对象之间被共享。
图4是更详细地示出存储器加载***134的操作的一个示例的流程图。首先由存储器加载***134确定来自数据存储库104-106中的至少一个的项将被加载到高速缓存存储库120中以供服务计算***102使用。这由图4的流程图中的框160指示。在一个示例中,可以在服务或服务中的进程启动时将一个或多个数据项(诸如表)加载到高速缓存存储库120中。这由框162指示。在另一示例中,可以响应于来自客户端计算***108-110的数据访问请求而将项(例如,表)加载到高速缓存存储库120中。这由框164指示。
假定在框160处数据尚未在高速缓存存储库120中表示。这由框166指示。为了当前讨论的目的,还假定要从数据存储库104-106加载到高速缓存存储库120中的数据被表示为数据存储库中的表126-130。这由框168指示。然而,应当理解,它也可以用其他数据结构来表示。也可以以其他方式来标识来自数据存储库中的一个数据存储库的项将被加载到高速缓存120中。这由框170指示。
请求处理逻辑137标识要加载的一个或多个特定表并且将此指示给数据存储库访问逻辑138。逻辑138与适当数据存储库104-106交互以访问要加载到高速缓存120中的表。访问表由图4的流程图中的框172指示。
规范化对象标识逻辑140然后将要加载到高速缓存120中的一组规范化对象标识为高速缓存数据124,以表示正在被访问的表。这由框174指示。如上所述,特定的一组规范化对象可以基于正在被访问的表或其他数据项的内容或结构来动态地被标识。这由框176指示,并且可以使用机器学习技术、使用动态对象标识模型或以其他方式来进行。在另一示例中,要在高速缓存存储库120中生成以表示正在被访问的表的该组规范化对象可以是预定义的一组对象。这由框178指示。该组对象也可以以其他方式被标识,并且这由框180指示。
为了本描述的目的,将假定该组规范化对象包括具有不可共享属性或数据的对象和具有可共享属性或数据的可共享对象。还将假定可共享对象可以被分解为包括行间可共享对象182和租户间可共享对象184的一组对象。不可共享对象由186指示。行间可共享对象182包括跨数据表的行可共享的数据。租户间可共享对象184包括针对特定表的跨租户可共享的数据,并且不可共享对象186包括跨行或租户不可共享的数据。
解析逻辑142然后将正在被访问的表解析为该组规范化对象。这由图4的流程图中的框188指示。例如,数据项标识符逻辑150标识要解析的数据项,诸如行或行和列的组合。规范化对象构造逻辑152确定是否已经存在已经针对该数据项被构造并且可以被引用(例如,包含该数据项的共享数据)的规范化对象。如果是,则引用生成器逻辑154生成对该共享对象的引用。然而,如果不是,则规范化对象构造逻辑152构造将包含针对该数据项的数据的规范化对象。
高速缓存加载逻辑144然后将规范化对象(新构造的对象和对现有对象的引用)加载到高速缓存存储库120中,作为高速缓存数据124。这由框190指示。高速缓存数据124然后可以由服务使用。在共享数据(或可共享对象)已经生成并且存储在高速缓存数据124中的情况下,高速缓存共享逻辑146响应于后续数据访问请求而管理对任何可共享对象的共享。这由框192指示。同样,共享可以是如框194指示的行间共享。它可以是如框196所指示的租户间共享,或者它可以是以其他方式的共享,如框198指示的。
在更详细地描述共享过程之前,将首先提供对如何将数据项(诸如表)解析为该组规范化对象的更详细的描述。图5是示出其一个示例的流程图。图6是更详细地示出高速缓存存储库120的一个示例的框图。现在将彼此结合地描述图5和6。
在图6所示的示例中,高速缓存数据124包括用于多个不同租户中的每个租户的高速缓存。这些包括租户1高速缓存200至租户N高速缓存202。每个租户高速缓存200-202包括一组规范化高速缓存数据对象。高速缓存200包括规范化高速缓存数据对象204-206,而租户N高速缓存202包括规范化高速缓存数据对象208-210。每组规范化对象分别包括一组非共享属性212、214、216和218。它还说明性地分别包括对存储在共享对象池228中的行间可共享对象的一组引用220、222、224和226。引用220-226指向共享对象池228中的共享对象,该共享对象例如包含可以跨表的行共享的数据。规范化缓存数据对象204-210中的每个还说明性地分别包括对共享对象池228中的共享对象的引用230、232、234和236,共享对象池228包括可以跨租户共享的数据。
因此,共享对象池228说明性地包括一组共享对象238-240。它也可以包括其他项242。共享对象238-240包括可以跨行和跨不同租户共享的数据。因此,规范化高速缓存数据对象204-210在其自身内包括不能通过引用共享对象238-240来标识的非共享属性。规范化高速缓存数据对象204-210中的每个还包括对共享对象的引用,其中数据可以从共享对象池228中的共享对象238-240获取。如上所述,图6所示的引用特别地是对包含跨行共享的数据的行间可共享对象的引用220-226和对包括跨租户共享的数据的租户间可共享对象的引用230-236。
图5是示出解析逻辑142如何说明性地生成图6所示的高速缓存结构的流程图。数据项标识符逻辑150首先标识表中的数据项。这由图5的流程图中的框250指示。例如,数据项可以是表中的一行或一列。它可以是一组行或列,或者是另一数据项。
规范化对象构造逻辑152然后确定规范化对象204-210是否已经存在于高速缓存存储库120中,以用于被分析的项。这由框252指示。例如,数据项可能已经被取回或访问并且已经被解析,从而已经存在针对它的规范化对象。替代地,它可能最近未被访问过,因此在高速缓存存储库120中尚不存在数据项的规范化对象。如果数据项的规范化对象(或可共享对象)已经存在,则引用生成器逻辑154在高速缓存120中添加对该已经构造的可共享对象的引用。这由框254指示。然而,如果对于该数据项的规范化对象尚未在高速缓存120中创建,则规范化对象构造逻辑152在高速缓存120中构造规范化对象(并且在可能的情况下,可共享对象)。这由框256指示。处理继续,直到没有更多数据项要解析。这由框258指示。
在高速缓存120中构造规范化对象可以包括:标识不可共享属性,如框260指示的;以及在共享对象池228中构造可共享对象,如框262指示的。它还说明性地包括生成对共享对象池228中的可共享对象的引用,这是可能的。这由框264指示。规范化对象也可以以其他方式构造,这由框266指示。
在这点上,更具体的示例可能会有所帮助。为了举例,假定以上关于图2示出和描述的数据表是正在解析的数据表。
图7示出了可以针对图2所示的表生成的规范化对象270的一个示例。可以看出,规范化对象270包括一列不可共享属性272、对租户间可共享对象的一列引用274、和对行间可共享对象的一列引用276。不可共享属性272可以包括诸如跨行或租户不被共享的唯一标识符等。对租户间可共享对象的引用274可以包括对共享对象池228中的可共享对象的引用,其中所引用的对象共享可以跨租户共享的属性。这可以包括各种不同内容,诸如属性名称、或可以由不同租户共享的任何其他信息。对行间可共享对象的引用276也说明性地包括对共享对象池228中的可共享对象的引用。说明性地,这些共享对象将共享可以跨表中的多个不同行共享的数据。这也可以包括各种不同类型的信息。例如,它可以包括诸如数据类型(例如,多个表具有相同数据类型)或跨多个行通用的其他通用元数据等。
图8示出了一组行间可共享对象278的一个示例。可以看出,行间可共享对象具有与图7中对该对象的引用276相同的指针280。共享属性包括名称282、物理名称284、以及布尔属性286和288。因此,代替图7所示的对象重复所有信息,行间引用276简单地引用对象278中的共享属性。这大大减少了冗余。
图9类似于图8,不同之处在于,它包括共享租户间可共享属性的一组可共享对象290。对象290包括指针292,指针292与图7中找到的对该对象的引用274相同。共享属性包括实体ID 294和列标识符296。同样,不是在图7所示的对象中复制该信息,在图9中***标识可共享对象的简单引用,该简单引用包含该信息。同样,这大大减少了高速缓存存储库120中的冗余。
表2示出了上面图7-9所示的对象的类看起来如何的一个示例:
表2
图10是示出在多租户场景中高速缓存共享逻辑146在与各种租户的高速缓存共享共享对象池228中的可共享对象时的操作的一个示例的流程图。服务逻辑118和特定请求处理逻辑137首先从客户端计算***108-110接收数据访问请求。这由图10的流程图中的框310指示。数据存储库访问逻辑138然后确定数据是否已经被加载到针对该租户的高速缓存存储库120中。例如,可以确定是否已经针对所请求的数据生成了规范化高速缓存数据对象(例如,图6中的对象204)。这由图10的流程图中的框312指示。如果不是,则存储器加载***134解析数据并且将其加载到高速缓存存储库120中,如上所述。在这样做时,它可以生成对共享对象池228中的可共享对象的引用。以这种方式将数据加载到高速缓存中由图10的流程图中的框314指示。
一旦表示所请求数据的一组规范化对象已经加载到高速缓存存储库120中,则高速缓存共享逻辑146从对应租户高速缓存中取回任何不可共享数据。这由框316指示。然后它从共享对象池228中取回任何租户间可共享数据。这由框318指示。在一个示例中,它通过访问规范化数据对象(例如,对象204)和遵循规范化对象204中的租户间引用/指针以从所标识出的可共享对象获取数据来完成这一操作。这由框320指示。它也可以以其他方式从共享对象池228中的任何租户间可共享数据对象中取回共享数据。这由框322指示。
高速缓存共享逻辑146然后从共享对象池228中的共享对象中取回任何行间可共享数据。这由图10的流程图中的框324指示。这也可以通过遵循租户高速缓存中的规范化对象中的行间引用/指针来进行。这由框326指示。它也可以以其他方式进行,如框328所示。
其他服务逻辑136然后基于取回到的数据生成输出,并且通过该输出将取回到的数据返回到请求租户计算***。这由图10的流程图中的框330指示。
因此可以看出,本说明书提供了一种存储器加载***,该***处理来自数据存储的数据,而不改变数据存储在这些数据存储库中的模式,并且将其作为规范化对象存储在租户的高速缓存存储库中。由于规范化对象减少了冗余,因此提供对数据的访问的服务(或进程)的内存占用会大大减少。这也是以一种对请求访问数据的租户计算***不可见的方式进行的。
图11是图1所示的架构100的框图,不同之处在于,其元素设置在云计算架构500中。云计算提供了不需要最终用户了解提供服务的***的物理位置或配置的计算、软件、数据访问和存储服务。在各种实施例中,云计算使用适当的协议在诸如互联网等广域网上提供服务。例如,云计算提供商通过广域网提供应用,并且可以通过网络浏览器或任何其他计算组件对其进行访问。架构100的软件或组件以及对应数据可以存储在远程位置处的服务器上。云计算环境中的计算资源可以整合在远程数据中心位置处,也可以是分散的。云计算基础设施可以通过共享数据中心提供服务,即使它们对于用户而言只是一个接入点。因此,本文中描述的组件和功能可以使用云计算架构从远程位置处的服务提供商提供。替代地,它们可以从常规服务器提供,也可以直接或以其他方式安装在客户端设备上。
本说明书旨在包括公共云计算和私有云计算。云计算(公共和私有)提供了实质上无缝的资源池,并且减少了管理和配置底层硬件基础设施的需求。
公共云由供应商管理,并且通常使用同一基础设施来支持多个消费者。而且,与私有云相反,公共云可以使最终用户摆脱管理硬件的负担。私有云可以由组织本身管理,并且基础设施通常不与其他组织共享。组织仍然在某种程度上维护硬件,诸如安装和维修等。
在图11所示的示例中,一些项类似于图1所示的那些,并且编号类似。图11具体示出了服务计算***102可以位于云502(其可以是公共的、私有的、或者部分是公共的而其他部分是私有的组合)中。因此,用户114和116使用***108和110通过云502访问这些***。
图11还描绘了云架构的另一示例。图11示出了还可以想到,架构100的一些元素可以设置在云502中,而其他元素则不在。例如,数据存储库104和106可以设置在云502内部或外部,并且通过云502访问。无论它们位于何处,它们都可以由***108-110通过网络(广域网或局域网)直接访问,可以由服务托管在远程站点处,或者可以通过云被提供作为服务,或者可以通过驻留在云中的连接服务来访问。本文中考虑了所有这些架构。
还应当注意,架构100或其一部分可以设置在各种不同设备上。这些设备中的一些包括服务器、台式计算机、膝上型计算机、平板计算机或其他移动设备,诸如掌上型计算机、手机、智能电话、多媒体播放器、个人数字助理等。
图12是架构100或其一部分(例如)可以部署在其中的计算环境的一个示例。参考图12,用于实现一些实施例的示例***包括计算机810形式的通用计算设备。计算机810的组件可以包括但不限于处理单元820(其可以包括来自先前附图的处理器或服务器)、***存储器830、和***总线821,该***总线821将包括***存储器在内的各种***组件耦合到处理单元820。***总线821可以是使用各种总线架构中的任何一种的几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、***总线和本地总线。作为示例而非限制,这样的架构包括行业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和***组件互连(PCI)总线(也称为夹层总线)。参考图1描述的存储器和程序可以部署在图12的对应部分中。
计算机810通常包括各种计算机可读介质。计算机可读介质可以是计算机810可以访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质不同于(但不包括)调制数据信号或载波。它包括硬件存储介质,包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储、磁带、磁带、磁盘存储或其他磁存储设备、或者可以用于存储期望信息并且可由计算机810访问的任何其他介质。通信介质通常在传输机制中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指其一个或多个特性以能够将信息编码为信号的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外和其他无线介质等无线介质。以上任何内容的组合也应当被包括在计算机可读介质的范围内。
***存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)831和随机存取存储器(RAM)832。基本输入/输出***833(BIOS)(包含帮助诸如在启动期间在计算机810内的元件之间传递信息的基本例程)通常存储在ROM 831中。RAM 832通常包含立即可访问和/或当前正在由处理单元820操作的数据和/或程序模块。作为示例而非限制,图12示出了操作***834、应用程序835、其他程序模块836和程序数据837。
计算机810还可以包括其他可移除/不可移除的易失性/非易失性计算机存储介质。仅作为示例,图12示出了读取或写入不可移除的非易失性磁性介质的硬盘驱动器841、以及读取或写入可移除的非易失性光盘856(诸如CD ROM或其他光学介质)的光盘驱动器855。可以在示例性操作环境中使用的其他可移除/不可移除的易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能磁盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器841通常通过诸如接口840等不可移除存储器接口连接到***总线821,并且光盘驱动器855通常通过诸如接口850等可移除存储器接口连接到***总线821。
替代地或另外地,本文中描述的功能可以至少部分由一个或多个硬件逻辑组件执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件的类型包括现场可编程门阵列(FPGA)、程序特定的集成电路(ASIC)、程序特定的标准产品(ASSP)、***级芯片***(SOC)、复杂可编程逻辑器件(CPLD)等。
以上讨论并且在图12中示出的驱动器及其相关联的计算机存储介质提供用于计算机810的计算机可读指令、数据结构、程序模块和其他数据的存储。在图12中,例如,硬盘驱动器841被示出为存储操作***844、应用程序845、其他程序模块846和程序数据847。注意,这些组件可以与操作***834、应用程序835、其他程序模块836和程序数据837相同或不同。此处为操作***844、应用程序845、其他程序模块846和程序数据847赋予不同的数字,以说明它们至少是不同的副本。
用户可以通过诸如键盘862、麦克风863和指示设备861(诸如鼠标、轨迹球或触摸板)等输入设备向计算机810中输入命令和信息。其他输入设备(未示出)可以包括操纵杆、游戏手柄、碟形卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到***总线的用户输入接口860连接到处理单元820,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)等其他接口和总线结构连接。视觉显示器891或其他类型的显示设备也经由诸如视频接口890等接口连接到***总线821。除了显示器,计算机还可以包括诸如扬声器897和打印机896等可以通过输出***接口895连接的其他***输出设备。
计算机810使用到诸如远程计算机880等一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机880可以是个人计算机、手持式设备、服务器、路由器、网络计算机、对等设备或其他公共网络节点,并且通常包括上面关于计算机810所述的很多或所有元素。图10所示的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但是也可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内联网和互联网中是司空见惯的。
当在LAN联网环境中使用时,计算机810通过网络接口或适配器870连接到LAN871。在WAN联网环境中使用时,计算机810通常包括调制解调器872或用于通过诸如互联网等WAN 873建立通信的其他装置。可以在内部或外部的调制解调器872可以经由用户输入接口860或其他适当的机制连接到***总线821。在网络环境中,关于计算机810或其部分所描绘的程序模块可以存储在远程存储器存储设备中。作为示例而非限制,图12示出了驻留在远程计算机880上的远程应用程序885。应当理解,所示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
还应当注意,本文中描述的不同示例可以以不同方式组合。也就是说,一个或多个示例的部分可以与一个或多个其他示例的部分组合。所有这些都在本文中被考虑。
示例1是一种计算***,包括:
请求处理逻辑,从请求计算***接收数据访问请求并且标识数据库中要被访问的数据表;
数据访问逻辑,从所述数据库中获取标识出的数据表;
解析逻辑,将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性和对行间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性;以及
高速缓存加载逻辑,将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
示例2是任何或所有先前示例的计算***,其中所述解析逻辑被配置为通过包括对租户间可共享数据对象的引用来将所述数据表解析为所述规范化高速缓存数据对象,所述租户间可共享数据对象包括在多个不同的租户高速缓存***之间可共享的租户间可共享数据。
示例3是根据权利要求2所述的计算***,其中所述解析逻辑包括:
数据标识符逻辑,被配置为标识所述数据表中的数据项;以及
规范化对象构造逻辑,被配置为确定规范化高速缓存数据对象是否已经存在于高速缓存中并且能够针对标识出的数据项中的数据被引用。
示例4是任何或所有先前示例的计算***,其中如果所述规范化对象构造逻辑确定规范化高速缓存数据对象不存在于所述高速缓存存储库中并且能够针对所述标识出的数据项中的数据被引用,则所述规范化对象构造逻辑被配置为构造与标识出的数据项相对应的所述规范化高速缓存数据对象。
示例5是任何或所有先前示例的计算***,其中所述解析逻辑还包括:
引用生成器逻辑,被配置为生成对所述行间可共享数据对象的所述引用。
示例6是任何或所有先前示例的计算***,其中所述引用生成器逻辑还被配置为生成对所述租户间可共享数据对象的所述引用。
示例7是任何或所有先前示例的计算***,其中所述规范化对象构造逻辑被配置为在所述标识出的数据项中标识行间可共享数据并且构造包括所述行间可共享数据的第一可共享对象。
示例8是任何或所有先前示例的计算***,其中所述高速缓存加载逻辑被配置为将所述第一可共享对象加载到所述高速缓存存储库中的共享对象池中。
示例9是任何或所有先前示例的计算***,其中所述规范化对象构造逻辑被配置为在所述标识出的数据项中标识租户间可共享数据并且构造包括所述租户间可共享数据的第二可共享对象。
示例10是任何或所有先前示例的计算***,其中所述高速缓存加载逻辑被配置为将所述第二可共享对象加载到所述高速缓存存储库中的所述共享对象池中。
示例11是任何或所有前述示例的计算***,还包括:
高速缓存共享逻辑,被配置为标识与数据访问请求相对应的规范化高速缓存数据对象,并且从与所述数据访问请求相对应的所述规范化高速缓存数据对象中获取不可共享数据属性,并且基于对所述规范化高速缓存数据对象中的所述行间可共享数据对象的所述引用从所述行间可共享数据对象中获取所述行间可共享数据,并且基于对所述规范化高速缓存数据对象中的所述租户间可共享数据对象的所述引用从所述租户间可共享数据对象中获取租户间可共享数据。
示例12是一种计算机实现的方法,包括:
基于来自请求计算***的数据访问请求,标识数据库中要访问的数据表;
从所述数据库中获取标识出的数据表;
将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性和对行间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性;以及
将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
示例13是任何或所有先前示例的计算机实现的方法,其中解析包括:
通过包括对租户间可共享数据对象的引用来将所述数据表解析为所述规范化高速缓存数据对象,所述租户间可共享数据对象包括在多个不同租户高速缓存***之间可共享的租户间可共享数据。
示例14是任何或所有先前示例的计算机实现的方法,其中解析包括:
标识所述数据表中的数据项;以及
确定规范化高速缓存数据对象是否已经存在于所述高速缓存中并且能够针对标识出的数据项中的数据被引用。
示例15是任何或所有先前示例的计算机实现的方法,其中如果确定规范化高速缓存数据对象不存在于所述高速缓存存储库中并且能够针对所述标识出的数据项中的数据被引用,则在所述高速缓存存储库中构造与所述标识出的数据项相对应的所述规范化高速缓存数据对象。
示例16是任何或所有先前示例的计算机实现的方法,其中解析还包括:
生成对所述行间可共享数据对象的所述引用;以及
生成对所述租户间可共享数据对象的所述引用。
示例17是任何或所有先前示例的计算机实现的方法,其中构造包括:
在所述标识出的数据项中标识行间可共享数据;
构造包括所述行间可共享数据的第一可共享对象;以及
将所述第一可共享对象加载到所述高速缓存存储库中的共享对象池中。
示例18是任何或所有先前示例的计算机实现的方法,其中构造包括:
在所述标识出的数据项中标识租户间可共享数据;
构造包括所述租户间可共享数据的第二可共享对象;以及
将所述第二可共享对象加载到所述高速缓存存储库中的所述共享对象池中。
示例19是任何或所有先前示例的计算机实现的方法,还包括:
标识与数据访问请求相对应的规范化高速缓存数据对象;
从与所述数据访问请求相对应的所述规范化高速缓存数据对象中获取不可共享数据属性;
基于对所述规范化高速缓存数据对象中的所述行间可共享数据对象的所述引用从所述行间可共享数据对象获取所述行间可共享数据;以及
基于对所述规范化高速缓存数据对象中的所述租户间可共享数据对象的所述引用从所述租户间可共享数据对象获取租户间可共享数据。
示例20是一种计算***,包括:
请求处理逻辑,从请求计算***接收数据访问请求并且标识数据库中要被访问的数据表;
数据访问逻辑,从所述数据库获取标识出的数据表;
解析逻辑,将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性、对行间可共享数据对象的引用和对租户间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性,所述租户间可共享数据对象包括在多个不同的租户高速缓存***之间可共享的租户间可共享数据;以及
高速缓存加载逻辑,将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
虽然已经参考优选实施例描述了本发明,但是本领域技术人员将认识到,在不脱离本发明的精神和范围的情况下,可以在形式和细节上进行改变。
Claims (15)
1.一种计算***,包括:
请求处理逻辑,从请求计算***接收数据访问请求并且标识数据库中要被访问的数据表;
数据访问逻辑,从所述数据库获取标识出的所述数据表;
解析逻辑,将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性和对行间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性;以及
高速缓存加载逻辑,将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
2.根据权利要求1所述的计算***,其中所述解析逻辑被配置为:通过包括对租户间可共享数据对象的引用来将所述数据表解析为所述规范化高速缓存数据对象,所述租户间可共享数据对象包括在多个不同的租户高速缓存***之间可共享的、租户间可共享数据。
3.根据权利要求2所述的计算***,其中所述解析逻辑包括:
数据标识符逻辑,被配置为标识所述数据表中的数据项;以及
规范化对象构造逻辑,被配置为确定规范化高速缓存数据对象是否已经存在于所述高速缓存中并且能够针对标识出的所述数据项中的数据被引用。
4.根据权利要求3所述的计算***,其中如果所述规范化对象构造逻辑确定规范化高速缓存数据对象不存在于所述高速缓存存储库中并且能够针对标识出的所述数据项中的数据被引用,则所述规范化对象构造逻辑被配置为构造与标识出的所述数据项相对应的所述规范化高速缓存数据对象。
5.根据权利要求4所述的计算***,其中所述解析逻辑还包括:
引用生成器逻辑,被配置为生成对所述行间可共享数据对象的所述引用。
6.根据权利要求5所述的计算***,其中所述引用生成器逻辑还被配置为生成对所述租户间可共享数据对象的所述引用。
7.根据权利要求4所述的计算***,其中所述规范化对象构造逻辑被配置为:在标识出的所述数据项中标识行间可共享数据,并且构造包括所述行间可共享数据的第一可共享对象。
8.根据权利要求7所述的计算***,其中所述高速缓存加载逻辑被配置为将所述第一可共享对象加载到所述高速缓存存储库中的共享对象池中。
9.根据权利要求8所述的计算***,其中所述规范化对象构造逻辑被配置为:在标识出的所述数据项中标识租户间可共享数据,并且构造包括所述租户间可共享数据的第二可共享对象。
10.根据权利要求9所述的计算***,其中所述高速缓存加载逻辑被配置为将所述第二可共享对象加载到所述高速缓存存储库中的所述共享对象池中。
11.根据权利要求4所述的计算***,还包括:
高速缓存共享逻辑,被配置为标识与数据访问请求相对应的规范化高速缓存数据对象,并且从与所述数据访问请求相对应的所述规范化高速缓存数据对象获取不可共享数据属性,并且基于对所述规范化高速缓存数据对象中的所述行间可共享数据对象的所述引用而从所述行间可共享数据对象获取所述行间可共享数据,并且基于对所述规范化高速缓存数据对象中的所述租户间可共享数据对象的所述引用从所述租户间可共享数据对象获取租户间可共享数据。
12.一种计算机实现的方法,包括:
基于来自请求计算***的数据访问请求,标识数据库中要被访问的数据表;
从所述数据库中获取标识出的所述数据表;
将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性和对行间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性;以及
将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
13.根据权利要求12所述的计算机实现的方法,其中解析包括:
通过包括对租户间可共享数据对象的引用来将所述数据表解析为所述规范化高速缓存数据对象,所述租户间可共享数据对象包括在多个不同的租户高速缓存***之间可共享的、租户间可共享数据。
14.根据权利要求13所述的计算机实现的方法,其中解析包括:
标识所述数据表中的数据项;以及
确定规范化高速缓存数据对象是否已经存在于所述高速缓存中并且能够针对标识出的所述数据项中的数据被引用。
15.一种计算***,包括:
请求处理逻辑,从请求计算***接收数据访问请求并且标识数据库中要被访问的数据表;
数据访问逻辑,从所述数据库中获取标识出的数据表;
解析逻辑,将所述数据表解析为规范化高速缓存数据对象,所述规范化高速缓存数据对象包括不可共享数据属性、对行间可共享数据对象的引用和对租户间可共享数据对象的引用,所述行间可共享数据对象包括跨表的行可共享的数据属性,所述租户间可共享数据对象包括在多个不同的租户高速缓存***之间可共享的租户间可共享数据;以及
高速缓存加载逻辑,将所述规范化高速缓存数据对象加载到与所述请求计算***相对应的高速缓存存储库中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/297,849 | 2019-03-11 | ||
US16/297,849 US10922229B2 (en) | 2019-03-11 | 2019-03-11 | In-memory normalization of cached objects to reduce cache memory footprint |
PCT/US2020/015522 WO2020185316A1 (en) | 2019-03-11 | 2020-01-29 | In-memory normalization of cached objects to reduce cache memory footprint |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113574518A true CN113574518A (zh) | 2021-10-29 |
Family
ID=69743915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080020558.XA Pending CN113574518A (zh) | 2019-03-11 | 2020-01-29 | 用于减少高速缓存内存占用的高速缓存对象的内存式规范化 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10922229B2 (zh) |
EP (1) | EP3938925A1 (zh) |
CN (1) | CN113574518A (zh) |
WO (1) | WO2020185316A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922229B2 (en) | 2019-03-11 | 2021-02-16 | Microsoft Technology Licensing, Llc | In-memory normalization of cached objects to reduce cache memory footprint |
CN113641711B (zh) * | 2021-08-17 | 2024-05-31 | 天津卓盛云科技有限公司 | 一种针对saas租户的数据缓存处理方法、装置及介质 |
US20230418747A1 (en) * | 2022-06-25 | 2023-12-28 | Bank Of America Corporation | Systems and methods for dynamic management of stored cache data based on usage information |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006037613A2 (en) * | 2004-10-04 | 2006-04-13 | Clearpace Software Limited | Method and system for implementing an enhanced database |
CN101652787A (zh) * | 2007-03-30 | 2010-02-17 | 微软公司 | 共享可定制多租户数据的存储器中高速缓存 |
US20180300242A1 (en) * | 2017-04-12 | 2018-10-18 | International Business Machines Corporation | Caching a Block of Data in a Multi-Tenant Cache Storage Device Based on Space Usage Boundary Estimates |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5038278A (en) | 1988-04-01 | 1991-08-06 | Digital Equipment Corporation | Cache with at least two fill rates |
KR960015583B1 (ko) | 1994-06-30 | 1996-11-18 | 김정덕 | 다중프로세서의 캐시메모리 필터링장치 |
US6421683B1 (en) | 1999-03-31 | 2002-07-16 | Verizon Laboratories Inc. | Method and product for performing data transfer in a computer system |
US7987217B2 (en) | 2000-05-12 | 2011-07-26 | Oracle International Corporation | Transaction-aware caching for document metadata |
US6725265B1 (en) | 2000-07-26 | 2004-04-20 | International Business Machines Corporation | Method and system for caching customized information |
US6732237B1 (en) | 2000-08-29 | 2004-05-04 | Oracle International Corporation | Multi-tier caching system |
US6928466B1 (en) | 2000-09-28 | 2005-08-09 | Emc Corporation | Method and system for identifying memory component identifiers associated with data |
BR0208158A (pt) | 2001-03-16 | 2004-03-02 | Netomat Inc | Compartilhamento administração e comunicação de informações sobre uma rede de computador |
WO2003012698A2 (en) * | 2001-08-01 | 2003-02-13 | Harmony Software, Inc. | Method and apparatus for processing a query to a multi-dimensional data structure |
US7624126B2 (en) | 2003-06-25 | 2009-11-24 | Microsoft Corporation | Registering for and retrieving database table change information that can be used to invalidate cache entries |
US8543566B2 (en) * | 2003-09-23 | 2013-09-24 | Salesforce.Com, Inc. | System and methods of improving a multi-tenant database query using contextual knowledge about non-homogeneously distributed tenant data |
US7529728B2 (en) | 2003-09-23 | 2009-05-05 | Salesforce.Com, Inc. | Query optimization in a multi-tenant database system |
US7779039B2 (en) | 2004-04-02 | 2010-08-17 | Salesforce.Com, Inc. | Custom entities and fields in a multi-tenant database system |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US7509330B2 (en) * | 2004-09-03 | 2009-03-24 | Crossroads Systems, Inc. | Application-layer monitoring of communication between one or more database clients and one or more database servers |
US20060235831A1 (en) | 2005-01-14 | 2006-10-19 | Adinolfi Ronald E | Multi-source multi-tenant entitlement enforcing data repository and method of operation |
US7383285B1 (en) * | 2005-03-08 | 2008-06-03 | Unisys Corporation | Method for exposing hierarchical table structures and relationships to OLE DB applications |
US8069153B2 (en) | 2005-12-02 | 2011-11-29 | Salesforce.Com, Inc. | Systems and methods for securing customer data in a multi-tenant environment |
US9135304B2 (en) | 2005-12-02 | 2015-09-15 | Salesforce.Com, Inc. | Methods and systems for optimizing text searches over structured data in a multi-tenant environment |
US7716180B2 (en) | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US8949368B2 (en) | 2006-05-12 | 2015-02-03 | Citrix Systems, Inc. | Method for cache object aggregation |
US7831455B2 (en) | 2007-03-08 | 2010-11-09 | Salesforce.Com, Inc. | Method and system for posting ideas and weighting votes |
US20130205028A1 (en) * | 2012-02-07 | 2013-08-08 | Rackspace Us, Inc. | Elastic, Massively Parallel Processing Data Warehouse |
US9235443B2 (en) * | 2011-11-30 | 2016-01-12 | International Business Machines Corporation | Allocation enforcement in a multi-tenant cache mechanism |
US20150106884A1 (en) * | 2013-10-11 | 2015-04-16 | Broadcom Corporation | Memcached multi-tenancy offload |
US11295273B2 (en) * | 2016-05-16 | 2022-04-05 | Sap Se | Normalized object exposure for collaborative platforms |
US10922229B2 (en) | 2019-03-11 | 2021-02-16 | Microsoft Technology Licensing, Llc | In-memory normalization of cached objects to reduce cache memory footprint |
US11429611B2 (en) * | 2019-09-24 | 2022-08-30 | International Business Machines Corporation | Processing data of a database system |
-
2019
- 2019-03-11 US US16/297,849 patent/US10922229B2/en active Active
-
2020
- 2020-01-29 WO PCT/US2020/015522 patent/WO2020185316A1/en unknown
- 2020-01-29 CN CN202080020558.XA patent/CN113574518A/zh active Pending
- 2020-01-29 EP EP20709378.2A patent/EP3938925A1/en active Pending
-
2021
- 2021-01-14 US US17/148,825 patent/US11422940B2/en active Active
-
2022
- 2022-07-19 US US17/868,183 patent/US12001335B2/en active Active
-
2023
- 2023-06-28 US US18/343,023 patent/US20230393984A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006037613A2 (en) * | 2004-10-04 | 2006-04-13 | Clearpace Software Limited | Method and system for implementing an enhanced database |
CN101652787A (zh) * | 2007-03-30 | 2010-02-17 | 微软公司 | 共享可定制多租户数据的存储器中高速缓存 |
US20180300242A1 (en) * | 2017-04-12 | 2018-10-18 | International Business Machines Corporation | Caching a Block of Data in a Multi-Tenant Cache Storage Device Based on Space Usage Boundary Estimates |
Non-Patent Citations (1)
Title |
---|
周文琼;李庆忠;范路桥;郑述招;: "SaaS模式多租户数据存贮模型的研究与实现", 计算机科学, no. 10, 15 October 2013 (2013-10-15) * |
Also Published As
Publication number | Publication date |
---|---|
WO2020185316A1 (en) | 2020-09-17 |
US20230393984A1 (en) | 2023-12-07 |
US11422940B2 (en) | 2022-08-23 |
EP3938925A1 (en) | 2022-01-19 |
US20200293446A1 (en) | 2020-09-17 |
US20210133102A1 (en) | 2021-05-06 |
US10922229B2 (en) | 2021-02-16 |
US12001335B2 (en) | 2024-06-04 |
US20220350741A1 (en) | 2022-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959110B2 (en) | Dynamic query for external data connections | |
US12001335B2 (en) | In-memory normalization of cached objects to reduce cache memory footprint | |
US9762670B1 (en) | Manipulating objects in hosted storage | |
US11030242B1 (en) | Indexing and querying semi-structured documents using a key-value store | |
US11409742B2 (en) | Efficient database searching for queries using wildcards | |
US11023499B2 (en) | Object relational mapping for relational databases | |
US10248668B2 (en) | Mapping database structure to software | |
US20220374406A1 (en) | KV Database Configuration Method, Query Method, Device, and Storage Medium | |
US9965812B2 (en) | Generating a supplemental description of an entity | |
US7689584B2 (en) | Hybrid groups | |
US11216432B2 (en) | Index data structures and graphical user interface | |
US12001458B2 (en) | Multi-cloud object store access | |
US12008041B2 (en) | Shared cache for multiple index services in nonrelational databases | |
US11947490B2 (en) | Index generation and use with indeterminate ingestion patterns | |
CN112347794B (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
US20090055346A1 (en) | Scalable Ticket Generation in a Database System | |
US20240089339A1 (en) | Caching across multiple cloud environments | |
US20230222068A1 (en) | System and method for optimizing cached memory comprising varying degrees of sla and crg | |
US11113296B1 (en) | Metadata management for a transactional storage system | |
US11797564B2 (en) | System and method for data registration | |
US10896193B2 (en) | Cache fetching of OLAP based data using client to client relationships and data encoding | |
US20090077006A1 (en) | Computer-implemented database systems and related methods | |
CN117112189A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN117575484A (zh) | 库存数据处理方法、装置、设备、介质和程序产品 | |
CN117807090A (zh) | 序列值生成方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |