用于确定数据库高速缓存命中的基于年龄的策略的制作方法

文档序号:11530964阅读:329来源:国知局
用于确定数据库高速缓存命中的基于年龄的策略的制造方法与工艺

本公开涉及专用高性能数据库高速缓存的领域,并且更具体地涉及用于确定数据库高速缓存命中或未命中的基于年龄的策略的技术。



背景技术:

营销人员正在不断地寻求更好的方式来创建、执行和自动化目的在于增加收入和增强客户忠诚度的活动。工作流引擎可以被用来生成在营销活动的进行中使用的输出资料(例如,电子邮件消息)。营销人员可以使用工作流引擎来配置构成营销活动的一系列连接的工作流执行组件。一些引擎允许营销人员通过拖放(drag-and-drop)用户界面和预构建的计划模板的库来可视地设计、管理和自动化多阶段生命周期营销计划。

这样的营销计划和构成其的营销活动的某些方面在生成个性化消息(例如,电子邮件消息、网页内容、广告消息、文本消息、各种形式的移动消息等)的过程中出现。在用于生成个性化消息的常规过程中,营销人员在设计阶段期间为包括常备(stock)消息部分和个性化部分的个性化消息设计模板。常备消息部分包含对于个性化消息的所有接收者都相同的标准化消息。个性化部分包括基于调用对营销人员的关系数据库管理系统(rdbms)或任何其它数据库系统的查询的命令的字段。在处理期间,循环遍历(iteratethrough)数据库系统中的客户记录,以形成一个或多个查询以便检索数据,该数据被用来在向客户发送个性化消息之前填充个性化消息的个性化部分。

当营销人员的数据库系统中的客户记录有数百或数千条时,上文描述的方法可以在合理的时间量内执行。然而,诸如当客户记录的数量增加至数万、数百万或者甚至数十亿条时,上文描述的方法不能非常好地缩放。在期望每秒数百、数千、数万或更多消息的数量级的高吞吐量的这样的情况下,上文描述的方法表现出太长的延迟,以至于不能维持期望的吞吐量。此外,当处理与数据库查找相关联的数据的随机读取时,每个所生成的消息的延迟是高度可变的。

可以通过引入高速缓存设施来平滑观察到的延迟;然而,如果数据在后端数据库上不断变化,则高速缓存将常常是“脏的”或者与后端数据库不同步。



技术实现要素:

本公开提供了用于基于年龄(age)的策略的系统、方法和计算机程序产品,该基于年龄的策略在相同或不同的营销活动的不同执行之间有所不同,以便确定数据库高速缓存命中。某些实施例涉及提供基于年龄的策略的技术解决方案,以用于在高速缓存访问操作期间确定基于年龄的数据库高速缓存命中(或未命中)以及实施基于年龄的策略。这样的实施例既推进相关技术领域又推进外围技术领域。例如,所公开的技术的实践可以减少计算机存储器的使用、减少对计算机处理能力的需求和/或减少用于确定数据库高速缓存命中的基于年龄的策略所需的通信开销。作为一个具体示例,如附图中所描绘的所公开的技术和设备在示出的环境内的使用提供了高性能计算的技术领域的进步、分布式存储的技术领域的进步以及还可以被应用于改进大规模电子邮件营销工具的进步。

实施例包括用于在具有数据库高速缓存的数据库系统中检索数据的处理。从发出请求的计算模块接收具有用于截止(cutoff)指示的值的截止策略。截止指示指示在其之后高速缓存过时(staleness)被容许但是在其之前高速缓存过时不被容许的时间值或其它序列值。当满足截止策略时,数据项直接从高速缓存返回到发出请求的计算模块。通过访问数据库高速缓存以检索数据项的实例以及检索相应数据项元数据的对应实例来发起请求处理。比较器将相应的数据项元数据与截止指示进行比较,并且在满足截止策略时向发出请求的计算模块返回数据项的实例。例如,如果数据项是在截止时间时最新的数据项,则即使该数据项在请求处理时已经过时,该数据项也可以被返回。当不满足截止指示时,访问数据库以检索确实满足截止策略的数据项的实例。在数据库高速缓存中,从数据库检索的数据项与相应的元数据被存储在一起。

本公开的一些实施例解决了依赖于被重复访问并且可以非常快速地改变的数据的营销活动的问题,以便当数据被访问时,高速缓存被该数据填充。在进行营销活动时,需要基于所请求的数据项的年龄特征来确定数据库缓存命中(或未命中),而一些实施例涉及用于提供在相同或不同营销活动的不同执行之间有所不同的基于年龄的策略的方法,以用于在高速缓存操作期间确定数据库高速缓存命中并且实施这种策略。更特别地,本文和附图中公开的是用于确定数据库高速缓存命中的基于年龄的策略的示例性环境、系统、方法和计算机程序产品。

本公开的一些实施例涉及多租户软件即服务(saas)平台,该saas平台可以被用来在任何数字信道中或通过任何数字信道递送高度个性化的消息(例如,促销消息、交易消息等),其中数字信道包括电子邮件信道、移动信道、web信道、广告显示信道、社交媒体信道等。当个性化消息的数量达到数百万甚至数十亿的个性化消息时,非常高(并且可持续地高的)吞吐量是期望的,并且在一些情况下是根据例如吞吐量和延迟来量化的。这些项可以被包括在与服务水平目标(slo)有关的合同或协议中。

本文所描述的架构可以交付和维持预期的slo。实现和维持特定slo的一种方式是通过提供包括高速缓存设施的执行环境,以使得被用来形成消息个性化的高速缓存的数据项与位于外围环境中(例如,在关系数据库管理系统(rdbms)中)的主数据保持同步。当高速缓存数据被填充和/或更新和/或同步时,更新后的指示符元数据在执行环境中被维护。指示符元数据指定与在rdbms数据库中相同的数据项被更新的相应时间相比,特定的高速缓存数据项有多新。从高速缓存中查找个性化数据,并且根据本文公开的技术,系统用足够的标记来维护高速缓存执行环境,以使得可以针对一个或多个基于年龄的或基于序列的有效性测试来测试数据项。

一个实施例包括将数据项存储到数据库中的数据生产者。数据消耗者被配置为利用某种形式的数据库访问(例如,查询语言、应用编程接口、中间件组件等)来执行访问请求。在高性能系统中,数据库访问接口模块的功能包括访问可能保持所请求的项的副本的数据库高速缓存模块(例如,数据库高速缓存)。如图所示,所请求的项源自数据库,并且所请求的项的副本被存储在数据库高速缓存中。一些元数据源自数据库,并且元数据的副本被存储在数据库高速缓存中。数据库高速缓存的大小和性能特性是相对于数据库来调整的。例如,数据库高速缓存可能能够比直接对数据库进行的访问请求更快地响应访问请求。另外举例来说,数据库可能比数据库高速缓存大得多。各种大小优化技术是本领域已知的,并且这样的优化技术常常包括一个或多个成本性能折衷。

各种数据项元数据字段可以被用来实现用于确定数据库高速缓存命中的基于年龄的策略。提供给接收单元(例如,由数据消耗者提供给高速缓存)的基于年龄的策略语句被用来确定是否可以使用数据的高速缓存副本,并且这种确定是基于关于数据的年龄相关的元数据是否满足基于年龄的策略的要求。元数据可以采取多种形式。例如,元数据项的实例可以仅包括元数据或者可以包括与相应数据项相关联的元数据。元数据可以包括关于相应数据项的任何信息,并且在一些情况下,与数据项有关的元数据包括多个字段。数据项元数据包可以包括诸如“as-of(时刻)”截止、截止类型、阈值和含义(sense)之类的截止指示。严格地作为示例,在“as-of”截止中给出的截止指示可以包括时间值(诸如任何格式的日期和/或时间)和/或任何种类的序列值(诸如序列标识符)。或者“as-of”截止可以包括版本号、或字符串、或符号、或任何种类的起始值(诸如日期或诸如表示序列中的位置的序列标识符之类的起始值)。截止类型可以包括“之前(before)”、或者“之前或当时(beforeoron)”、或者“之后(after)”、或者“当时或之后(onorafter)”指示。在一些情况下,阈值对应于截止类型,并且阈值的语义与截止类型相关。例如,如果截止类型是指日期(例如,具有日期截止类型标识符),则阈值将根据日期变化来编码。如果截止类型是指序列中的次序(例如,具有序列截止类型标识符),则阈值将根据次序或序列变化来编码。为了方便,含义指示符可以反转比较的含义。例如,如果含义=1,则比较器在数据满足元数据中给出的截止时肯定地返回。如果含义=0,则比较器在数据满足元数据中给定的截止时否定地返回。

一些实施例支持多个项目的并发执行。多个项目中的任何项目可以独立地指定各自的策略。严格地作为示例,第一项目可以指定在特定时间之前的截止时间,而第二项目可以指定在不同的特定时间之前的截止时间。和/或严格地作为示例,第一项目可以指定在特定时间之后的截止时间,而第二项目可以指定在不同的特定时间之后的截止时间。前述仅仅是示例,并且任何两个或更多个不同的项目可以具有各自的两个或各自的不同的截止点。

前面提到的“之前”和“之后”语义可以是相对于项目开始时间。例如,项目可以被启动,以使得项目的所请求的操作可以独立于对数据项的请求来执行。在一些情况下,项目启动被故意延迟至特定开始时间(例如,延迟至截止时间),并且对数据项的请求被相应地延迟至截止时间。在其它情况下,一个或多个项目在截止时间之前开始(例如,项目启动的开始不延迟至截止时间)。

在一些实施例中,提供了系统架构,在该系统架构中设计营销活动或便于关于营销活动的设计的任何数量的实体可以在saas架构中执行。一个或多个活动规范引擎(例如,电子邮件活动规范引擎、移动活动规范引擎、社交活动规范引擎、显示活动规范引擎、web活动规范引擎等)被用来设计和实现营销活动。在一个实施例中,提供设计应用,以允许用户可视地设计、管理和自动化多阶段营销计划。在一些情况下,设计应用实现拖放用户界面。可以在一个或多个数据库中提供预构建的计划模板的库。除了内容的设计之外,活动设计者可以为相应的活动设计业务工作流。业务过程管理引擎或工作流引擎可以被用来实现用于活动的业务执行动作或工作流。计划引擎包括描述/设计各种判定点以便为可以被实现为多阶段营销活动的活动实现和定义业务工作流的任何实体或应用程序。活动营销人员还可以提供与营销活动所针对的个人有关的目标列表和/或其它数据。营销计划系统的附加组件可配置为向系统的各个组件发布活动数据。数据递送平台被提供,以保持活动和个性化数据。这种活动和个性化数据可以被存储在一个或多个数据高速缓存中,并且这种数据高速缓存可以访问一个或多个数据储存库。营销计划系统包括执行与营销活动有关的业务处理的一个或多个服务器。在这种saas架构中,服务器中的任何服务器可以被用来为用于一个或多个客户的营销活动服务。在一些实施例中,执行环境包括与设计和数据管理隔离的独立执行环境。执行环境使用与位于设计环境中的主数据保持同步的个性化数据的存储器中高速缓存。当高速缓存数据被同步时,指定高速缓存的数据与主数据库中(诸如交互数据储存库中)的时间戳或版本戳相比有多新的元数据被保持在执行环境中。在一些实施例中,可以提供不同类型的引擎,以处理要执行的不同信道/类型的营销活动。在一些实施例中,提供用于为信道中的多个信道处理个性化消息的网关,而不是为每个信道引擎提供单独的网关。计划引擎为任何数量的工作项执行业务过程工作流。每个工作流可以具有若干不同的阶段。采用事件管理器机制来管理系统中的事件。

在一些实施例中,基于年龄的策略被用来确定数据库高速缓存命中或未命中。采用“as-of”语义的高速缓存的方面包括基于从数据库检索的时间和日期和/或基于包括在项的元数据中的时间戳或其它“as-of”指示来给数据项加时间戳。在对高速缓存的项进行数据请求时,“as-of”语义检查以确定所请求的数据项在高速缓存中是否存在。如果所请求的数据项在高速缓存中存在,则进一步检查该数据项,以确定数据项相对于一个或多个基于年龄的策略是否有效。如果所请求的数据项在高速缓存中不存在,则发起用于处理高速缓存未命中的处理。在基于未能识别出根据一个或多个基于年龄的策略是有效的数据项的高速缓存未命中的这样的情况下,发起处理,以尝试直接从数据库检索(例如,而不尝试从任何下级高速缓存层检索)。

在一些实施例中,利用一个或多个参数对“as-of”查找请求进行识别。例如,通过从网络接收“as-of”指示和相关值,访问一个或多个参数。接下来,针对策略语句参数来检查查找请求,以检查根据“as-of”指示请求是否有效。如果请求有效,则从高速缓存服务器为请求服务。如果请求无效,则该过程查询主数据库。

一个示例实施例涉及何时营销人员使用系统来将个性化数据上传到主数据库中,然后对目标接收者执行批量启动。在这种情况下,在确定用于执行高速缓存查找的数据新近性(recency)时,启动开始时间被用于快照。例如,可以想到,主数据库中的数据可以刚好在启动开始时间之后被修改,并且它可能不能用这些改变来同步高速缓存数据。但是,当在启动期间查找个性化数据时,只要高速缓存中的数据在启动开始时间是最新的(例如,如从相应的个性化数据元数据确定的),就可以使用高速缓存的数据。否则,查找回退到主数据库。

在另一个实施例中,作为批量启动的一部分被发送的消息可以包含到网页的链接。当终端用户点击该链接时,提供具有接收者个性化数据的网页。这里再次,链接将存储与批量启动的开始时间对应的“asoftime”。因此,当网页被个性化时,仅当高速缓存数据在所请求的时间是最新的时,高速缓存才为查找请求服务。

在又一个实施例中,营销人员可能希望在他们发起可以针对若干接收者(例如,数百万接收者)的启动之前预览消息。在涉及这种预览的情况下,人们可能不希望使用高速缓存的数据。在这种情况下,“asoftime”将被设置为“latest(最新的)”,然后查找始终回退到主数据库。

在另一个实施例中,向单个接收者发送作为web表单提交结果的个性化消息。在这种情况下,用户可以输入一些数据,并且当用户提交数据时,可以导致个性化消息被发送到该用户。该消息可以具有例如到网页的链接。这里存在多个可能的用例。当消息被个性化时,可能需要对于“asoftime”使用“latest”,因为人们可能不期望高速缓存被实时同步。然而,链接或网页链接的一部分还可以使用对应于消息被生成的时间的“asoftime”。在生成消息的时间与用户点击消息中的链接的时间之间通常有足够的延迟。只要高速缓存中的数据项(例如,优惠券链接)在消息生成时是最近的,那么在用户点击链接时发生的网页个性化将使用高速缓存的数据。

在另一个示例实施例中,营销人员可能不关心数据查找的“as-of”本质。在这种情况下,“as-of”字段和/或任何相应的基于年龄的策略语句可以为空。在这种情况下,不管数据年龄或高速缓存的新近性如何,查找对高速缓存(以及在高速缓存未命中的情况下对数据库)进行,并且被返回到调用者。

在至少一个实施例中,提供了一种方法,包括:在包括还被存储在数据库中的数据的数据高速缓存中,维护数据项和与数据项相关联的元数据,其中元数据指示数据项何时被最后标记为与数据库同步;接收指示截止点的策略,其中根据该截止点,由该元数据最后标记为反映在该截止点之前的任何特定点处被存储在数据库中的数据的数据被认为是无效的,而由该元数据最后标记为反映在该截止点之后的任何特定点处被存储在数据库中的数据的数据被认为是有效的;处理对包括该数据项的多个数据项的请求,其中根据策略,从高速缓存返回数据项是以该截止点相对于与该数据项相关联的元数据的评估为条件的;将与该数据项相关联的元数据与该截止点进行比较,以确定该数据项是否有效;以及响应于确定高速缓存中的该数据项是有效的,从高速缓存返回该数据项。

在另一个实施例中,方法还包括以下的任何组合:(a)还包括当不满足策略时,访问数据库以检索数据的另一个数据项;(b)还包括返回对应于该另一个数据项的指示符元数据;(c)其中该另一个数据项和与该另一个数据项相关联的指示符元数据被确定为无效;(d)其中截止点包括截止类型、或日期截止类型标识符、或序列截止类型标识符、或其任何组合中的至少一个;(e)其中截止点对应于项目开始时间;(f)其中数据项包括个性化数据、或网页链接、或其组合中的至少一个;(g)其中策略作为请求的一部分被接收;(h)其中策略在从请求被接收之前存储该策略的存储装置被访问之后被接收;(i)其中在截止点处最后被标记为同步的数据也被认为是有效的;(j)其中截止点在请求被接收的特定时间之前;(k)其中元数据通过利用对数据项的最后更新的时间戳来指示何时数据项被最后标记为与数据库同步;(l)其中元数据通过利用对数据项的最后更新的序列标记来指示何时数据项被最后标记为与数据库同步,其中该序列标记相对于对数据项的其它更新的其它序列标记;(m)其中该截止点在项目请求被接收的特定时间之后,其中该项目请求指定可以独立于对多个数据项的请求而被执行的其它请求的操作,并且其中对多个数据项的请求被延迟至该截止点,并且其中其它请求的操作中的至少一个不被延迟至该截止点;(n)其中该截止点在项目请求被接收的特定时间之后,其中项目请求指定可以独立于对多个数据项的请求被执行的其它请求的操作,并且其中其它请求的操作中的至少一个不被延迟至该截止点。

一些实施例包括在非暂态计算机可读介质中实施的计算机程序产品,该计算机可读介质具有存储在其上的指令序列,该指令序列当由处理器执行时,使得该处理器执行本文描述的方法和/或元件的组合中的任何方法和/或元件的组合。一些实施例涉及包括用于实现本文描述的方法或元件中的任何方法或元件的装置的系统。

下文以及在具体实施方式、附图和权利要求中描述本公开的方面、目的和优点的进一步细节。背景技术的前述一般描述和以下具体实施方式都是示例性和解释性的,并且不旨在限制权利要求的范围。

附图说明

下文描述的附图仅用于说明的目的。附图不旨在限制本公开的范围。

图1a1例示了根据实施例的、在实现用于确定数据库高速缓存命中的基于年龄的策略的营销计划中使用的数据流实践。

图1a2例示了根据实施例的、被用来实现用于确定数据库高速缓存命中的基于年龄的策略的数据项元数据字段。

图1a3例示了根据实施例的、在实现用于确定数据库高速缓存命中的基于年龄的策略的营销计划中使用的数据流实践。

图1b1是描绘在确定数据库高速缓存命中时处理高速缓存访问的逻辑的流程图。

图1b2是描绘根据实施例的、在遵守用于确定数据库高速缓存命中的基于年龄的策略的情况下处理高速缓存访问的逻辑的流程图。

图1c是根据实施例的、遵守用于确定数据库高速缓存命中的基于年龄的策略的营销计划系统的框图。

图1d是示出根据实施例的、在确定数据库高速缓存命中或未命中时对基于年龄的策略的使用的比较图。

图2是根据一些实施例的、遵守用于确定数据库高速缓存命中的基于年龄的策略的数据递送平台架构的框图。

图3是根据一些实施例的、包括遵守用于确定数据库高速缓存命中的基于年龄的策略的个性化应用的个性化引擎的框图。

图4描绘了根据实施例的、个性化应用和高速缓存服务器之间的数据流,其中该高速缓存服务器遵守用于确定数据库高速缓存命中的基于年龄的策略。

图5描绘了用于实现其中可以实践本公开的一个或多个实施例的营销计划系统的服务器映射。

图6呈现了其中可以实践本公开的一个或多个实施例的数据高速缓存架构。

图7示出了根据实施例的、由个性化应用使用以遵守用于确定数据库高速缓存命中的基于年龄的策略的数据高速缓存访问方法。

图8示出了其中可以实践本公开的一个或多个实施例的高可用性个性化数据高速缓存。

图9描绘了其中可以实践本公开的一个或多个实施例的并行访问个性化数据高速缓存使用模型。

图10描绘了根据一些实施例的、用来实现用于确定数据库高速缓存命中的基于年龄的策略的个性化数据高速缓存填充方法。

图11描绘了根据实施例的、作为在遵守用于确定数据库高速缓存命中的基于年龄的策略的情况下处理高速缓存访问的计算模块的布置的系统组件。

图12a和图12b描绘了作为被互连以便实现本文公开的实施例中的某些实施例的计算模块的布置的系统组件。

图13a、图13b和图13c描绘了适合于实现本公开的实施例和/或在本文描述的环境中使用的组件的示例性架构。

具体实施方式

本公开的一些实施例解决了依赖于被重复访问并且可以非常快速地改变的数据的营销活动的问题,以便当数据被访问时,高速缓存被该数据填充。在进行营销活动时,需要基于所请求的数据项的年龄特征来确定数据库缓存命中(或未命中),并且一些实施例涉及用于提供基于年龄的策略的方法,该基于年龄的策略在相同或不同营销活动的不同执行之间有所不同,以用于在高速缓存操作期间确定数据库高速缓存命中并且实施这种策略。更特别地,本文和附图中公开的是用于确定数据库高速缓存命中的基于年龄的策略的示例性环境、系统、方法和计算机程序产品。

概述

本公开的一些实施例涉及多租户软件即服务(saas)平台,该saas平台可以被用来在任何数字信道中或通过任何数字信道递送高度个性化的消息(例如,促销消息、交易消息等),其中数字信道包括电子邮件信道、移动信道、web信道、广告显示信道、社交媒体信道等。当个性化消息的数量达到数百万甚至数十亿的个性化消息时,非常高(并且可持续地高的)吞吐量是期望的,并且在一些情况下是在例如吞吐量和延迟方面来量化的。这些方面可以被包括在与服务水平目标(slo)有关的合同或协议中。

本文所描述的架构可以交付和维持预期的slo。实现和维持特定slo的一种方式是通过提供包括高速缓存设施的执行环境,以使得被用来形成消息个性化的高速缓存的数据项与位于外围环境中(例如,在关系数据库管理系统(rdbms)中)的主数据保持同步。当高速缓存数据被填充和/或更新和/或同步时,更新后的指示符元数据在执行环境中被维护。指示符元数据指定与在rdbms数据库中相同的数据项被更新的相应时间相比,特定的高速缓存数据项有多新。从高速缓存中查找个性化数据,并且根据本文公开的技术,系统用足够的标记来维护高速缓存执行环境,以使得可以针对一个或多个基于年龄的或基于序列的有效性测试来测试数据项。

本文参照附图描述各种实施例。应当注意到,附图不一定是按比例绘制的,并且在所有附图中具有相似结构或功能的元件有时由相同的附图标记表示。还应当注意到,附图仅旨在便于对所公开的实施例的描述,它们不代表对所有可能实施例的详尽处理,并且它们不旨在把任何限制归因于权利要求的范围。此外,示出的实施例不需要描绘在任何特定环境中的使用的所有方面或优点。结合特定实施例描述的方面或优点不一定限于该实施例,并且可以在任何其它实施例中实践,即使没有这样示出。另外,在本说明书各处对“一些实施例”或“其它实施例”的引用是指如被包括在至少一个实施例中的、关于实施例描述的特定特征、结构、材料或特性。因此,在本说明书的各个地方,短语“在一些实施例中”或“在其它实施例中”的出现不一定指的是相同的一个或多个实施例。

定义

下文定义本说明书中使用的术语中的一些术语,以便于参考。所给出的术语及其相应的定义不严格限于这些定义,术语还可以由该术语在本公开内的使用来定义。本文使用术语“示例性”以意味着充当示例、实例或说明。在本文中被描述为“示例性”的任何方面或设计不一定被解释为比其它方面或设计更优选或有利。相反,词语“示例性”的使用旨在以具体的方式呈现概念。如在本申请和所附权利要求中使用的,术语“或”旨在意味着包容性的“或”而不是排他性的“或”。即,除非另有规定或者从上下文是清楚的,否则“x采用a或b”旨在意味着自然的包容性组合中的任何自然的包容性组合。即,如果x采用a、x采用b或x采用a和b两者,则在前述实例中的任何前述实例下都满足“x采用a或b”。除非另有规定或者从上下文来看清楚的是针对单数形式,否则在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为意味着“一个或多个”。

现在详细参考某些实施例。所公开的实施例不旨在限制权利要求。

示例性实施例的描述

图1a1例示了在实现用于确定数据库高速缓存命中的基于年龄的策略的营销计划中使用的数据流实践1a100。作为选项,数据流实践1a100或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,数据流实践1a100或其任何方面可以在任何期望的环境中实现。

图1a1中所示的实施例包括将数据项存储到数据库104中的数据生产者102。数据消耗者114被配置为利用某种形式的数据库访问(例如,查询语言、应用编程接口、中间件组件等)来执行访问请求110。在高性能系统中,数据库访问接口模块106的功能包括访问可能保持所请求项的副本的数据库高速缓存模块(例如,数据库高速缓存108)。如图所示,所请求的项源自数据库104(例如,参见数据项1171),并且所请求的项的副本被存储在数据库高速缓存中(例如,参见数据项1171c)。同样如图所示,一些元数据源自数据库104(例如,参见数据项元数据1191),并且元数据的副本被存储在数据库高速缓存中(例如,参见数据项元数据1191c)。

相对于数据库104来调整数据库高速缓存108的大小和性能特性。例如,数据库高速缓存可能能够比直接对数据库进行的访问请求更快地响应访问请求。同样作为示例,数据库104可以比数据库高速缓存大得多。各种大小优化技术是本领域已知的,并且这样的优化技术常常包括一个或多个成本性能折衷。

在一些情况下(例如,在营销活动的执行期间),数据消耗者可能需要验证所请求的数据项的有效性,并且这种有效性可以取决于一个或多个基于年龄的策略116的规范。一个或多个基于年龄的策略的规范可以被存储为元数据,并且可以经网络(例如,以基于年龄的策略语句112的形式)发送到接收单元(诸如数据库访问接口模块106)。数据库访问接口模块106的各种实施例可以包括(例如,利用数据项元数据字段)将数据项的年龄特性与(例如,如在基于年龄的策略语句112中给出的)基于年龄的需求进行比较的比较操作。关于图1a2示出并且描述比较器的一个可能的实施例和元数据的一个可能的编码(codification)。

图1a2例示了被用来实现用于确定数据库高速缓存命中的基于年龄的策略的数据项元数据字段。如关于图1a1所描述的,数据生产者102将数据项存储到数据库104中。

被提供给接收单元(例如,由数据消耗者提供给高速缓存)的基于年龄的策略语句112被用来确定是否可以使用数据的高速缓存副本,并且这种确定基于关于数据的与年龄相关的元数据是否满足基于年龄的策略的要求。元数据可以采取许多形式。例如,元数据项的实例可以仅包括元数据,或者可以包括与相应数据项相关联的元数据。元数据可以包括关于相应数据项的任何信息,并且在一些情况下,与数据项有关的元数据包括多个字段。如图所示,数据项元数据包119可以包括诸如“as-of”截止141、截止类型142、阈值143和含义144之类的截止指示。严格地作为示例,在“as-of”截止141中给出的截止指示可以包括诸如任何格式的日期和/或时间之类的时间值和/或诸如序列标识符之类的任何种类的序列值。“as-of”截止或者可以包括版本号、或字符串、或符号、或任何种类的起始值(诸如日期或诸如表示序列中的位置的序列标识符之类的起始值)。截止类型142可以包括“之前”、或者“之前或当时”、或者“之后”、或者“当时或之后”指示。在一些情况下,阈值143对应于截止类型142,并且阈值143的语义与截断类型142相关。例如,如果截止类型是指日期(例如,具有日期截止类型标识符),则阈值将根据日期变化来编码。如果截止类型是指序列中的次序(例如,具有序列截止类型标识符),则阈值将根据次序或序列变化来编码。为了方便,含义指示符(例如,参见含义144)可以反转比较的含义。例如,如果含义=1,则当数据满足元数据中给出的截止时比较器肯定地返回。如果含义=0,则当数据满足元数据中给定的截止时比较器否定地返回。

在所示的数据流中,数据消耗者114发出访问请求110连同基于年龄的策略语句112。比较器140向数据库高速缓存108发出请求127。数据库高速缓存返回命中/未命中指示126连同所请求的数据(例如,参见返回的数据129),其中所请求的数据包括与所请求的项有关的元数据。利用所传入的基于年龄的策略语句和与所请求的项有关的元数据,比较器140执行截止类型处理和截止阈值处理。比较器可以发出如下信号或指示:(1)当比较甚至在应用阈值之前也认为所请求的数据项的高速缓存副本是有效的时,信号被置为有效(assert)(例如,参见无阈值宽限(thresholdgrace)的有效的信号132);(2)当比较在应用阈值之后认为所请求的数据项的高速缓存副本有效时,信号被置为有效(例如,参见有阈值宽限的有效的信号134);(3)当存在未指定的错误时,错误指示被置为有效(例如,参见错误信号136);以及(4)当比较器从数据库104检索数据时,等待信号被置为有效(例如,参见等待信号138)。

当比较操作认为所请求的数据项的高速缓存副本不是有效的或不是有效的“as-of”时,比较器可以自动查询数据库(例如,参见查询120)并且高速缓存结果125。在这个实施例中,结果包括对应于访问请求110的数据以及与访问请求110有关的元数据(参见数据库表105),当对应于访问请求110和基于年龄的策略语句112(例如,相应的基于年龄的策略语句)的数据已经被检索时,它可以被递送到请求者(例如,数据消耗者114)。

图1a3例示了数据项及其相应的数据项元数据之间的异步改变。数据生产者可以更新数据项(例如,参见数据项1171)。同样,数据生产者可以更新数据项元数据(例如,参见数据项元数据1191)。在数据项元数据保持不变的同时,数据项可以改变。或者在数据项保持不变的同时,数据项元数据可以改变。环境支持多个项目(例如,项目11071、项目21072和项目n107n)的并发执行。多个项目中的任何项目可以独立地指定各自的策略。严格地作为示例,第一项目(例如,项目11071)可以指定在特定时间之前的截止时间,而第二项目(例如,项目21072)可以指定在不同的特定时间之前的截止时间。和/或严格地作为示例,第一项目(例如,项目11071)可以指定在特定时间之后的截止时间,而第二项目(例如,项目21072)可以指定在不同的特定时间之后的截止时间。前述仅仅是示例,并且任何两个或更多个不同的项目可以具有各自的两个或各自的不同的截止点。

上文提到的“之前”和“之后”语义可以是相对于项目开始时间。例如,项目可以被启动,以使得项目的所请求的操作可以独立于对数据项的请求来执行。在一些情况下,项目启动被有意地延迟至特定开始时间(例如,延迟至截止时间),并且对数据项的请求被相应地延迟至截止时间。在其它情况下,一个或多个项目在截止时间之前开始(例如,项目启动的开始不被延迟至截止时间)。

图1b1是描绘在确定数据库高速缓存命中时处理高速缓存访问的逻辑的流程图1b100。作为选项,流程图1b100或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,流程图1b100或其任何方面可以在任何期望的环境中实现。

图1b1中所示的实施例仅仅是由接收单元(例如,高速缓存单元)操作的高速缓存逻辑的一个示例。该流程在接收到高速缓存访问检索策略语句时开始(参见步骤111)。当接收单元接收到对特定数据项(例如,高速缓存访问检索策略语句覆盖的任何数据项)的请求时(参见操作1181),逻辑流程继续。然后,作出判定,以确定所请求的数据项是否在高速缓存中(参见判定1201)。如果是(参见“是”分支),则将所请求的数据项返回到请求者(参见操作1261)。当确定所请求的数据不在高速缓存中时,采用“否”分支。在一些情况下,实现多级高速缓存,并且尝试从下一级进行检索(参见操作122)。

图1b2是描绘在遵守用于确定数据库高速缓存命中的基于年龄的策略的情况下处理高速缓存访问的逻辑的流程图1b200。作为选择,流程图1b200或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,流程图1b200或其任何方面可以在任何期望的环境中实现。

图1b2中所示的流程在接收到对特定数据项的请求时开始(参见操作1182)。然后作出判定,以确定所请求的数据项是否在高速缓存中(参见判定1202)。如果是(参见“是”分支),则利用上文提到的基于年龄的策略语句中的任何一个或多个基于年龄的策略语句来比较数据项(参见判定128)。当数据项确实满足基于年龄的策略时,数据被返回到请求者(参见操作1262)。如果采用可用性测试(例如,参见判定1202)的“否”分支或策略测试(参见判定128)的“否”分支,则从数据库检索所请求的数据项(参见操作123)。从数据库检索的数据项被标记或以其它方式与相应的数据项元数据相关联(参见操作130)并且被存储在高速缓存中(参见操作124)。

图1b2中所示的实施例仅仅是一个示例。本文在下文中示出并且描述附加的示例。特别地,参考图1c示出和讨论在执行营销计划的同时可以交付和维持预期的slo的系统。

图1c是遵守用于确定数据库高速缓存命中的基于年龄的策略的营销计划系统1c00的框图。作为选择,营销计划系统1c00或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,营销计划系统1c00或其任何方面可以在任何期望的环境中实现。

图1c是其中可以实践本公开的一个或多个实施例的系统架构的示意图。该架构的一部分包括设计要在saas架构中执行的营销活动或便于关于要在saas架构中执行的营销活动的设计的任何数量的实体。如图所示,一个或多个活动规范引擎(例如,电子邮件活动规范引擎1561、移动活动规范引擎1562、社交活动规范引擎1563、显示活动规范引擎1564、web活动规范引擎1565等)被用来设计和实现营销活动。这些活动规范引擎可以被实现为例如在计算系统上运行的设计应用,该设计应用可配置为支持为特定信道和/或特定介质定制的活动的设计。这样的信道和/或介质包括例如电子邮件、移动应用、社交媒体、web出口(outlet)和各种类型的显示器。营销人员或活动设计者可以使用设计应用来设计要在电子邮件活动中出现的内容(例如,文本、图像、视频等),然后这些内容可以被存储到一个或多个数据库(例如,客户数据库1681、客户数据库1682、客户数据库1683等)中。在一个实施例中,提供设计应用,以允许用户可视地设计、管理和自动化多阶段营销计划。在一些情况下,设计应用实现拖放用户界面。可以在一个或多个数据库中提供预构建的计划模板的库。

除了内容的设计之外,活动设计者还可以为相应的活动设计业务工作流。业务过程管理引擎或工作流引擎(例如,计划引擎151)可以被用来实现用于活动的业务执行动作或工作流。计划引擎包括描述/设计各种判定点以实现和定义可以被实现为多阶段营销活动的用于活动的业务工作流的任何实体或应用。活动营销人员还可以提供与营销活动所针对的个体有关的目标列表和/或其它数据。上面提到的目标列表和/或其它数据可以包括例如客户列表以及用于识别在活动执行的过程期间应当是个性化消息的目标的客户列表的子集的指令。因此,客户数据库168可以包括与客户有关的关系数据。

营销计划系统的附加组件可配置为向系统的各个组件发布活动数据。例如,数据发布者模块(例如,数据发布者1661、数据发布者1662、数据发布者i663、数据发布者166n等)用来将来自客户数据库的数据发布到保持活动和个性化数据的存储结构,以供执行环境访问。提供数据递送平台174,以保持活动和个性化数据。这样的活动和个性化数据可以被存储在一个或多个数据高速缓存中,并且这样的数据高速缓存可以访问一个或多个数据储存库,诸如示出的交互数据储存库176(idr)。

营销计划系统1c00包括执行与营销活动有关的业务处理的一个或多个服务器。在这个saas架构中,示出的服务器中的任何服务器可以被用来为针对一个或多个客户的营销活动提供服务。在一些实施例中,执行环境包括与设计和数据管理隔离的独立的执行环境。执行环境使用与位于设计环境中的主数据保持同步的个性化数据的存储器中高速缓存。当高速缓存数据被同步时,指定高速缓存的数据与主数据库中(诸如,交互数据储存库176中)的时间戳或版本戳相比有多新的元数据被保持在执行环境中。

在一些实施例中,可以提供不同类型的引擎,以处理要执行的不同信道/类型的营销活动。例如,对于电子邮件活动,可以采用一个或多个电子邮件信道引擎151。电子邮件信道引擎可以包括管理电子邮件信道执行的调度器(dispatcher)实体。这个实体(例如,进程或线程)管理放在队列中的用于由各种个性化引擎(pe)(可能结合web服务158)进行处理的工作。个性化引擎可以采用交互模板引擎(ite)执行消息个性化。然后个性化的电子邮件被发送到电子邮件网关以被处理,以用于传输到活动目标。为诸如电子邮件信道引擎1521、移动信道引擎1522、社交信道引擎1523、显示信道引擎1524和web信道引擎1525之类的其它信道提供类似的引擎。

在一些实施例中,提供网关,以处理用于信道中的多个信道的个性化消息,而不是为每个信道引擎提供单独的网关。在该方法中,公共网关包括允许(例如,利用使用诸如javascript之类的脚本语言的脚本)将消息提供给不同信道目的地的可扩展框架。这允许快得多地实现新的信道,因为不需要为新的信道定制设计整个信道引擎架构。相反,可以为到公共网关的消息实现通用信道引擎,然后该消息以可定制的方式被提供给定制信道。

计划引擎执行用于任何数量的工作项的业务过程工作流。每个工作流可以具有若干不同的阶段。在一个实施例中,阶段被实现为表示业务过程工作流内的组件的抽象类。阶段的示例包括电子邮件活动阶段、短消息服务(sms)活动阶段、历时计时器活动阶段、网关(或“交换机”)活动阶段或任何其它活动阶段。在一些实施例中,不同的业务逻辑可以与不同类型的阶段中的每个类型的阶段相关联。

在一些实施例中,阶段可以包括该阶段内的多个“状态”,并且该多个状态可以由状态转移图来描述。一组工作项可以被输入到给定的阶段。例如,阶段可以包括就绪状态、挂起状态、执行状态、阻塞状态、计时器等待状态和可丢弃状态。在就绪状态下,工作项的组准备好用于阶段的执行。当最初创建一组工作项并且阶段是业务过程工作流的第一阶段时,该组处于就绪状态。当工作项的整个组一起从前一阶段移动到当前阶段时,该组处于就绪状态。在挂起状态下,阶段正在缓冲成员并且没有准备好执行。一旦前一阶段已经完成执行,组的状态就转移到就绪状态。在执行状态下,阶段正在对工作项的组执行。在阻塞状态下,工作项的组未能执行,例如发生错误。在执行状态完成之后,如果业务过程工作流中存在附加的阶段,则组状态转移到用于业务过程工作流的下一阶段的“就绪状态”。如果不存在附加的阶段,则组状态转移到可丢弃状态。当阶段是业务过程工作流的最后一个阶段或者当没有后续阶段时,一组工作项变为可丢弃的。可以调度“垃圾收集”过程,以在低负载时间处执行垃圾收集并且可以删除用于该阶段的组成员和组。计时器等待状态与作为具有未来到期日期的“经历时间”阶段的阶段相关联。在2011年1月5日提交的美国申请序列号no.12/985,269中描述关于实现业务工作流的方法的进一步细节。

事件管理器机制(例如,事件处理引擎178)被采用以管理系统中的事件。例如,一旦消息由网关发送,则生成由事件处理引擎管理的“事件”。在消息被发送之后,可以从各种源发生交互。例如,诸如当电子邮件消息的接收者采取导致下一个事件的某种动作时,可以在在线世界内发生交互。这样的动作和/或由动作引起的事件可以由各种web服务处理。这种web服务可以包括但不限于发布服务器159、webapi服务器165、反弹(bounce)服务器161或cookie服务器162。严格地作为示例,当目标接收者接收到来自活动的电子邮件时,该目标接收者可以(例如,从诸如膝上型计算机、智能电话、平板计算机等之类的客户端设备)打开电子邮件,然后采取动作,诸如(1)回复消息、(2)导航到网站、(3)填写表单等,然后这些动作中的任何动作使得web服务中的对应组件生成新事件并且将事件的方面传送到系统中的事件处理引擎178。因此,事件管理器充当新事件的“监听者”。系统中的事件的队列被维护,并且事件数据库保持与事件有关的数据。一个或多个处理引擎可以被用来处理系统中的事件。

事件可以导致诸如通过使用报告工具184和/或通过使用在线分析处理182(olap)系统来报告事件数据。此外,事件数据可以被存储到一个或多个数据仓库180中。数据可以从(一个或多个)数据仓库被发送回客户数据库(例如,以便更新客户数据以供在将来的活动中使用)。服务器(诸如示出的连接服务器170)可以被用来向客户数据库传递数据和传递来自客户数据库的数据。在一些实施例中,连接服务器从合作者和/或客户云(例如,云1721、云1722)接收数据,并且在将数据发送到客户数据库之前执行提取、变换和加载处理(etl处理)。还可以利用任何本领域已知的技术向/从合作者的数据库和客户的数据库发送数据。

营销活动的执行以及尤其是个性化电子邮件的准备对日期(例如,“as-of”日期)和版本敏感。照此,利用高速缓存子系统可以便于利用数据的“as-of”有效性来准备极大数量的个性化电子邮件。在一些情况下,最近最少使用高速缓存(lru高速缓存)对于某些类型的数据是足够的,但是在准备极大数量的个性化电子邮件的过程期间需要“as-of”高速缓存的性能和语义二者。

图1d是示出在确定数据库高速缓存命中或未命中时基于年龄的策略的使用的比较图表1d00。最近最少使用高速缓存的方面包括当数据项被输入到高速缓存中时对该数据项加时间戳。在对高速缓存的项进行数据请求时,检查lru高速缓存,以确定所请求的数据项是否存在于高速缓存中。如果是,并且如果高速缓存中的数据项被认为是“新鲜的”或“没有过时的”,则所请求的数据项被返回到请求者。如果高速缓存中的数据项被认为是“不新鲜的”或“过时的”,则发起用于处理高速缓存未命中的处理。在一些系统中,高速缓存系统采用多级或多层高速缓存,并且在这样的系统中,用于处理高速缓存未命中的处理包括尝试从下一级高速缓存检索。

采用“as-of”语义的高速缓存的方面包括基于从数据库检索的时间和日期和/或基于包括在数据项元数据中的时间戳或其它“as-of”指示来对数据项加时间戳。在对高速缓存的项进行数据请求时,“as-of”语义检查以确定所请求的数据项是否存在于高速缓存中。如果是,则进一步检查数据项,以确定该数据项相对于一个或多个基于年龄的策略是否有效。如果不是,则发起用于处理高速缓存未命中的处理。在基于根据一个或多个基于年龄的策略未能识别出有效的数据项的高速缓存未命中的这样的情况下,发起处理以尝试直接从数据库检索(例如,而不尝试从任何下级高速缓存层检索)。该方法部分来源于以下认识:即,如果高速缓存中的数据项根据“as-of”语义被认为是无效的,则在任何其它(一个或多个)高速缓存级中的数据项的任何其它副本的出现也将根据同一“as-of”语义被认为是无效的。照此,从数据库查询所请求的数据项,而不遍历多级高速缓存。

如现在所理解的,与(例如,利用“as-of”有效性测试的)基于年龄的策略高速缓存有关的语义与(例如,利用挂钟(wall-clock)时间戳和挂钟有效性测试的)lru高速缓存的语义有区别。

图2是遵守用于确定数据库高速缓存命中的基于年龄的策略的数据递送平台架构200的框图。作为选项,数据递送平台架构200或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,数据递送平台架构200或其任何方面可以在任何期望的环境中实现。

数据递送平台架构200的方面被调整,以交付非常高水平的可预测性、性能、可用性和可扩展性。该架构包括集成数据递送平台175(iddp)的一个或多个实例、交互数据储存库176(idr)的一个或多个实例、元数据数据库230以及多级存储器中高速缓存204。可以通过api来访问和/或控制iddp和idr。如图所示,查找api206提供到/来自iddp的接口,而查询api208提供到idr的接口。到/来自iddp或idr的api调用可以携带数据对象或指向数据对象的指针。严格地作为一个示例,查找api206可以接收包括高速缓存数据更新228的对象。更特别地,个性化应用212的操作可以接收来自客户数据库的数据,并且可以利用数据递送平台来处理来自客户数据库的这样的数据。在个性化过程期间,个性化应用可以存储和/或访问保持在多级存储器中高速缓存204中的数据。数据还可以由各种数据发布者存储和/或访问。例如,并且如图所示,数据发布者166可以将已发布数据214递送到多级存储器中高速缓存204,并且数据发布者166可以将已发布元数据216递送到元数据数据库230。

数据递送平台174可以包括任何数量的高速缓存服务器,并且这样的高速缓存服务器可以由利用商用硬件(例如,linux服务器)构建的服务器组成。示出的多级存储器中高速缓存204可以是单个存储器高速缓存,或者可以分布在一组高速缓存服务器中。可以用包括与不同活动有关的个性化数据的个性化数据的任何分区来填充多级存储器中高速缓存204。这种架构支持可扩展性,以便即使在并发进行的活动增加时也能在高吞吐量下维持大量的并发查找并且具有可预测的低毫秒响应时间。这种架构支持来自数据发布者的大量的数据插入和更新,以及来自应用的大量更新。可以通过在并发进行的活动的数量增加时添加高速缓存服务器来扩展该方法。在一些实施方式中,每个高速缓存服务器具有相应的热备份服务器,以便于系统范围的高可用性。高速缓存被存留(persist)在本地高速存储装置上,以便在停机和故障后快速启动。

示出的元数据数据库包括高度可用的元数据事务数据库,以支持原子性、一致性、隔离和持久性(acid)。元数据数据库存储从客户数据库发布的活动元数据,并且可以存储如在营销活动的执行期间可以生成的实况(live)链接。在一些环境中,元数据数据集小并且可以被包含在半导体存储器中以供快速访问。

如前面所指示的,示出的数据发布者166向数据递送平台发布内容数据和元数据。数据发布者可以对接(interface)到客户数据库并且可以被实现为如下java应用:该java应用通过从客户数据库检索数据并且将其格式化(例如,格式化成一个或多个表)来发布与活动有关的活动个性化数据,以用于递送到交互数据递送平台。在某些实施例中(例如,诸如在高可用性安装中),表被并行发布到多个高速缓存服务器(例如,一对高可用性服务器)。在一些情况下,发布表包括创建对应的优化的高速缓存表、最初从源表填充高速缓存表、连续地将源表改变传播到高速缓存表、以及当高速缓存表不再由任何正在进行的活动中涉及的组件引用时取消发布该表。

元数据发布者将已发布的活动元数据传播到元数据数据库,并且在活动被取消发布时从元数据数据库中删除或禁用已发布的元数据。反向复制过程将来自元数据数据库的实况链接传播到客户数据库。内容发布商将已发布的活动内容传播到执行内容存储库,并且清除已发布的活动未引用的已发布内容。可以从合作者和/或客户数据(例如,从云1721和/或从云1722)填充客户数据库。在一些情况下,(例如,来自云1721和/或从云1722的)合作者和/或客户数据在被填充到客户数据库之前,被排队到更新队列222中。

个性化应用212可以包括各种各样的应用,这些应用包括启动应用、网络信道发布应用以及用户界面(ui)应用。对于活动预览和测试链接,以及对于web信道发布应用,ui用来读取来自客户数据库的个性化数据和活动元数据。由web信道应用接收的数据更新被排队到客户数据库,并且最终通过数据发布者被发布到高速缓存。在这期间(例如,在数据更新由web信道应用接收之后并且在数据更新被发布到高速缓存之前),更新可以被填充到(例如,主备份服务器以及热备份服务器二者上的)多个高速缓存中,以使得这些更新立即可用于访问。这些个性化应用212可以包括一个或多个个性化引擎实例。

图3是包括遵循用于确定数据库高速缓存命中的基于年龄的策略的个性化应用的个性化引擎300的框图。作为选项,个性化引擎300或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,个性化引擎300或其任何方面可以在任何期望的环境中实现。

个性化引擎可以被划分为嵌入在服务器上运行的服务器应用内的组件。在这样的划分中,服务器应用创建引擎的实例(例如,个性化引擎实例302)并且调用该实例来个性化消息。在一些情况下,实例以通过api(例如,输入api304和回调api312)来访问的形式提供运行时服务。可以按需地可能通过数据访问服务提供者接口(spi)(例如,数据访问服务328、内容访问服务330、元数据访问服务332和分发高速缓存服务334)或通过api来拉取个性化所需的数据(例如,个性化应用212内的文档标识符306和个性化消息308)。可以实现这样的数据访问服务提供者或api,以使得可以从个性化应用隐藏数据访问、内容访问、元数据访问、高速缓存和/或其它环境依赖性。

个性化引擎从数据递送平台174拉取内容、元数据和其它数据。如图所示,上面提到的回调api与以内容访问回调316、元数据访问回调318和/或数据访问回调314的形式的服务一起工作。回调服务依赖于iddp来提供多级高速缓存,例如,利用已经用个性化数据填充的存储器中高速缓存来提供多级高速缓存。在一些情况下,可以在存储器中高速缓存内创建或与存储器中高速缓存一起创建按消息的会话高速缓存(例如,参见会话高速缓存320)。为了创建按消息的会话高速缓存,个性化应用212定义会话高速缓存,以保持特定于消息的信息。这样的信息可以包括但不限于活动数据、运行时参数、链接、表单访问、被触发的启动参数、检索出的接收者键值数据以及段组数据。从基于键的查找和查找记录获取的接收者数据还可以被高速缓存在会话高速缓存中。

应用维护活动和相关元数据、非接收者数据和内容的二级lru高速缓存(例如,参见l2高速缓存322)。通过基于键的查找和查找表内置查询获取的非特定于接收者的数据被高速缓存在l2高速缓存中。对于某些查找表查询,被查找的记录的所有字段而不是单个字段被取出并且被高速缓存,以在不引起多个网络调用的情况下满足对同一记录的不同字段的多个查找表查询。

如前面所指示的(参见图2),来自客户的活动数据位于客户数据库中。这个数据库包括关于活动的信息、关于接收者的信息以及关于产品的数据。许多关系数据的表可以存在于客户数据库中。数据发布者取得客户数据,并且经由高速缓存数据更新228的传送将数据发布到多级存储器中高速缓存204。规则集合被实现,以定义用于提取数据、变换数据和将数据复制到多个目标目的地的工作流。

为了实现活动,执行对用于接收者的简档数据的快速查找,以执行由个性化应用进行的个性化动作。存储器中高速缓存包括保持用于快速查找的数据的键值存储库。例如,如在2012年4月24日提交的美国序列号no.13/455,069中所描述的,客户数据库中的关系数据可以被转换到键值存储库中,以实现快速查找。在某些情况下,还可以期望在不使用键值存储库的情况下(例如,代替地使用针对关系数据的sql查询)执行搜索。因此,可以暴露两种类型的api,其中一种用于执行键查找,另一种用于执行字段查找。在元数据数据库中维护元数据,以描述存储器中高速缓存中的数据,例如,以描述键值存储库的模式(schema)。

例如,当接收者例如通过web表单采取某些动作时,客户数据可以发生更新。更新可以(例如,利用更新队列222)被排队,以对客户数据库进行更新。还可以利用高速缓存数据更新228对存储器中高速缓存进行更新。

数据递送平台能够根据以下技术考虑来执行:

-活动执行与设计和数据管理活动隔离。当执行与设计和数据管理活动隔离时,这允许执行不受设计时元数据和内容改变以及设计和数据管理工作负荷的影响

-供应低延迟随机读取的可预测的和可持续的发生。随机读取数据访问具有低延迟(例如,可预测地小于5ms),以可预测地(例如,在小于100ms内)提供个性化网页。

-可持续的高读取吞吐量。读取数据访问支持可持续的批量启动,以允许例如每秒20000条个性化消息的吞吐量。

-连续的可用性并且无停机。该平台无停机地可用,以响应web请求和实时消息传送请求。

-通过跨商用硬件和软件横向缩放的具有成本效益的线性可扩展性。

本公开的一些实施例包括在与来自设计和数据管理活动(诸如用于连接作业和/或用于执行过滤器查询的活动)的任何影响隔离并且与设计和数据管理环境的停机隔离的专用高性能和高可用性执行环境中运行的活动。这意味着活动依赖执行环境资源。在这个方法中,对客户数据库和/或共享的san存储装置没有依赖性或有有限的依赖性。

当为了确定性快速读取访问或者为了可预测的快速访问而优化执行数据时,对任意数据源模式的通用sql查询被替换为针对由活动进行的查找而优化的数据访问技术(例如,以完成确定性的和可预测的快速随机读取访问)。识别活动所使用的数据源需要解析和分析活动元数据以及用于数据库查找内置函数的其内容的完全闭包(closure)。

在一些实施例中,元数据、内容和数据被发布到执行环境中。正在执行的活动所需的元素被发布到执行环境中,以使得它们在高性能和高可用的平台上是可访问的。数据发布者确保只有完整和有效的活动变成可执行的,确保可执行的活动不受对元数据和内容的设计时改变影响,并且确保所有活动依赖关系在执行环境中可用。数据源被发布到执行环境后,利用来自客户数据库源数据源的更新来持续刷新已发布的优化的版本。更新从客户数据库流到执行环境。

在一些实施例中,执行数据平台是共享缓存服务器上的存储器中高速缓存。通过压缩,客户数据库的帐户的个性化数据的工作集可以被保持在存储器中。每个高速缓存服务器具有专用的已加载的热备份,为了不间断的服务,应用可以透明地故障转移到该热备份。对于主高速缓存服务器和备份高速缓存服务器二者的灾难性故障,应用会故障转移到记录系统(system-of-record)客户数据库。

高速缓存的数据可以是耐久的。高速缓存的数据存留到本地存储装置,以使得高速缓存服务器可以在停机或故障后快速重新启动并且成为可操作的。存留的数据仅在启动时被读取。只要存留的数据是一致的,对高速缓存的写入就不需要是完全acid的;从客户数据库刷新由于服务器故障导致的错过的写入。高速缓存到存储装置的异步一致的背景快照的解决方案将满足耐久性要求。

为了水平可伸缩性,高速缓存的数据可以由跨商用服务器的帐户共享。客户数据由帐户自然分开并且帐户之间没有共享,并且客户数据相对较小。通过共享到不同的高速缓存服务器的帐户来利用这种分开。应用平台处理基于帐户的路由和故障转移。

元数据可以被发布到执行元数据数据库。来自客户数据库的元数据可以被发布到高度可用的元数据数据库。所发布的元数据是只读的,以供活动执行使用。在活动执行期间生成的实况链接元数据也被存储在元数据数据库中并且被复制到客户数据库,以用于对数据仓库进行提取、变换和加载(etl)处理。通过多个热备份服务器提供高度可用的读取访问,该多个热备份服务器允许应用透明地将读取故障转移到备份服务器而不中断服务。

内容可以被发布到执行内容存储库。内容被发布到高度可用的执行内容存储库,以使得它与在设计时期间对内容的自组织改变分开,并且对于执行活动来说总是可用的。最初,这可以仅仅是共享文件系统上的分开的树,以提供已发布的内容和未发布的内容之间的分开。在一些情况下,它可以是高度可用的高性能内容管理系统。

在一些实施例中,可以利用基于键或字段的查找而不是sql来访问高速缓存的数据。有两种个性化数据访问用例:接收者数据查找和内置查找。接收者数据查找是主要用例;它通常是利用返回接收者数据的键值对的单个记录的技术的、基于键的按记录查找(riid)。内置查找是另一种用例。内置查找包括对一个或多个字段的基于字段的查找。内置查找可能返回多个记录。在2012年4月24日提交的美国序列号no.13/455,069中描述关于实现本公开的该方面的方法的更多细节。

在一些实施例中,例如,在应用进行多个离散查找的情况下,不允许连接(join)。数据高速缓存中不支持连接。作为用来呈现多个数据源的视图以便返回单个接收者数据记录的连接简档视图(jpv)的替代,应用进行多个离散查找,其中对每个高速缓存的数据源进行一个离散查找。数据高速缓存实现可以支持查找的流水线处理,以减少往返次数并且改善吞吐量和总体延迟。多个离散查找的性能可行性建立在存储器中数据高速缓存和有索引的高速缓存的数据结构旨在提供的可预测的低延迟查找的基础之上。

数据查找可以在不同的高速缓存服务器上发生。多个查找允许从不同的服务器检索数据。例如,外部提供的内容可以在分开的服务器上被高速缓存,并且进行分开的查找以获得外部提供的内容。或者可以从专用的低延迟在线事务处理(oltp)计划数据存储库中查找计划事务数据。

在一些实施例中,表是可发布的,而视图数据源(诸如补充的sql视图、连接视图和过滤器视图)是不可发布的。所发布的动态模式表被变换成静态模式高速缓存表。客户在客户数据库中定义他们的表模式,其中列用于每个数据字段。他们可以在任何时间通过添加、修改或移除数据字段来动态更改该模式。为了避免锁定和由于动态更改高速缓存的数据结构对查找延迟的影响,已发布的表被变换成静态模式高速缓存表。高速缓存表具有用于在查找中被使用的每个字段的索引列,以及包含以压缩的csv格式的剩余非查找字段的值的单个值列。如果已发布的表具有主键列,则该列可以被用作高速缓存表的主键。一旦被发布,则高速缓存表模式被认为是固定的。这个固定的模式支持对源表中的非查找字段的模式进行修改,因为它们的字段被序列化为单个csv字符串。如果客户改变活动以按新字段查找数据源,则源表将需要重新发布。

数据检索器324包括预取模块326,预取模块326取决于数据是接收者还是非接收者而从联网的数据存储库中获取数据并且将该数据本地高速缓存在会话或l2高速缓存中。数据检索器被应用急切地调用,以在调用引擎之前预取和高速缓存接收者数据,并且在高速缓存未命中时该数据检索器由其它组件懒惰地调用。获取策略对仅仅通过服务提供者接口(spi)拉取数据的引擎是透明的。对于批量启动个性化,为了获得高吞吐量,检索器可以用批量查找或流水线查找来为多个接收者预取。

图4描绘了在个性化应用和遵守用于确定数据库高速缓存命中的基于年龄的策略的高速缓存服务器之间的数据流400。作为选择,数据流400或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,数据流400或其任何方面可以在任何期望的环境中实现。

在图4中示出了多个数据源数据检索方法。数据检索器402取决于活动是否被映射到集成数据递送平台上而从不同源获取数据。这样的映射确定可以基于以下项来进行:(1)数据是否已经被发布到iddp高速缓存,以及(2)故障转移条件是否存在。当活动没有被映射到集成数据递送平台上时,可以使用非iddp数据访问模块404。非iddp数据访问模块可以从被触发的jpv查找(参见路径406,并且参见jpv查找416)、和/或从去往/来自客户数据库的查询(参见路径408并且参见内置查询418)和/或经由批量启动工作列表查找(参见路径410并且参见工作列表411)接收数据。

在这个实施例和其它实施例中,并且如关于数据检索抽象的,个性化应用不涉及数据源和各种路由、变换、协议和故障处理逻辑的细节。数据检索器提供应用可访问的高级api,并且数据检索器封装存储访问实现细节。具体而言,为了向后兼容性、故障转移和懒惰发布,数据检索器封装包括它是正在访问iddp高速缓存服务器还是正在(例如,通过非iddp数据访问模块404)访问客户数据库的状态的细节。

关于iddp活动vs.非iddp活动,iddp活动是在为iddp实现的并且其个性化数据源不被禁止发布到iddp的帐户中创建的任何活动。所有其它活动都是非iddp活动。关于与客户数据库(例如,所示的客户数据库1682)相比的iddp高速缓存,非iddp活动(例如,通过sqlapi4141或sqlapi4142以及使用sql引擎430)使用客户数据库作为个性化数据的源,而iddp活动(除了某些例外)使用高速缓存服务器作为数据的源。可以导致iddp活动访问客户数据库而不是iddp的访问情况是:(a)为了预览的访问;(b)为了检索未发布数据的访问;以及(c)对客户事务数据的访问。

查找高速缓存420映射包括被声明为iddp活动的个性化数据源的表,包括:简档表(pt421)、0个或更多个简档扩展表(pet422)和0个或更多个补充表(st423)。对于已发布的活动,每个表在查找高速缓存中具有对应的键-值映射:简档映射(pm441)、简档扩展映射(pem442)和补充映射(sm443)。在查找高速缓存中还存在多个id映射(例如,参见id映射444),以用于将电子邮件地址、移动号码和客户id映射到riid。查询高速缓存表还包括用作内置数据源的补充表(st423)。它们可以通过已发布的iddp活动的连接或过滤器视图形成,并且根据需要被复制到查询高速缓存450。在用作内置查询谓词(predicate)字段的列上给这些表加索引,并且在由内置函数使用的补充连接视图使用的连接列上加索引。对于每个接收者的多个查找(例如,对于具有多个声明的接收者数据源的iddp活动),存在对c的多次查找,以检索用于单个接收者的数据,其中对于每个声明的数据源每个映射有一个查找。这与客户数据库中的jpv视图的单个查找相反。除了上面提到的表和映射之外,可以用系统过滤器视图(sfv424)、补充连接视图(sjv425)、补充sql视图(ssv426)以及其它视图来填充客户数据库。

图5描绘了用于实现其中可以实践本公开的一个或多个实施例的营销计划系统的服务器映射500。作为选项,服务器映射500或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,服务器映射500或其任何方面可以在任何期望的环境中实现。

图5中所示的实施例包括个性化数据高速缓存服务器502的集合,个性化数据高速缓存服务器502的集合又包括个性化数据高速缓存服务器pdc_a5041、个性化数据高速缓存服务器pdc_b5042和个性化数据高速缓存服务器pdc_c5043。来自个性化数据高速缓存服务器集合中的任何服务器可以从示出的数据发布者服务器506的集合中的任何一个或多个数据发布者服务器接收输入。示出的数据发布者服务器的集合包括客户数据发布者1151和客户数据发布者1152,客户数据发布者1151和客户数据发布者1152中的任何客户数据发布者可以从客户数据库服务器516接收输入。

正如可以理解的,个性化数据高速缓存服务器502下游的任何一个或多个服务器可以从高速缓存而不是从客户数据库访问数据。例如,个性化服务器520的集合通常包括一个或多个启动服务器(例如,启动服务器5081、启动服务器5082)和一个或多个发布服务器(例如,pubweb服务器5101、pubweb服务器5102)。

pubweb服务器监听来自“点击”事件的http请求,并且基于接收该事件而发起其它动作。例如,pubweb服务器可以发起链接的形成,而链接又在用于高度目标化的活动的消息中被发出。由接收者点击的链接可以使得网页被显示在用户的浏览器中。照此,(一个或多个)网页可以被个性化。pubweb服务器位于环境中,以便从个性化数据高速缓存服务器检索数据。

任何地方的和/或任何服务器集合中的任何服务器可以访问元数据数据库512,元数据数据库512可以利用一个或多个元数据服务器514来实现。

所示映射仅仅是示例性的,并且其它映射或变型是可能的。在一些情况下,特定服务器被配置为应用服务器以访问查询服务器,并且个性化数据高速缓存服务器被配置为个性化数据高速缓存服务器。

图6呈现了其中可以实践本公开的一个或多个实施例的数据高速缓存架构600。作为选择,数据高速缓存架构600或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,数据高速缓存架构600或其任何方面可以在任何期望的环境中实现。

如前面所指示的,数据高速缓存可以利用任何合适的数据高速缓存系统来实现。在一些实施例中,数据高速缓存利用提供许多好处的快速查询服务器来实现,这些好处包括提供直接到innodb存储引擎624的接口的高性能api(例如,nosqlapi6081、nosqlapi6082),从而绕过sqlapi414和sql引擎430的开销。在一些情况下,并且如图所示,innodb存储引擎624包括在高速raid存储装置阵列628前面的大缓冲池626。

在一些部署中,通过使用多个高速(例如,10gbps)以太网端口(例如,nic端口630)来促进性能。可以以每秒超过750个查询的速率来完成键值查找612,而具有较少端口的部署可能支持每秒较少的查询速率。在一种方法中,诸如关于图1所示和描述的,至少一个应用服务器602和至少一个个性化数据高速缓存服务器616之间的高性能配对可以在系统内被实例化,以便于实现高性能数据高速缓存。

图7示出了由个性化应用使用以遵守用于确定数据库高速缓存命中的基于年龄的策略的数据高速缓存访问方法700。作为选项,数据高速缓存访问方法700或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,数据高速缓存访问方法700或其任何方面可以在任何期望的环境中实现。

可以利用任何合适的数据系统来实现数据高速缓存。在一些实施例中,服务器或服务器集合(诸如示出的个性化数据高速缓存730)实现数据高速缓存。数据高速缓存包括键-值数据高速缓存(例如,kv数据高速缓存707)和查询数据高速缓存(例如,查询数据高速缓存712)。此外,这样的数据高速缓存可以由个性化应用和/或它们的组成组件(诸如接收者键-值数据检索模块718和/或数据库查找模块706)有利地访问。

上面提到的组件或应用中的任何组件或应用可以被配置为供应被使用的基于年龄的策略(例如,参见个性化数据高速缓存730,并且参见服务器元数据数据库722),以用于根据该基于年龄的策略确定数据库高速缓存命中。而且,数据高速缓存访问方法700底层的架构可以被映射为高可用性配置。

图8示出了其中可以实践本公开的一个或多个实施例的高可用性个性化数据高速缓存800。作为选项,高可用性个性化数据高速缓存800或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,高可用性个性化数据高速缓存800或其任何方面可以在任何期望的环境中实现。

如前面所指出的,在本公开的一些实施例中可以提供高可用性。图8示出了实现高可用性的方法。这是例如通过发布到备份服务器来提供的。读取可以从活动的服务器发生。

参考来自记录系统客户数据库810的流程,客户数据发布者115的高可用性版本可以读取数据(例如,参见读取一次数据的路径812),并且然后开始提取数据(参见提取模块816),将它存储到用于分阶段数据820的位置,其中分阶段数据又由变换和分发模块818读取。上面提到的操作可以在pdc服务器504在活动操作中时发生。同时,个性化服务器802的一个或多个实例操作,以避免与任何(一个或多个)数据发布者的竞争。另外,个性化服务器的一个或多个实例可以提供诸如预览、回退和故障转移读取之类的功能。pdc服务器504托管“活动的”服务器1822和“备份”服务器2824两者。来自分阶段数据的数据在变换和分发模块818的选择时被分发到“活动的”服务器和“备份”服务器。与高速缓存数据被更新到备份服务器(参见路径827)并发地,高速缓存数据被更新到活动的服务器(参见路径826)。被更新到备份服务器的高速缓存数据可以从活动的服务器处的活动中导出(参见路径826)。导致改变被反映在记录系统中的活动被排队(参见消息804),并且排队的更新模块806连同数据更新器808处理将改变应用到客户数据库。此外,存在用于在故障场景中执行读取的路径828。例如,路径828用来在故障转移场景期间处理读取。这样的读取可以被定向到活动的服务器或备份服务器。不仅在故障场景中而且在其它场景中,前面提到的路径用来访问数据库,以(例如,在不满足截止策略时)检索所存储的数据项的实例。

图9描绘了其中可以实践本公开的一个或多个实施例的并行访问个性化数据高速缓存使用模型900。作为选项,并行访问个性化数据高速缓存使用模型900或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,并行访问个性化数据高速缓存使用模型900或其任何方面可以在任何期望的环境中实现。

可以利用基于键或字段的查找来访问高速缓存的数据。这些数据访问用例不暴露sql查询语义并且不需要sql解决方案。图9示出了根据本公开的一些实施例的可以用于实现键-值查找的方法。在该特定实施例中,个性化应用212通过专用的键-值数据访问api与pdc服务器504通信。可以通过使用元数据来配置键-值数据访问层916,其中该元数据可以从帐户设置导出(参见模块918)。可以利用pdc状态模块920来报告pdc服务器的实时或近实时状态。

由个性化应用212进行的访问由键-值数据访问api902提供,键-值数据访问api902又与专用的处理机(例如,pdc选择器处理机904和协议处理机908)、专用的“字符大对象值”翻译器(例如,如图所示的clobvalue翻译器906)、关系值翻译器912、负载平衡器(例如,负载平衡器9101、负载平衡器9102)和sql/jdbc处理机914对接。clobvalue翻译器906被配置为处理面向字符的大对象(clob)。clob包括可以被存储在数据库中的字符数据。clob的内容有时被存储在表中,或者有时被存储在一个或多个分开的位置中,该一个或多个分开的位置可以被编码,以使得该位置可以在数据库表中被识别。它是数据库中的字符数据的集合,有时被存储在表本身中所引用的分开的位置中。

图10描绘了用来实现用于确定数据库高速缓存命中的基于年龄的策略的个性化数据高速缓存填充方法1000。作为选项,个性化数据高速缓存填充方法1000或其任何方面的一个或多个实例可以在本文描述的实施例的架构和功能的背景下实现。而且,个性化数据高速缓存填充方法1000或其任何方面可以在任何期望的环境中实现。

图10示出了可以被用来允许客户数据按需发布的方法。在这个方法中,数据发布者包括提取器和分发器,该提取器和分发器允许包括来自客户数据库以及元数据数据库的数据的客户数据按需发布(例如,参见活动改变输入1004)。

示出的按需发布模块1002实现规则集合,以定义提供给客户数据发布者的实例的工作流,其中规则和工作流用来提取数据(参见多线程提取器1012)、变换数据以及将数据分发到多个目标目的地(参见多线程分发器1014)。要注意的是,客户数据库中使用的数据模型(例如,帐户模式10101、帐户模式10102、帐户模式10103等)可以改变;此外,对数据库内容可以有持续的改变(例如,参见数据库改变输入1008)。数据发布者应当能够检测数据模型中的改变,并且能够作为结果适当地将数据发送到数据存储库。规则可以被配置为实现该功能。活动元数据的数据库1016保持历史活动数据和/或当前在进行中的活动数据,以便于客户数据库中的改变。在一些情况下,确定客户数据库中的改变需要访问多个数据源;相应地,用于分阶段文件1018的存储装置是客户数据发布者可访问的。

客户数据发布者115的实例与pdc服务器的实例(参见pdc服务器7301和pdc服务器7302)交互,该pdc服务器的实例进而用来管理帐户键-值数据库(参见帐户kv数据库10201、账户kv数据库10202、账户kv数据库10203等)的出现以及哪些客户数据发布者实例还用来管理账户查询数据库(参见账户查询数据库10221、账户查询数据库10222、账户查询数据库10223等)的出现。

可以具有什么是一致的和最新的数据的不同概念的许多用例可以利用本公开的实施例来实现。一些实施例涉及高速缓存客户端和高速缓存服务器如何协作以便在仍然提供一致的数据的同时最大化高速缓存命中的想法。如前面所提到的,高速缓存服务器具有确定高速缓存数据相对于主数据库有多近或多新的元数据。可以在识别出改变时发布改变(参见发布改变模块1006)。

在一些实施例中,客户端还可以在它们针对高速缓存执行数据查找时传入“asoftime”值/参数。因为客户端具有从数据新近性角度来看可接受什么数据快照的最佳知识,所以他们在请求查找时传递该信息。仅当高速缓存可以满足“asoftime”时,高速缓存才为请求服务。

图11描绘了作为在遵守用于确定数据库高速缓存命中的基于年龄的策略的情况下处理高速缓存访问的计算模块的布置的系统组件。作为选择,本系统1100可以在本文描述的实施例的架构和功能的背景下实现。然而,当然系统1100或其中的任何操作可以在任何期望的环境中执行。系统1100包括至少一个处理器和至少一个存储器,该存储器用于存储与系统的操作对应的程序指令。如图所示,操作可以全部或部分地利用模块可访问的程序指令实现。模块被连接到通信路径1105,并且任何操作可以经通信路径1105与其它操作通信。系统的模块可以单独地或组合地执行系统1100内的方法操作。除非在权利要求中指定次序,否则在系统1100内执行的任何操作可以按任何次序执行。所示实施例实现被呈现为系统1100的计算机系统的一部分,该计算机系统的一部分包括用于执行程序代码指令的集合的计算机处理器(参见模块1110)以及用于访问存储器以保持用于执行以下操作的程序代码指令的模块:从发出请求的计算模块接收至少包括截止策略的高速缓存访问检索策略语句(参见模块1120);接收包括对在截止策略被评估之后要被返回到发出请求的计算模块的数据项的至少一个请求的访问请求(参见模块1130);访问数据库高速缓存以检索数据项的实例以及检索相应数据项元数据的对应实例(参见模块1140);以及将相应的数据项元数据与截止策略进行比较(参见模块1150)。如图所示,该系统还包括当满足截止策略时将数据项的实例返回到发出请求的计算模块(参见模块1160)。在一些情况下,当(例如,在将相应数据项元数据与截止策略进行比较之后)不满足截止策略时,模块(参见模块1170)用于访问数据库,以检索存储的数据项的实例并且返回到发出请求的计算模块。

图11的系统组件的布置仅仅是一个示例。其它实施方式开始于接收对高速缓存服务器中的数据的查找请求。“as-of”指示可以是由“as-of”截止141和/或截止类型142和/或阈值143的任何特定实现的语法和语义所支持的“asoftime”指示、或“asofversion”指示符、或任何其它“as-of”指示、和/或数据项元数据字段的任何其它元数据或方面。

在一个特定流程中,识别由“as-of”查找请求组成。这个参数例如通过从网络上接收“as-of”指示和相关的值来访问。接下来,针对策略语句参数检查查找请求,以检查根据“as-of”指示请求是否有效。如果请求有效,则从高速缓存服务器为请求服务。如果请求无效,则过程查询主数据库。以下是根据本公开的实施例的一些示例实施方式。

实施方式1

营销人员可以使用该系统的一种常见方式是将个性化数据上传到主数据库中,然后对目标接收者执行批量启动。在这种情况下,在确定用于进行高速缓存查找的数据新近性时,启动开始时间被用于快照。例如,可以想到,主数据库中的数据可以刚好在启动开始时间之后被修改,并且它可能不能用这些改变来同步高速缓存数据。但是,当在启动期间查找个性化数据时,只要(例如,如从相应的个性化数据元数据确定的)高速缓存中的数据在启动开始时间是最近的,就可以使用高速缓存的数据。否则,查找回退到主数据库。

实施方式2

作为批量启动的一部分被发送的消息可以包含到网页的链接。当终端用户点击该链接时,网页与接收者个性化数据一起被提供。这里再次,链接将存储与批量启动的开始时间对应的“asoftime”。因此,当网页被个性化时,仅当高速缓存数据在所请求的时间是最新的时,高速缓存才为查找请求服务。

实施方式3

通常,营销人员希望在他们发起可以针对若干接收者(例如,数百万个接收者)的启动之前预览消息。在涉及这种预览的情况下,人们可能不希望使用高速缓存的数据。在这种情况下,“asoftime”将被设置为“latest”,然后查找始终回退到主数据库。

实施方式4

向单个接收者发送作为web表单提交的结果的个性化消息。在这种情况下,用户可以输入一些数据,并且当用户提交数据时,这可以导致个性化消息被发送到该用户。消息可以具有例如到网页的链接。这里有多个可能的用例。当消息被个性化时,可能需要对于“asoftime”使用“latest”,因为可能不期望高速缓存被实时同步。然而,链接或网页链接的一部分还可以使用对应于生成消息的时间的“asoftime”。在生成消息的时间与用户点击消息中的链接的时间之间通常有足够的延迟。只要高速缓存中的数据项(例如,优惠券链接)在消息生成时是最近的,在用户点击链接时发生的网页个性化就将使用高速缓存的数据。

实施方式5

存在营销人员可能不关心数据查找的“as-of”本质的情况。在这种情况下,“as-of”字段和/或任何相应的基于年龄的策略语句可以为空。在这种情况下,不管数据年龄或高速缓存新近性如何,查找对高速缓存(以及在高速缓存未命中的情况下对数据库)进行并且被返回到调用者。

本公开的附加实施例

附加的实践应用示例

图12a描绘了作为被互连以便协作地操作以实现本文公开的实施例中的某些实施例的计算模块的布置的系统12a00。系统12a00的分区仅仅是说明性的,并且其它分区是可能的。作为选项,本系统12a00可以在本文描述的实施例的架构和功能的背景下实现。然而,当然系统12a00或其中的任何操作可以在任何期望的环境中执行。系统12a00包括至少一个处理器和至少一个存储器,该存储器用于存储与系统的操作对应的程序指令。如图所示,操作可以全部或部分地利用模块可访问的程序指令来实现。模块被连接到通信路径12a05,并且任何操作可以经通信路径12a05与其它操作通信。系统的模块可以单独地或组合地执行系统12a00内的方法操作。除非在权利要求中指定次序,否则系统12a00内执行的任何操作可以按任何次序执行。所示实施例实现被呈现为系统12a00的计算机系统的一部分,该计算机系统的一部分包括用于执行程序代码指令集合的计算机处理器(参见模块12a10)以及用于访问存储器以保持用于执行以下操作的程序代码指令的模块:从发出请求的计算模块接收包括截止策略和截止类型的高速缓存访问检索策略语句(参见模块12a20);接收访问请求,该访问请求包括对在评估截止策略之后要被返回到发出请求的计算模块的个性化数据的集合的至少一个请求(参见模块12a30);访问数据库高速缓存,以检索个性化数据集合的实例并且检索相应的个性化数据元数据的对应实例(参见模块12a40);将相应的个性化数据元数据与截止策略进行比较,以确定是否满足截止策略(参见模块12a50);当满足截止策略时,将个性化数据集合的实例返回到发出请求的计算模块,或者当不满足截止策略时,访问数据库,以检索所存储的个性化数据集合的实例并且返回到发出请求的计算模块(参见模块12a60)。

图12b描绘了作为被互连以便协作地操作以实现本文公开的实施例中的某些实施例的计算模块的布置的系统12b00。作为选择,本系统12b00可以在本文描述的实施例的架构和功能的背景下实现。然而,当然系统12b00或其中的任何操作可以在任何期望的环境中执行。系统12b00包括至少一个处理器和至少一个存储器,该存储器用来存储与系统的操作对应的程序指令。如图所示,操作可以全部或部分地利用模块可访问的程序指令来实现。模块被连接到通信路径12b05,并且任何操作可以经通信路径12b05与其它操作通信。系统的模块可以单独地或组合地执行系统12b00内的方法操作。除非在权利要求中指定次序,否则系统12b00内执行的任何操作可以按任何次序执行。所示实施例实现被呈现为系统12b00的计算机系统的一部分,该计算机系统的一部分包括用于执行程序代码指令集合的计算机处理器(参见模块12b10)以及用于访问存储器以保持用于执行以下操作的程序代码指令的模块:在包括还被存储在数据库中的数据的数据高速缓存中维护数据项和与该数据项相关联的元数据,其中该元数据指示何时该数据项最后被标记为与数据库同步(参见模块12b20);接收指示截止点的策略,其中,根据该截止点,由元数据最后标记为反映在截止点之前的任何特定点处被存储在数据库中的数据的数据被认为是无效的,而由元数据最后标记为反映在截止点之后的任何特定点处被存储在数据库中的数据的数据被认为是有效的(参见模块12b30);处理对包括该数据项的多个数据项的请求,其中,根据该策略,从高速缓存返回该数据项是以该截止点相对于与该数据项相关联的元数据的评估为条件的(参见模块12b40);将与该数据项相关联的元数据与该截止点进行比较,以确定该数据项是否有效(参见模块12b50);以及响应于确定高速缓存中的数据项是有效的,从高速缓存返回该数据项(参见模块12b60)。

系统架构概述

附加系统架构示例

图13a描绘了适合于实现本公开的实施例的计算机系统13a00的实例的框图。计算机系统13a00包括总线1306或用于传送信息的其它通信机制。总线使子系统和设备互连,所述子系统和设备诸如cpu或多核cpu(例如,处理器1307)、系统存储器(例如,主存储器1308或随机存取存储器ram的区域)、非易失性存储设备或非易失性存储区域(例如,rom1309)、内部或外部存储设备1310(例如,磁性的或光学的)、数据接口1333、通信接口1314(例如,phy、mac、以太网接口、调制解调器等)。上面提到的组件被示为在处理元件分区1301内,但是其它分区是可能的。所示的计算机系统13a00还包括显示器1311(例如,crt或lcd)、各种输入设备1312(例如,键盘、光标控制器)和外部数据储存库1331。

根据本公开的实施例,通过处理器1307执行包含在存储器中的一个或多个程序代码指令的一个或多个序列,计算机系统13a00执行特定操作。这样的指令(例如,程序指令13021、程序指令13022,程序指令13023等)可以被包含在来自任何计算机可读/可用介质(诸如静态存储设备或盘驱动器)的存储位置或存储器中或者可以被读取到来自任何计算机可读/可用介质的存储位置或存储器中。序列可以被组织以由被配置为执行单个过程或被配置为执行多个并发过程以执行工作的一个或多个处理实体访问。处理实体可以是基于硬件的(例如,包括一个或多个核心)或基于软件的、和/或可以利用实现逻辑的硬件和软件的组合形成、和/或可以利用一个或多个过程和/或一个或多个任务和/或一个或多个线程或其任何组合来执行计算和/或处理步骤。

根据本公开的实施例,计算机系统13a00利用通信接口1314的一个或多个实例来执行特定的联网操作。通信接口1314的实例可以包括可配置的一个或多个网络端口(例如,该一个或多个网络端口与速度、协议、物理层特性、介质访问特性等有关),并且通信接口1314的任何特定实例或者到其的端口可以与任何其它特定的实例不同地配置。通信协议的部分可以全部或部分地由通信接口1314的任何实例执行,并且数据(例如,包、数据结构、位字段等)可以位于通信接口1314内的存储位置中或系统存储器内,这样的数据可以由诸如处理器1307之类的设备(例如,利用随机存取寻址或利用直接存储器存取dma等)访问。

通信链路1315可以被配置为传输(例如,发送、接收、用信号通知等)包括数据项的任何组织的通信包1338。数据项可以包括有效载荷数据区域1337、目的地地址1336(例如,目的地ip地址)、源地址1335(例如,源ip地址),并且可以包括位字段的各种编码或格式,以填充所示的包特性1334。在一些情况下,包特性包括版本标识符、包或有效载荷长度、业务类别、流标签等。在一些情况下,有效载荷数据区域1337包括被编码和/或格式化以适应包的字节或字边界的数据结构。

在一些实施例中,硬连线的电路可以代替软件指令或与软件指令组合使用,以实现本公开的方面。因此,本公开的实施例不限于硬件电路和/或软件的任何特定组合。在实施例中,术语“逻辑”是指被用来实现本公开的全部或部分的软件或硬件的任何组合。

如本文所使用的,术语“计算机可读介质”或“计算机可用介质”是指参与向处理器1307提供指令以供执行的任何介质。这样的介质可以采取包括但不限于非易失性介质和易失性介质的许多形式。非易失性介质包括例如光盘或磁盘,诸如盘驱动器或带驱动器。易失性介质包括动态存储器,诸如随机存取存储器。

计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带或任何其它磁介质;cd-rom或任何其它光学介质;穿孔卡、纸带或具有孔的图案的任何其它物理介质;ram、prom、eprom、flash-eprom或任何其它存储器芯片或盒、或者任何其它非暂态计算机可读介质。这样的数据可以被存储在例如任何形式的外部数据储存库1331中,外部数据储存库1331又可以被格式化为任何一个或多个存储区域,并且可以包括通过键(例如,文件名、表名、块地址、偏移地址等)可访问的参数化的存储装置1339。

用于实践本公开的某些实施例的指令序列的执行由计算机系统13a00的单个实例执行。根据本公开的某些实施例,通过通信链路1315(例如,lan、ptsn或无线网络)耦接的计算机系统13a00的两个或更多个实例可以利用计算机系统13a00的组件的两个或更多个实例来执行实践本公开的实施例所需的指令序列。

计算机系统13a00可以发送和接收消息,诸如被组织成数据结构(例如,通信包1338)的数据和/或指令。数据结构可以包括通过通信链路1315和通信接口1314传送的程序指令(例如,应用代码1303)。当程序代码被接收和/或被存储在所示的存储设备中或者在任何其它非易失性存储器上或在任何其它非易失性存储器中以供稍后执行时,该接收到的程序代码可以由处理器1307执行。计算机系统13a00可以通过数据接口1333与外部数据储存库1331上的数据库1332通信。可以利用主键(例如,关系数据库主键)来访问数据库中的数据项。

处理元件分区1301仅仅是一个样本分区。其它分区可以包括分区内的多个数据处理器、和/或多个通信接口、和/或多个存储设备等。例如,分区可以限制多核处理器(例如,有可能包括嵌入式或共置(co-located)存储器的多核处理器),或者分区可以限制具有多个计算元件的计算集群,该多个计算元件中的任何计算元件被直接或间接地连接到通信链路。第一分区可以被配置为与第二分区通信。特定的第一分区和特定的第二分区可以是一致的(congruent)(例如,在处理元件阵列中)或可以是不同的(例如,包括不相交的组件集合)。

如本文所使用的,模块可以利用系统存储器的任何部分与任何范围的硬连线电路(包括被实施为处理器1307的硬连线电路)的任何混合来实现。一些实施例包括一个或多个专用硬件组件(例如,功率控制、逻辑、传感器、转换器等)。模块可以包括用来实现或便于用于确定数据库高速缓存命中的基于年龄的策略的性能特性的一个或多个状态机和/或组合逻辑。

数据库1332的各种实现包括如下存储介质:该存储介质被组织以保持一系列记录或文件,以使得各个记录或文件是利用名称或键(例如,主键或键和/或查询子句的组合)来访问的。这样的文件或记录可以被组织成一个或多个数据结构(例如,用来实现用于确定数据库高速缓存命中的基于年龄的策略或便于用于确定数据库高速缓存命中的基于年龄的策略的方面的数据结构)。这样的文件或记录可以被带入和/或被存储在易失性或非易失性存储器中。

图13b描绘了可以被包括在实现本文公开的实施例的实例的系统中的客户端设备13b01的实例的框图13b00。客户端设备13b01可以包括比图13b中示出的组件更多或更少的组件。客户端设备13b01可以表示例如之前公开的客户端设备中的至少一个客户端设备的实施例。

如图中所示,客户端设备13b01包括经由客户端设备存储器总线1341与客户端设备存储器1342通信的客户端设备处理器1340。客户端设备13b01还包括电源1351、一个或多个客户端设备网络接口1354、音频接口1355、客户端设备显示器1356、客户端设备键板(keypad)1357、照明器1358、视频接口1359、客户端设备io接口1360、触觉接口1361以及用于全球定位服务的gps收发器1353。

电源1351向客户端设备13b01提供电力。可再充电的或不可再充电的电池可以被用来提供电力。电力还可以由诸如对电池进行补充和/或再充电的ac适配器或带电的底座之类的外部电源提供。

客户端设备13b01可以可选地与基站通信或者直接与另一个计算设备通信。客户端设备网络接口1354包括用于将客户端设备13b01耦接到一个或多个网络的电路,并且客户端设备网络接口1354被构造为用于与一种或多种通信协议和技术一起使用,该一种或多种通信协议和技术包括但不限于全球移动通信系统(gsm)、码分多址(cdma)、时分多址(tdma)、用户数据报协议(udp)、传输控制协议/互联网协议(tcp/ip)、短消息服务(sms)、通用分组无线服务(gprs)、无线接入协议(wap)、超宽带(uwb)、ieee802.16全球微波接入互操作性(wimax)、会话发起协议/实时传输协议(sip/rtp)或者各种其它无线通信协议中的任何无线通信协议。客户端设备网络接口有时被称为收发器、收发设备或网络接口卡(nic)。

音频接口1355被布置为产生和接收音频信号,诸如人类语音的声音。例如,音频接口1355可以被耦接到扬声器和麦克风,以实现与其它设备的通讯和/或生成对某些动作的音频确认。

客户端设备显示器1356可以是与计算设备一起使用的液晶显示器(lcd)、气体等离子体、发光二极管(led)或者任何其它类型的显示器。客户端设备显示器1356还可以包括被布置为接收来自对象(诸如手写笔或人手手指)的输入的触敏屏幕。

客户端设备键板1357可以包括被布置为接收来自用户的输入的任何输入设备。例如,客户端设备键板1357可以包括按钮数字拨号盘或键盘。客户端设备键板1357还可以包括与选择和发送图像相关联的命令按钮。

照明器1358可以提供状态指示和/或提供光。照明器1358可以对于特定时间段或响应于事件而保持活动状态。例如,当照明器1358是活动的时,它可以从背后照亮客户端设备键板1357上的按钮并且在客户端设备被供电时保持开启。而且,当执行特定动作(诸如拨打另一个客户端设备)时,照明器1358可以以各种模式从背后照亮这些按钮。照明器1358还可以使得位于客户端设备的透明或半透明壳体内的光源响应于动作而照明。

视频接口1359被布置为捕获视频图像,诸如静态照片、视频片段、红外视频等。例如,视频接口1359可以被耦接到数字摄像机、网络摄像头等。视频接口1359可以包括透镜、图像传感器和其它电子器件。图像传感器可以包括互补金属氧化物半导体(cmos)集成电路、电荷耦合器件(ccd)或用于感测光的任何其它集成电路。

所示客户端设备13b01的一些实例包括用于与外部设备(诸如耳机或者图13b中未示出的其它输入设备或输出设备)通信的客户端设备io接口1360。客户端设备io接口1360可以使用一种或多种通信技术(诸如usb、红外、bluetoothtm端口等)。触觉接口1361被布置以作为人机接口设备(hid),以便于与客户端设备的用户的交互。这样的交互可以包括向客户端设备的用户的触感反馈。例如,触觉接口1361可以被采用以使得客户端设备13b01以(例如,具有模式或周期性的)特定方式和/或在与某一用户交互时振动。

gps收发器1353可以确定客户端设备13b01在地球表面上的物理坐标。在一些实施例中,gps收发器1353可以是可选的。所示的gps收发器1353输出诸如纬度值和经度值之类的位置。然而,gps收发器1353还可以采用其它地理定位机制以确定客户端设备13b01在地球表面上的物理位置,这些地理定位机制包括但不限于三角测量、辅助gps(agps)、增强的观察时间差(e-otd)、小区标识符(ci)、服务区域标识符(sai)、增强的定时提前(eta)、基站子系统(bss)等。应当理解,在不同的条件下,gps收发器1353可以为客户端设备13b01确定在毫米误差内的物理位置;而在其它情况下,所确定的物理位置可能不那么精确,诸如在米或明显更大的距离误差内。在某些实施例中,客户端设备13b01可以提供可以被用来确定设备的物理位置的其它信息,这些信息包括例如介质访问控制(mac)地址、ip地址、ip端口标识符等。

客户端设备存储器1342包括随机存取存储器1343、只读存储器1349和其它计算机可读存储装置。客户端设备存储器1342示出了用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的计算机可读存储介质(设备)的示例。客户端设备存储器1342在客户端设备bios1350的实施例中存储用于控制客户端设备13b01的低级操作的基本io系统(bios)。存储器还存储用于控制客户端设备13b01的操作的操作系统1344。应当认识到,该组件可以包括通用操作系统(诸如某一版本的unix或linuxtm)或者专用的客户端通信操作系统(诸如microsoft公司的windowsmobiletm、apple公司的iostm、google公司的androidtm操作系统)。操作系统可以包括经由java应用程序实现对硬件组件和/或操作系统操作的控制的java虚拟机模块,或与该java虚拟机模块接口。

客户端设备存储器1342还包括客户端设备数据存储装置1345的一个或多个实例,客户端设备数据存储装置1345的一个或多个实例可以由客户端设备13b01用来存储客户端设备应用1346和/或其它数据等。例如,客户端设备数据存储装置1345还可以被用来存储描述客户端设备13b01的各种能力的信息。然后,可以基于各种事件中的任何事件(包括在通信期间作为报头的一部分被发送、在请求时被发送的事件等)来将该信息提供给另一个设备。客户端设备数据存储装置1345还可以被用来存储社交网络信息,包括地址簿、好友列表、别名、用户简档信息等。另外,客户端设备数据存储装置1345还可以存储消息、网页内容或各种内容(例如,接收的内容、用户生成的内容等)中的任何内容。

信息的至少一部分还可以被存储在任何组件或网络设备上,这些组件或网络设备包括但不限于客户端设备处理器的可读存储介质、盘驱动器或客户端设备13b01内的其它计算机可读存储设备,等等。

客户端设备处理器的可读存储介质1352的实例可以包括以用于存储诸如计算机可读指令或处理器可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性、非易失性、可移动和不可移动介质。计算机可读存储介质的示例包括ram、rom、电可擦除可编程只读存储器(eeprom)、闪存存储器或其它存储器技术,光盘只读存储器(cd-rom)、数字多功能盘(dvd)或其它光学存储器、盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或者可以被用来存储期望的信息并且可以由计算设备访问的任何其它物理介质。上面提到的可读存储介质在本文中也可以被称为计算机可读存储介质。

客户端设备应用1346可以包括计算机可执行指令,该计算机可执行指令在由客户端设备13b01执行时发送、接收和/或以其它方式处理网络数据。网络数据可以包括但不限于消息(例如,sms、多媒体消息服务(mms)、即时消息(im)、电子邮件和/或其它消息)、音频、视频,并且网络数据可以实现与另一个客户端设备的另一个用户的通讯。客户端设备应用1346可以包括例如信使1362、浏览器1347和其它应用1348。某些其它应用1348可以包括但不限于日历、搜索程序、电子邮件客户端、im应用、sms应用、互联网上语音协议(voip)应用、联系人管理器、任务管理器、代码转换器、数据库程序、文字处理程序、安全应用、电子表格程序、游戏、搜索程序等等。在一些实施例中,其它应用1348可以收集和存储可以从环境中的其它计算设备接收的用户数据。

信使1362可以被配置为利用各种消息传送通信中的任何消息传送通信来管理消息传送会话,这些消息传送通信包括但不限于电子邮件、sms、im、mms、互联网中继聊天(irc)、微软irc(mirc)、简易信息聚合(rss)馈送,等等。例如,在某些实施例中,信使1362可以被配置为im应用,诸如aol(美国在线)即时信使、yahoo!信使、.net信使服务器、icq等。在某些实施例中,信使1362可以被配置为包括邮件用户代理(mua),诸如elm、pine、消息处理(mh)、outlook、eudora、macmail、mozillathunderbird等。在另一个实施例中,信使1362可以是被配置为集成和采用各种消息传送协议的客户端设备应用,这些消息传送协议包括但不限于用于客户端设备13b01的各种推送和/或拉取机制。在某些实施例中,信使1362可以与浏览器1347交互,以管理消息。如本文所使用的,术语“消息”是指包括但不限于电子邮件、sms、im、mms、irc等的各种消息传送格式或通信形式中的任何消息传送格式或通信形式。

浏览器1347可以包括被配置为接收和显示图形、文本、多媒体、消息等的采用几乎任何基于web的语言的几乎任何应用。在某些实施例中,浏览器应用被使得能够采用hdml、wml、wmlscript、javascript、sgml、html、xml等来显示和发送消息。然而,各种其它基于web的编程语言中的任何基于web的编程语言可以被采用。在某些实施例中,浏览器1347可以使得客户端设备13b01的用户能够与可能存在于环境中的另一个网络设备通信。

图13c描绘了可以被包括在实现本文公开的实施例的实例的系统中的网络设备13c01的实例的框图13c00。网络设备13c01可以包括比示出的组件更多或更少的组件。网络设备13c01可以被配置为作为服务器、客户端、对等设备、主机或任何其它设备操作。

网络设备13c01包括网络设备处理器1370的至少一个实例、可读存储介质的实例、网络接口单元1387的一个或多个实例、网络设备io接口1385、硬盘驱动器1386、视频显示适配器1384和网络设备存储器1371,它们都经由网络设备存储器总线1390彼此通信。网络设备存储器一般包括网络设备ram1372、网络设备rom1381。一些实施例包括一个或多个非易失性大容量存储装置,诸如硬盘驱动器1386、带驱动器、光学驱动器和/或软盘驱动器。网络设备存储器存储用于控制网络设备13c01的操作的网络设备操作系统1373。可以采用任何通用的操作系统。还提供以网络设备基本输入/输出系统(bios)1382的形式的bios,以用于控制网络设备13c01的低级操作。如图13c中所示,网络设备13c01还可以经由被构造为与包括tcp/ip协议的各种通信协议一起使用的网络接口单元1387与互联网或某些其它通信网络进行通信。网络接口单元1387有时被称为收发器、收发设备或网络接口卡(nic)。网络设备13c01还包括用于与外部设备(诸如键盘或者其它输入设备或输出设备)通信的网络设备io接口1385。网络设备io接口1385可以使用一种或多种通信技术,诸如usb、红外、bluetoothtm等。

如上文描述的存储设备可以使用各种类型的计算机可读介质,即,非易失性计算机可读存储介质、和/或客户端设备处理器的可读存储介质1352、和/或网络设备处理器的可读存储介质1383的有形形式。这样的介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性、非易失性、可移动和不可移动介质的任何组合。处理器可读存储介质的示例包括ram、rom、eeprom、闪存存储器或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光学存储器,盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或者可以被用来存储期望信息并且可以由计算设备访问的任何其它介质。

如图所示,网络设备数据存储装置1374可以包括可以被配置为维护和存储用户帐户标识符、用户简档、电子邮件地址、im地址和/或其它网络地址等的数据库、文本存储装置、电子表格、文件夹或目录层次结构、一个或多个文件等。网络设备数据存储装置1374还可以包括用于由诸如网络设备处理器1370之类的处理器使用以执行和实施动作的程序代码、数据、算法等。在某些实施例中,网络设备数据存储装置1374的逻辑内容中的至少一些逻辑内容可以被存储在网络设备13c01的另一个组件上,诸如在硬盘驱动器1386的第二实例上或者在外部/可移动存储设备上。

网络设备数据存储装置1374还可以存储应用数据和/或用户数据(诸如应用简档存储库1375、web简档存储库1376、简档丰富存储库1377和/或收集的任何用户数据)的任何部分。在一些实施例中,用户数据1391可以存储唯一用户数据、非唯一用户数据、聚合用户数据和/或其任何组合。用户数据1391可以包括各种属性,诸如五位邮政编码、扩展的九位邮政编码等。

网络设备数据存储装置1374还可以存储程序代码和数据。一个或多个网络设备应用1378可以被加载到网络设备数据存储装置或任何其它大容量存储器中,以便是可访问的以与网络设备操作系统1373一起或作为网络设备操作系统1373的一部分运行。网络设备应用程序的示例可以包括代码转换器、调度程序、日历、数据库程序、文字处理程序、超文本传输协议(http)程序、可定制用户界面程序、ipsec应用、加密程序、安全程序、sms消息服务器、im消息服务器、电子邮件服务器、帐户管理器,等等。消息传送服务器1392、网站服务器1379、用户数据聚合器服务器1393、跨域多简档跟踪服务器1380和/或用户数据供应者服务器1394还可以被包括在应用程序内或被实现为应用程序。

消息传送服务器1392可以包括几乎任何计算组件或被配置和布置为转发来自消息用户代理和/或其它消息服务器的消息或者将消息递送到本地消息存储库(诸如网络设备数据存储装置1374等)的组件。因此,消息传送服务器1392可以包括消息传送管理器,以采用各种电子邮件协议中的任何电子邮件协议来传送消息,这些电子邮件协议包括但不限于简单邮件传输协议(smtp)、邮局协议(pop)、互联网消息访问协议(imap)、网络新传输协议(nntp)等。消息传送服务器1392还可以由消息传送服务器1392的一个或多个组件管理。因此,消息传送服务器1392还可以被配置为管理sms消息;im、mms、irc或rss馈送;mirc;或各种其它消息类型中的任何消息类型。在某些实施例中,消息传送服务器1392可以使得用户能够发起和/或以其它方式进行聊天会话、voip会话等。

网站服务器1379可以表示被配置为经网络向另一个计算设备提供包括消息的内容的各种信息和服务中的任何信息和服务。因此,网站服务器1379可以包括例如web服务器、文件传输协议(ftp)服务器、数据库服务器、内容服务器等。web服务器1379可以利用各种格式(包括但不限于wap、hdml、wml、sgml、html、xml、紧凑html(chtml)、可扩展html(xhtml)等)中的任何格式经网络来提供包括消息的内容。网站服务器1379还可以被配置为使得客户端设备的用户能够浏览网站、上传用户数据、查看广告并且与广告交互,等等。

用户数据聚合器服务器1393被配置为聚合用户数据,以被提供给用户数据购买者以用于广告活动。在某些实施例中,用户数据聚合器服务器1393可以被配置为从用户数据供应者服务器1394接收收集到的用户数据。在一些实施例中,用户数据聚合器服务器1393可以接收对用户数据的查询。基于查询,用户数据聚合器服务器1393可以生成聚合的用户数据的多个子集。在一些实施例中,用户数据聚合器服务器1393可以被包括在网络设备中。

用户数据供应者服务器1394被配置为收集用户数据。在某些实施例中,用户数据供应者服务器1394可以被配置为向用户数据聚合器服务器1393提供收集到的用户数据。在一些实施例中,用户数据供应者服务器1394可以收集和/或提供唯一用户数据和/非唯一用户数据。在某些实施例中,用户数据供应者服务器1394可以聚合收集到的用户数据。在一些实施例中,用户数据供应者服务器1394可以被包括在诸如此前所描述的计算设备之类的任何计算设备中。

返回到此前介绍的环境的讨论,该环境包括各种系统可以利用其来实现的组件。并非所有示出的组件可以是实践实施例所必需的,并且在不背离本公开的精神或范围的情况下,可以对组件的布置和类型做出改变。

本公开的实施例在其中操作的各种环境可以包括局域网(lan)/广域网(wan)、无线网络、客户端设备(例如,用户站)。包括任何子网络和/或无线网络的整体网络与环境中的组件通信并且实现环境中的组件之间的通信。

客户端设备的实例可以包括能够经网络通信以发送和接收包括即时消息的信息的信息、执行各种在线活动等的几乎任何计算设备。应当认识到,在诸如本文描述的系统之类的系统内可以包括更多或更少的客户端设备,因此实施例不受所采用的客户端设备的数量或类型的限制。

可以作为客户端设备操作的设备可以包括可以利用有线或无线通信介质(诸如个人计算机、服务器、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc等)连接的设备。在一些实施例中,客户端设备可以包括能够连接到另一个计算设备并且接收信息的几乎任何便携式计算设备,诸如膝上型计算机、智能电话、平板计算机等。便携式计算机设备或移动计算机设备还可以包括其它便携式设备或与其它便携式设备结合操作,所述其它便携式设备诸如蜂窝电话、显示寻呼机、射频(rf)设备、红外(ir)设备、个人数字助理(pda)、手持计算机、可穿戴计算机、组合前述设备中的一个或多个设备的集成设备,等等。照此,客户端设备就能力和特征而言范围可以很广泛。此外,客户端设备可以提供对包括浏览器或其它基于web的应用的各种计算应用的访问。启用web的客户端设备可以包括被配置为接收和发送网页、基于web的消息等的浏览器应用。浏览器应用可以被配置为采用几乎任何基于web的语言(包括无线应用协议消息(wap)等)来接收和显示图形、文本、多媒体等。在某些实施例中,浏览器应用被使得能够采用手持设备标记语言(hdml)、无线标记语言(wml)、wmlscript、javascript、标准通用标记语言(sgml)、超文本标记语言(html)、可扩展标记语言(xml)等,以显示和发送消息。在某些实施例中,客户端设备的用户可以采用浏览器应用来经网络(在线)执行各种活动。然而,另一个应用还可以被用来执行各种在线活动。

客户端设备可以包括被配置为在其它计算设备(例如,服务器组件)之间接收和/或发送数据的至少一个客户端应用。该客户端应用可以包括提供发送和/或接收内容等的能力。客户端应用还可以提供识别其自身的信息,该信息包括类型、能力、名称等。在某些实施例中,客户端设备可以通过包括电话号码、移动识别号码(min)、电子序列号(esn)或其它移动设备标识符的各种机制中的任何机制来唯一地识别自身。该信息还可以指示移动设备被使得能够采用的内容格式。这样的信息可以在网络包等中提供、在其它客户端设备之间发送或者在其它计算设备之间发送。

客户端设备还可以被配置为包括使得终端用户能够登录到可以由另一个计算设备管理的终端用户帐户的客户端应用。在一个非限制性示例中,这样的终端用户帐户可以被配置为使得终端用户能够管理一个或多个在线活动,在一个非限制性示例中该一个或多个在线活动包括搜索活动、社交网络活动、浏览各种网站、与其他用户通信、参与游戏、与各种应用交互等。然而,还可以在不登录到终端用户帐户的情况下执行对在线活动的参与。

无线通信能力被配置为利用网络将客户端设备与其它组件耦接。无线网络可以包括还可以覆盖独立网络和/或自组织网络等的各种无线子网络中的任何无线子网络,以便为客户端设备提供面向基础设施的连接。这样的子网络可以包括网状网络、无线lan(wlan)网络、蜂窝网络等。在某些实施例中,系统可以包括多于一个无线网络。

无线网络还可以包括可以通过无线电链路等连接的终端、网关、路由器、移动网络边缘设备等的自治系统。连接可以被配置为自由地和随机地移动并且任意地组织它们自身,以使得无线网络的拓扑可以快速改变。无线网络还可以采用多种接入技术,这些接入技术包括用于蜂窝系统、wlan、无线路由器(wr)网等的amps和/或第二代(2g)和/或第三代(3g)和/或第四代(4g)无线电接入。前述接入技术以及新兴的和/或未来的接入技术可以实现移动设备(诸如具有各种机动度的客户端设备)的广域覆盖。在一个非限制性示例中,无线网络可以通过无线电网络接入实现无线电连接,所述无线电网络接入诸如全球移动系统(gsm)通信、通用分组无线电业务(gprs)、增强数据gsm环境(edge)、宽带码分多址(wcdma)等。无线网络可以包括任何无线通信机制,通过这些无线通信机制,信息可以在客户端设备之间、和/或在任何其它计算设备之间、和/或在其它网络或网络组件之上或之间传播。

前述网络中的任何网络可以被配置为将网络设备与其它计算设备耦接,并且通信可以包括经互联网进行通信。在一些情况下,通信是利用lan、wan以及诸如通过通用串行总线(usb)端口、其它形式的计算机可读介质之类的直接连接的组合来实现的。在包括基于不同架构和协议的lan的互连的lan集合上,路由器充当lan之间的链路,从而使得消息能够从一个lan被发送到另一个lan。此外,lan内的通信链路可以包括双绞线或同轴线缆,而网络之间的通信链路可以使用模拟电话线、包括t1、t2、t3和t4的全部或部分专用数字线路、和/或其它载体机制,这些载体机制包括例如电子载体、综合业务数字网络(isdn)、数字用户线路(dsl)、包括卫星链路的无线链路、或者本领域技术人员已知的其它通信链路。此外,通信链路还可以采用各种数字信令技术中的任何数字信令技术,这些数字信令技术包括但不限于例如ds-0、ds-1、ds-2、ds-3、ds-4、oc-3、oc-12、oc-48等。此外,远程计算机和其它相关电子设备可以经由调制解调器和临时电话链路被远程连接到lan或wan。在各种实施例中,网络可以被配置为传输互联网协议(ip)的信息。在一些情况下,通信介质携带计算机可读指令、数据结构、程序模块或其它传输机制,并且通信介质包括任何信息递送介质。作为示例,通信介质包括诸如双绞线、同轴线缆、光纤、波导和其它有线介质之类的有线介质,以及诸如声学、rf、红外和其它无线介质之类的无线介质。

在前述说明书中,已经参照其具体实施例描述了本公开。然而,将明显的是,在不背离本公开的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。例如,上文描述的过程流是参考过程动作的特定排序来描述的。然而,所描述的过程动作中的许多过程动作的排序可以被改变,而不影响本公开的范围或操作。要在说明性的意义上而不是在限制性的意义上来考虑说明书和附图。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1