多租户非关系型平台对象的制作方法

文档序号:18219143发布日期:2019-07-19 22:52阅读:214来源:国知局
多租户非关系型平台对象的制作方法

本专利文件的公开内容部分包含受版权保护的材料。版权所有者不反对任何人对美国专利商标局专利文档或记录中出现的专利文件或专利公开内容进行传真复制,但在其他方面保留所有版权。

相关申请的交叉引用

本专利文档要求以下申请的优先权权益:

2016年9月30日提交的序列号为15/283,119的,题为多租户非关系型平台对象(multi-tenantnon-relationalplatformobjects)(律师案卷号no.slfcp222/1749us)的美国专利申请;

2016年9月30日提交的序列号为15/283,130的,题为custom自定义多租户非关系型平台对象(multi-tenantnon-relationalplatformobjects)(律师案卷号no.slfcp222a/1749us2)的美国专利申请;以及

2016年9月30日提交的序列号为15/283,145的,题为供应多租户非关系型平台对象(provisioningformulti-tenantnon-relationalplatformobjects)(律师案卷号no.slfcp222b/1749us3)的美国专利申请;

序列号为15/283,119的美国专利申请、序列号为15/283,130的美国专利申请和序列号为15/283,145的美国专利申请中的每一个的全部内容,出于所有目的通过引用并入本文。

本专利文档总地涉及非关系型数据库系统,并且更具体地涉及更新和管理多租户非关系型数据库架构(databaseschemas)。



背景技术:

“云计算”服务根据请求来为计算机以及其他设备提供共享资源、应用和信息。在云计算环境中,服务可以由通过因特网可访问的一个或更多个服务器提供,而不是通过在内部计算机系统上本地安装软件来提供。例如,具有各种角色的用户可以利用云计算服务进行交互。

附图说明

所包括的附图仅用于说明的目的,并且仅用来提供用于更新和管理多租户非关系型数据库架构的,所公开的发明系统、设备、方法和计算机程序产品的可能的架构和操作的示例。在不脱离公开的精神和范围的情况下,这些附图并不以任何方式对本领域技术人员可以对实施例所进行的形式和细节的任何改变进行限制。

图1示出根据一些实现的、用于更新和管理多租户非关系型数据库架构的系统100的示例的系统示意图。

图2示出根据一些实现所执行的、用于在多租户非关系型数据库系统中更新和管理数据库架构的方法200的示例的流程图。

图3示出在使用本申请中所描述的方法前,数据对象被增加至非关系型数据库的物理表的示例。

图4示出根据一些实现的、用于非关系型共享表的动态架构的示例。

图5示出根据一些实现的、将存储在动态非关系型共享表中的几个数据对象定义的示例。

图6示出根据一些实现的、非关系型数据库中的共享表的物理布局的示例。

图7示出根据一些实现所执行的、用于为多租户非关系型数据库系统创建自定义基础平台对象的方法700的示例的流程图。

图8示出根据一些实现所执行的、经由访问控制来动态供应共享表的子集或架构的方法800的示例的流程图。

图9a示出根据一些实现的、按需数据库服务可以在其中使用的环境10的示例的框图。

图9b示出图9a的元件和在这些元件之间各种可能的交互的一些实现的示例的框图。

图10a示出根据一些实现的、按需数据库服务环境900的架构组件的示例的系统示意图。

图10b示出根据一些实现的、进一步示出按需数据库服务环境的架构部件的示例的系统示意图。

具体实施方式

在这一部分中对根据所公开的实施例的系统、装置、方法和计算机程序产品的示例进行描述。所提供的这些示例仅用于增加和帮助对所公开的实现的理解。因此,本技术领域的技术人员应该清楚,在没有某些或所有这些具体细节的情况下,实现方式也可是可实践的。在其他示例中,为了避免对本发明造成不必要的混淆,省略某些操作的详细描述。其他的应用也是可能的,因此以下的示例不应理解为在范围或设置方面具有限定性或限制性。

在以下的详细描述中参考附图进行,附图形成说明书的一部分,并且在其中通过图示的方式示出本公开的具体实施例。虽然这些实现方式描述了足够的细节以使本技术领域的技术人员能够实践所公开的实施例,应该理解这些示例并非限制性的,因此可使用其他实施例并且可在不脱离本公开的精神和范围的内对其进行变化。例如,本文所描述和示出的方法的操作并非必须按照指示的顺序实现。也应该理解,方法可以包括比所示出的更多或更少的操作。在一些实现中,本文作为单独的操作所描述的操作可以进行组合。相反地,本文中描述为单个操作的可以用多个操作实现。

所公开的系统、装置、方法和计算机程序产品的一些实现方式配置用于更新和管理多租户非关系型数据库系统中的数据库架构。

在一些多租户数据库系统中,使用客户组织(即租户)在一个逻辑数据库中共享数据库资源的多租户架构。数据库表自身通常共享;数据模型中的每个实体通常包含组织_id或者租户_id列,其针对每个租户区分行。在租户环境下的查询和数据操纵通过通常被索引的该租户_id列被过滤,以保证恰当的安全性和私有数据库的外观。例如,在salesforce.com系统中,该策略用于披露标准对象,诸如账户(account)、联系人(contact)、线索(lead)以及对客户的机会(opportunity)。

传统上,在相关数据库中,例如oracle,在共享表内使用标准的对象。在这样的表中,标准对象可以在数万个客户中间每实例的进行共享。当表必须根本上被改变时,诸如对应新的对象增加新的字段,或移除字段,它将会呈现出很大的问题。相关数据库架构将必须进行改变,包括在数据库的物理层定义新的表、索引以及更多。数据库的拥有者将不能随时自由的进行改变;而是,数据库将不得不进行锁定和在某些时间改变,导致非常昂贵的操作。

近期,对于消除这种停机时间已近取得一些进步。在该方法中,当你必须增加包含新对象的字段时,并不是定义新的物理表,而是将行增加至元数据表。行指示虚拟表正在将数据动态地存储在另一个表中。在物理数据库层只有行被插入,其是低成本且非入侵式操作,无需停机时间。已有列然后在已有表中被更新以增加新数据。因此,增加字段是应用逻辑的一部分,而不是关系型数据库架构改变一部分。

虽然这对于关系型多租户数据库非常有用且经济,但是近些年非关系型数据库系统越来越流行。非关系型数据库对于需要快速访问大量数据的应用非常理想。它们为大的数据集提供灵活、可扩展的数据库架构。这样的一个非关系型数据库是hbase。非关系型数据库可以实现日志中大量数据的快速、实时捕获。非关系型数据库可以提供非结构化数据库,而非传统关系型数据库的严格结构。hbase能提供列数据库,其使用指针存储和处理数据,指针指向跨集群分布的许多列。由于非关系型数据库如hbase被设计为不同于关系型数据库,然而,缺少以和关系型数据库同样经济、低成本的方式处理对象和模式管理的框架。

举例来说,acme是运行多租户数据库系统的公司,在那里数以千计的组织实时捕获大的数据集。acme维护hbase数据库用于这样的数据捕获和存储。它决定丢弃与对象“login_event(登录事件)”相关的其hbase共享数据库的列“login_status(登录状态)”,因为它希望将登录状态改变为不同的格式。然而,acme发现它不能只更新数据库架构,因为它将涉及表的挂起操作以及更新数据库架构,这将中断大量的实时数据采集。acme还希望进行几处改变,在基于逐客户的基础上,向具有访问权限的特定客户供应不同对象和数据库字段。然而,在没有重大中断和对架构的更新的情况下没有办法做到。最后,acme希望允许它的组织针对各自的组织需求做出它们自己的对象和字段,但出于同样的原因这将是困难的。

可以实现一些所公开的技术,以提供在应用层经由脚本动态地更新多租户数据库系统中的架构组件,而不是必须物理地改变数据库结构。代替定义新的物理表,基础平台对象(“bpo”)也称为数据对象,用脚本语言诸如xml定义。bpo是诸如像账户或线索这样的标准对象之类的数据库对象,其可以针对一个或更多个组织的需求被快速增加至数据库。在应用层维护动态虚拟数据库,包括具有共享架构的虚拟表。bpo脚本化定义被用于在虚拟表的列中表示该bpo。一个或更多个行随后被增加至物理的非关系型表,表示该新的bpo。由于诸如hbase的非关系型数据库允许列数据库,其中针对不同行呈现变化的列的多个配置,所以这不违反物理非关系型列表的性质。因此,新的对象在数据库内被定义和表示,并且多个组织可以利用该对象创建记录。这可以在数据库存储和处理的零停机时间或者零中断下执行。

可以实现一些所公开的技术,以允许组织在多租户非关系型数据库系统中创建自定义基础平台对象(“bpo”)。标准的非关系型数据库架构,其在数据库系统中包含供应给所有组织的多个标准对象,可以利用具有自定义属性的组织定义的自定义bpo进行扩展。数据库的租户在诸如xml的脚本中定义对象,或者从共享架构扩展已有对象。该自定义对象和其属性被转变为包括在动态的虚拟表中。物理的非关系型表随后利用与自定义对象和其属性对应的列进行更新。自定义对象限于仅用于与创建它们的租户相关联的数据库内的记录使用;该限制基于与租户的记录相关联的租户的唯一识别符或租户_id来实现。

可以实现提供一些所公开的技术,以经由访问控制向多租户非关系型数据库系统中的一个或更多个租户动态地供应对共享表的子集的访问权。使用非关系型bpo,标准架构跨共享表的所有租户被共享。架构被配置,使得区段可以在应用层提供给特定租户,在系统内给予它们对bpo的不同集合的快速访问权和许可权。一个组织针对它的数据需求可以具有对共享架构的某些列的访问权,而另一个组织可以有对另外的列的访问权。

应用所公开技术的一些实现,提供针对以上所述的替代场景。在该替代场景中,acme再次决定从它的hbase非关系型共享数据库删除与对象“login_event“相关的列。代替被迫定义新的物理表,从而导致不可接受的数据库中数据采集和存储的中断,不同的设置允许更好的架构管理。在该设置中,用于login_event的基础平台对象(“bpo”)由acme用xml脚本定义。由acme维护动态虚拟数据库,包括具有共享架构的虚拟表。login_event的bpo脚本化定义经由应用被自动转换为数据库对象定义,或者“视图”,其可以由hbase准备。该视图用于表示虚拟表的一个或更多个列中的login_event,包括“login_status”列。当到删除“login_status”列时,在应用层写脚本来在虚拟数据库中移位列。如果第一列消失,那么脚本指导虚拟数据库从第二列往下复制所有列。在hbase的数据库层,并非像在关系型数据库中那样存在针对每列清楚定义的数据类型,而是仅存在字节,并且可以在应用层重新定义任何列。因此,删除列可以通过向下移位列来发生,并且不需要创建整个新的表。如果acme希望增加具有不同数据类型的login_status列,它可以容易地做到:通过采用经改变的login_status来定义新的bpo,转换它以在虚拟表中使用,并且随后复制虚拟表的列到hbase表中。再次,不需要停机时间或者是创建新表。

此外,acme的数据库的任何租户均可以针对它们自己的需求创建它们自己的自定义bpo,并且具有对共享数据库中的那些bpo的唯一的、单独的访问权。这可以通过允许脚本扩展standard_object(标准对象)的函数来完成。例如,如果acme的客户希望特定的login_event对象具有不同的login_status格式,那么客户将能够写入定义该对象的xml脚本,且该脚本可以被转换以将对象进入到虚拟表中。由于可以基于逐租户将所有列在表中给予访问权或限制,因此虚拟表可以配置为,使得仅是该客户具有属于其自己的自定义bpo的列。对象同样可以以仅针对该客户可访问的列的形式移动到hbase表,基于与它的记录和自定义bpo绑定的客户的唯一租户_id。

acme的另一个好处在于,这些技术允许acme针对不同的bpo将访问权快速供应给各种客户。例如,acme希望为它的客户创建免费层和额外付费层,每一个具有对共享表中的不同对象的访问权。采用hbase表中恰当的bpo和自定义bpo,所有都绑定到客户的租户_id,经由虚拟表在应用层改变数据库架构是简单的,来声称和定义与对象相关的不同规则。acme可以容易地决定,一些对象应该定义为仅具有在额外付费层的访问权,而其他对象应该定义为具有在免费层和额外付费层两者的的访问权,这可以在xml脚本中定义,转换到虚拟表,然后移到hbase物理表,以允许针对免费层客户和额外付费层客户的不同列。

在一些而非全部的实现中,所公开的方法、装置、系统和计算机可读存储介质可以配置或设计为在多租户数据库环境或系统中使用。

术语“多租户数据库系统”可以指,在其中数据库系统的软件和硬件的各种元件可以由一个或更多个客户共享的那些系统。例如,特定的应用服务器可以同时处理大量客户的请求,并且特定的数据库表可以存储用于潜在的更大量的客户的诸如馈送(feed)项的数据的行。术语“查询计划”通常指用于在数据库系统中访问信息的一个或更多个操作。

图1示出根据一些实现的、用于更新和管理多租户非关系型数据库架构的系统100的示例的系统示意图。系统100包括彼此通信的各种不同的软件和/或硬件部件。在图1的非限制性示例中,系统100包括至少一个企业服务器104、至少一个客户端系统108、至少一个非关系型数据库112以及至少一个虚拟数据库116。

非关系型数据库112可以允许存储和检索大的数据集。非关系型数据库112可以是在hbase或其他非关系型数据库管理系统中实现的数据库。该数据库可以包括用于多个企业(也称为组织或租户)的每一个的一个或更多个记录。在一些实现中,数据库可以包括一个或更多个共享表,其中多个企业在相同表中具有记录,并且共享许多用于它们的记录的相同标准对象和列。在一些实现中,每个企业均与租户_id相关联,其在非关系型数据库112中提供用于具体企业的唯一标识。例如,实体acme可以具有租户_id:“123”,其唯一地识别acme为与记录或对象相关联。在共享表内没有其他租户可以有相同的租户_id。

在一些实现中,非关系型数据库112具有一个或更多个共享表,其采取分布式的、线性可扩展的、一致性键值存储的形式。在键值存储中,行内的数据通过一个或更多个列进行分组。列影响存储在数据库中的数据的物理布置。列基于数据库系统内的一个或更多个对象被定义。行不必都包含相同的列。每一行可以表示共享表内的一个记录,并且可以通过唯一地识别该行的行键来排序和查询行。行键的一个示例是租户_id,其唯一地识别共享表的租户。

在一些实现中,非关系型数据库112可以结合为非关系型数据库112提供关系型数据库的功能的一个或更多个应用来工作。例如,它可以提供关系型数据库的外观、结构化架构、数据类型以及sql查询。这样的应用的一个示例是phoenix,其可以和hbase以及一个或更多个驱动器结合来工作,以将关系型特征提供给hbase非关系型数据库。

虚拟数据库116是在系统100中的应用层存在的数据库。在一些实现中,虚拟数据库116可以运行在一个或更多个软件应用内,或者结合一个或更多个软件应用运行。虚拟数据库116不同于非关系型数据库112,因为数据不存储在物理的或低层的数据库中。相反,通过半结构化源和典型的关系型或非关系型数据库存储方法之外的其他方式,数据可以虚拟地存储在应用层或者本地或远程的存储中。由于虚拟数据库116不在传统数据库的低层上存储数据,因此不受与模式管理和修改相关的限制。虚拟数据库的结构可以在应用层快速改变。

企业服务器104可以与系统100的其他部件通信。可通过网络和接口和组合来实现该通信。企业服务器104可以操作和处理来自客户端系统108的数据请求。类似,企业服务器104可以在数据请求已经处理后返回响应至客户端系统108。例如,企业服务器104可以从诸如非关系型数据库112或虚拟数据库116的一个或更多个数据库检索数据。它可以组合来自不同数据库的一些或所有数据,并且将经处理的数据发送至客户端系统108。

客户端系统108可以是能够经由一个或更多个数据网络和服务器通信的计算设备。客户端系统108的示例包括台式计算机或便携式电子设备,诸如智能电话、平板电脑、笔记本电脑、诸如google的可穿戴设备、另一个光学头戴式显示(ohmd)设备、智能手表等等。客户端系统108包括应用可在其中部署的至少一个浏览器。

图2示出根据一些实现所执行的、用于在多租户非关系型数据库系统中更新和管理数据库架构的方法200的示例的流程图。方法200和本文所描述的其他方法可以使用图1的系统100实现,虽然这样的方法的实现不限于系统100。

在框210,系统100维护与多个企业相关联的多租户非关系型数据库112,每个企业均有多个记录。在一些实现中,多个企业中的每一个都是系统100的用户,并且能够以记录的形式存储和处理数据。记录可以是非关系型数据库112的共享表的一部分。在一些实现中,每个记录采取共享表的行的形式,具有若干表示对象的列。在一些实现中,列的数量、类型和大小可以进行变化,取决于与记录相关联的企业以及该企业的数据对象。在标准对象的情况下,指示标准对象的属性的列可以针对所有企业,或者针对共享表的指定许可集的企业出现。例如,标准对象“user_profile(用户配置文件)”可以指定为由共享表的所有企业访问,采用与user_profile对象相关联的属性username(用户名)、user_age(用户年龄)、以及user_location(用户位置)。这些属性的每一个具有在共享表中的列,其针对每个企业的每个记录出现。在一些实现中,自定义对象可以针对企业的有限集进行指定。例如,如果acme具有出于其目的特别制作的acme_user(acme用户)自定义对象,那么只有acme的记录可以包括acme_user对象以及在其记录中的相关联的列。因此,一些企业和其他企业相比可以具有对表中不同列的访问权,并且一些记录(和由此的行)与其他记录相比可以包括不同的列。

在一些实现中,多租户非关系型数据库112的每个租户或企业与企业标识(企业id)相关联,其唯一地识别企业。在一些实现中,企业标识可以是唯一的数字或字母字符串。在一些实现中,非关系型数据库112中的共享表的每一行(和记录)具有用于企业id的列,其可以命名为例如“租户_id”、“企业_id”、“org_id”。该企业id列可以指定为用于表的行键。共享表的记录随后可以通过企业_id行键排序,并且可以基于企业_id查询。这样,每个记录可以基于与该记录相关联的企业容易地排序、搜索和检索。

在框220,系统维护与多租户非关系型数据库112的记录相关联的动态虚拟表。动态虚拟表可以是系统100的虚拟数据库116的一部分。在一些实现中,动态虚拟表是系统100中的应用的一部分或者是与应用结合的函数。在一些实现中,存储在多租户非关系型数据库112中的所有记录的子集可以存储在动态虚拟表中。在一些实现中,企业id如上所述也可以被指定为用于虚拟表的记录中的每一个的行键,以用于排序和查询。

在框230,系统接收来自非关系型数据库112的用户的、定义数据库内的数据对象的请求。该请求至少识别数据对象的一个或更多个属性。在一些实现中,来自用户的请求来自于客户端系统108。在一些实现中,请求来自于企业服务器104。用户可以是企业或企业的代表成员、系统100的开发者或维护者、多租户非关系型数据库112的开发者或维护者,或一些其他用户。在一些实现中,请求采取采用声明性语言的一个或更多个文档的形式。例如,请求可以是xml或json文件。在xml文件的情况下,文件可以包括与数据对象相关的数个脚本指令或声明性定义。例如,行可以包括这样的语句:“entityname=login_event”、“fieldname=event_date”、“fieldtype=datetime”等等。该示例是来自用户的定义数据对象、login_event以及具有日期/时间格式的名为event_date的login_event的属性的请求。在一些实现中,也可以在请求内识别对象类型。对象类型是系统100内参考的对象的特定类型的指示符。对象类型的示例可以是账户、线索、机会、事件日志或聊天馈送。在一些实现中,数据对象的属性可以是由系统100的用户或企业创建或定义的自定义属性。在一些实现中,请求识别与数据对象相关联的一个或更多个主键。一个或更多个主键可以是用于数据对象的属性或列。通过指定一个或更多个主键,记录可以基于所识别的主键列或多个主键列来排序和查询。在一些实现中,至少一个所指定的主键是用于数据对象的企业id属性。例如,org_id字段可以是用于共享表的主键,并且表中的记录可以基于该org_id字段来排序。因此,acme的记录将被排序,使得它们出现在enterprise的记录之前。

在框240,系统处理定义数据库系统内的数据对象的请求。在一些实现中,系统100的企业服务器104或其他元件接收并解释请求。在一些实现中,发送请求的用户,在请求可以被解释或执行前,出于安全性被检查和认证。在一些实现中,系统打开能够读取和响应或执行请求的一个或更多个应用,诸如能够处理xml文件的应用。

在框250,系统基于定义数据对象的请求生成对象脚本。对象脚本定义数据库系统中与请求的数据对象和数据对象的属性相对应的一个或更多个数据库列。在一些实现中,对象脚本可以采取数据对象定义或“视图”的形式,其能够由系统100的一个或更多个应用读取。在一些实现中,对象脚本基于来自用户的请求自动地生成。例如,一旦接收到定义数据对象的xml文件形式的用户请求,系统100处理请求,随后将xml数据对象定义自动转换为对象脚本。在一些实现中,对象脚本将数据对象和数据对象的一个或更多个属性定义为与多租户非关系型数据库相关联的采用数据描述语言的数据库结构。例如,非关系型数据库112可以结合诸如phoenix的应用来工作,其允许sql语句被读取并在非关系型数据库112上执行。因此,应用可以被配置为将数据对象请求转换为一系列sql语句,这些sql语句以非关系型数据库可读的sql术语定义对象。例如,对象脚本可以包含sql或者sql类似语句,诸如:“whenobject_type=‘login’,column1=source_ipchar(32),column2=event_datedatefrombase_platform_object”。在该示例中,非关系型数据库112、虚拟数据库118或与系统100相关联的应用可以配置为理解这些语句,并根据语句增加列至非关系型数据库112和虚拟数据库118的一个或更多个表。在一些实现中,对象脚本可以是兼容的,用于由除了非关系型数据库112之外的或者代替非关系型数据库112的虚拟数据库116处理。

在框260,系统更新动态虚拟表,以包括与在对象脚本中的数据库列定义相对应的一个或更多个虚拟列。由于虚拟数据库118的动态虚拟表在应用层而非在数据库层操作,因此它对于更新物理数据库架构没有严格的要求和限制。相反,动态虚拟表可以增加一个或更多个列、删除一个或更多个列或者修改虚拟数据库架构而没有限制。

在框270,系统更新多租户非关系型数据库112中的共享表的一个或更多个现有列,以匹配增加至动态虚拟表的一个或更多个虚拟列。在一些实现中,一个或更多个列被修改、增加至物理非关系型表或从物理非关系型表移除,表示新的数据对象和其属性。在一些实现中,关于正被更新的一个或更多个现有列的数据可以被写入共享表。在一些实现中,更新列包括要在非关系型数据库中执行的一个或更多个操作,诸如,put操作,delete操作,checkandput操作,checkanddelete操作,increment操作,get操作和scan操作。由于非关系型数据库(诸如hbase)允许在其中可以为不同的行呈现变化的列的多个配置的键值存储,因此以这样的方式更新数据库不会违反物理非关系型表的性质。在数据库层,并非像关系型数据库中会存在的那样存在针对每列清楚定义的数据类型,而是存在字节并且任意列都可以在应用层重新定义。因此,在一些实现中,通过向下移位列可以移除列,并且不需要创建整个新的表。在一些实现中,可以通过复制虚拟表的列到非关系型表来实现增加新的列。

在一些实现中,系统增加一个或更多个记录至多租户非关系型数据库中的共享表。在一些实现中,一个或更多个记录的增加可以是由企业存储已经在一个或更多个事件中捕获的数据所引起的。所增加的记录与共享表的一个或更多个现有列或数据对象相关联。例如,记录中的object_id字段可以确定哪个数据对象与记录相对应。

图3、图4、图5和图6示出在基础平台对象方法之前创建的数据对象的示例、然后是在非关系型数据库中利用基础平台对象方法创建的数据对象的示例。

图3示出在使用本申请中所描述的方法之前,数据对象被增加至非关系型数据库的物理表的示例。以表格形式示出命名为“loginevent”的数据对象310。它包括多个属性:tenant_id(租户id),created_date(创建日期)等等。每个属性对应于用于属性的数据类型或数据格式,诸如char(15)表示char类型的15-字符串。hbase中的共享非关系型表320包含数据对象310。共享表320的每一列与数据对象310的属性中的一个相对应。每一行将具有输入的数据,其将与数据对象的列属性有关。例如,行可以具有为“123”的tenant_id,“11/15/2014”的created_date,等等,其表示用户的登录。

如果图3的列需要重命名、修改或移除,那么底层hbase表不得不改变。共享表320表示数据库中表的物理布局,并且在没有致使表的使用停机时间的情况下,不可以进行对物理表的改变。例如,表的维护人员可以决定将login_type的数据类型从char(1)改变为char(4)。为此,必须删除该表,并且在执行更新之前无法记录登录事件。这是在没有本申请的bpo方法的情况下设计表的非动态方法的缺点。

图4示出根据一些实现执行的、用于非关系型共享表的动态模式的示例。bpo表410是hbase中的多租户的、共享的、动态的、非关系型表。在一些实现中,bpo表410包括以下中的一个或更多个:用于唯一地识别租户或企业的tentant_id属性;用于识别其实例被存储在表中的特定数据对象的object_type(对象类型)属性;用于识别数据对象实例何时被创建的created_date属性;用于识别数据对象实例的创建者的created_by(由……创建属性)属性。在一些实现中,object_type属性识别正被引用的、指定系统100内的具体对象的代码。例如,如果loginevent对象具有为“lgn”的object_type,那么当在bpo表410中出现具有为“lgn”的object_type记录时,则断言记录与loginevent有关。

图5示出根据一些实现执行的、将存储在动态非关系型共享表中的数个数据对象定义的示例。数据对象定义可以在对象脚本或“视图”中代码化,包含用于建构非关系型数据库中的数据对象列的指令。loginevent对象510是在bpo表410的顶部定义的bpo,意味着如果用于loginevent的对象类型被指定,将利用与loginevent对象510的属性有关的列来扩展图4中定义的bpo表410。在一些实现中,诸如phoenix的一个或更多个应用配置为确定哪个对象与特定对象类型相关联,并且随后确定在基础表410的顶部定义哪个虚拟表和“视图”以扩展列。然后将该记录添加到非关系型共享表的行,行为每个相应列输入对象属性的所有关联数据,以字节为单位。fieldchangeevent(字段变化事件)对象520也是在bpo表410的顶部定义的bpo。

loginevent自定义bpo530是自定义bpo的示例。具体地,自定义bpo530是针对使用非关系型数据库的具体的客户或企业,在loginevent对象510的顶部定义的自定义基础平台对象。这意味着,如果指定客户通过记录中的数据被识别,那么除了在基础表410顶部被定义的loginevent510对象之外,列进一步被扩展以包括loginevent自定义bpo530属性。在一些实现中,唯一的企业id可以出于自定义bpo对象的目的识别客户。在该示例中,自定义bpo530与客户acme公司相关。可以定义特定于客户的一个或更多个属性。在一些实现中,可以定义一个或更多个关联属性,其配置为聚合与共享数据表中一个或更多个列相关联的数据。例如,客户可能正采集它们的用户正执行的所有登录。correlation_id(关联id)属性可以用于关联客户的所有登录,并且将它们存储为客户字段。其他客户将看不到该字段;其仅对该特定客户可见。当登录被存储时,客户将能够查看该特殊列,其可以匹配具有特定登录事件或时间的多个客户。loginevent自定义bpo540和在loginevent对象510的顶部定义的自定义bpo类似,特别是用于客户enterprise公司。

图6示出根据一些实现执行的、非关系型数据库中的共享表的物理布局的示例。这是可以从动态基础表410和图5的数据对象定义得到的物理表。首先,与基础表410相关联的列被增加并且数据被读进。第一行610具有指定为acme公司为与该记录相关联的企业的tenant_id,以及指定涉及loginevent对象510的“lgn”的object_type。它还具有基本表410的created_date和create_by列。一个或更多个应用(诸如phoenix)处理对象类型“lgn”并且确定loginevent对象510应该扩展列用于该记录。此外,一个或更多个应用处理tenant_id“acme”并且确定自定义bpo530应该进一步扩展列,特定用于客户acme公司。应用更新虚拟表,其具有用于该记录的所有数据,包括与loginevent属性相关的列和与acme公司相关的自定义loginevent属性。应用随后使用虚拟表以更新多租户非关系型数据库的共享表的列,以匹配增加至虚拟表的虚拟列数据。行610的物理布局因此利用包括全部十列的虚拟表的数据进行更新,按字节的形式。并非更新该数据库的物理架构,而是修改现有的列以包括以字节为单位的数据。这允许在一个单独的共享表中存储具有变化属性的对象和用于多个租户的数据。在一些实现中,上述存储过程实时地或基本上实时地发生。在一些实现中,可以根据一个或更多个应用查询数据,所述一个或更多个应用配置为确定用于使用该物理布局存储的记录的数据对象,随后检索并处理它们。

图7示出根据一些实现所执行的,用于为多租户非关系型数据库系统创建自定义基础平台对象的方法700的示例的流程图。首先,执行来自图2的步骤210和220,以维护与多个企业相关联的多租户非关系型数据库,每个企业具有多个记录;并且维护与记录相关联的动态虚拟表。

在框710,系统接收来自一个企业的、定义数据库系统内的自定义数据对象的请求,识别企业id和自定义数据对象的属性。在一些实现中,请求还可以包括对象类型属性。请求至少识别自定义数据对象的一个或更多个属性。在一些实现中,来自用户的请求来自于客户端系统108。在一些实现中,请求来自企业服务器104。用户可以是企业或企业的代表成员、系统100的开发者或维护者、多租户非关系型数据库112的开发者或维护者或一些其他用户。在一些实现中,请求采取采用声明性语言的一个或更多个文档的形式。在一些实现中,请求或文档可以由与企业id相关联的企业创建。在一些实现中,请求可以是xml或json文件。在xml文件的情况下,文件可以包括数个脚本指令或与数据对象相关的声明性定义。在一些实现中,请求可以指定自定义数据对象应该是现有数据对象的顶部上的扩展。例如,自定义loginevent对象可以在标准loginevent对象的顶部进行指定和定义,增加特定企业可能有兴趣的附加属性。在一些实现中,请求识别与自定义数据对象相关联的一个或更多个主键。一个或更多个主键可以是用于自定义数据对象的属性或列。通过指定一个或更多个主键,记录可以基于主键列或所识别的列来排序或查询。在一些实现中,指定的主键中的一个可以是用于数据对象的企业id属性。例如,org_id字段可以是用于共享表的主键中的一个,并且可以基于org_id字段来排序表中的记录。因此,用于acme的记录将被排序为使得它们优先于用于enterprise的记录出现。

在框720,系统处理来自企业的定义数据库系统内的自定义数据对象的请求。在一些实现中,企业服务器104或系统100的其他元件接收并解释请求。在一些实现中,发送请求的企业或在企业id中指定的企业,在请求可以被解释或执行前,出于安全性被检查和认证。在一些实现中,系统打开能够读取并且响应请求或执行请求的一个或更多个应用,诸如能够处理xml文件的应用。

在框730,基于定义自定义数据对象的请求,系统生成与企业相关联的自定义对象脚本。自定义对象脚本定义数据库系统中的一个或更多个数据库列,其对应于请求的自定义数据对象和自定义数据对象的属性。在一些实现中,自定义对象脚本指定,它是一个或更多个标准数据对象的扩展。在一些实现中,自定义对象脚本可以采取能够由系统100的一个或更多个应用读取的自定义数据对象定义或客户“视图”的形式。在一些实现中,自定义对象脚本可以基于来自用户的请求自动生成。例如,一旦接收到定义自定义数据对象的xml文件形式的用户请求,则系统100处理请求,随后将xml自定义数据对象定义自动转换为自定义对象脚本。在一些实现中,自定义对象脚本将自定义数据对象和自定义数据对象的一个或更多个属性定义为与多租户非关系数据库相关联的采用数据描述语言的数据库结构。在一些实现中,对象脚本可以是兼容的以用于由除了非关系型数据库112之外的或替代非关系型数据库112的虚拟数据库116处理。

在框740,系统更新动态虚拟表,以包括与自定义对象脚本中的数据库列定义相对应的一个或更多个虚拟列。由于虚拟数据库118的动态虚拟表在应用层而不是数据库层中操作,因此对于更新物理数据库架构没有严格的要求和限制。相反,动态虚拟表可以增加一个或更多个列、删除一个或更多个列或者修改虚拟数据库架构而没有限制。

在框750,系统更新多租户非关系型数据库112中的共享表的一个或更多个现有列,以匹配增加至动态虚拟表的一个或更多个虚拟列。在一些实现中,一个或更多个列被修改、增加至物理非关系型表或从物理非关系型表移除,表示新的自定义数据对象和其属性。由于诸如hbase的非关系型数据库允许键值存储,其中针对不同的行可以呈现变化的列的多个配置,这不违反物理非关系型表的性质。在数据库层,不是存在像关系型数据库中会存在的那样的针对每列清楚定义的数据类型,而是只存在字节并且任意列都可以在应用层重新定义。因此,在一些实现中,以通过向下移位列来删除列,并不需要创建整个新的表。在一些实现中,可以通过复制虚拟表的列到非关系型表来实现增加新的列。

在框760,系统限制对与自定义数据对象对应的唯一企业id无关的企业访问共享表的现有列。在一些实现中,一个或更多个应用程序可以修改一个或更多个企业的关于一个或更多个自定义数据对象或自定义数据对象的一个或更多个属性或与数据对象有关的共享表的一个或多个列的许可和访问权。在一些实现中,限制访问构成了提供仅访问与企业id相关联的企业,并且不提供访问给任何其他企业。在一些实现中,限制访问构成了对多租户非关系型数据库中与企业id不相关联的企业的肯定地限制访问。

在一些实现中,系统将共享表的一个或更多个现有列的更新列、或与自定义数据对象有关的一个或更多个行或记录与一个或更多个隐私设置相关联。在一些实现中,隐私设置确定一个或更多个现有列对于一个或更多个企业的可见性。在一些实现中,更细粒度的隐私设置可以赋予企业控制访问权限,以允许其他企业或特定用户查看与企业相关联的一个或多个数据对象、列或行。

图8示出根据一些实现执行的、经由访问控制来动态供应共享表的子集或架构的方法800的示例的流程图。

在框810,系统维护与多个企业相关联的多租户非关系型数据库,每个企业具有多个记录。该步骤与图2中的步骤210相同。

在框820,系统维护多租户非关系型数据库中的共享表,共享表与记录相关联。在一些实现中,该共享表包括一个或更多个记录,其具有与记录相关联的变化的标准数据对象和自定义数据对象。根据本文所描述的技术,对于不同的记录可以呈现不同数量的列。

在框830,系统提供访问控制,用于共享表识别一个或更多个企业的关于共享表的列的许可。在一些实现中,许可列表存储在系统100中。许可列表与非关系型数据库的共享表相关联,并且列出数据对象或列关于数据库的企业的许可。在一些实现中,系统可以检索许可列表以确定企业的当前许可,或数据对象的当前许可。在一些实现中,在企业服务器104或客户端系统108处提供用户接口。用户接口可以显示一个或更多个企业的关于共享表的一个或更多个列或数据对象的当前访问控制和许可。用户接口还可以包括与共享表的许可相关联的交互元件,其允许用户用最小精力快速指定细粒度访问控制。在一些实现中,用户接口可以提供管理性控制台以在细粒度级为用户定义许可。在一些实现中,管理性控制台可以提供共享表的一个或更多个维护者,以提供对某些标准或自定义数据对象的访问给具体企业。在一些实现中,提供访问控制可以涉及肯定地限制对一个或更多个数据对象的访问。在一些实现中,可以为共享表中的一个或更多个列提供访问控制。

在框840,系统接收将共享表的一个或更多个列供应给企业的请求,请求识别与企业相关联的企业id。在一些实现中,一个或更多个列可以与一个或更多个标准数据对象或自定义数据对象相对应。在一些实现中,请求可以来自共享表的所有者或维护者,或来自具有特殊授权权限或修改能力的用户或企业。在一些实现中,系统额外接收关联用于共享表的一个或更多个列的许可元数据的请求。许可元数据配置为定义用于供应对一个或更多个列的访问的一个或更多个规则。因此,供应访问的几个步骤可以使用许可元数据来执行。在一些实现中,许可元数据可以在系统的一个或更多个数据库中定义。在一些实现中,许可元数据可以作为应用元数据66的子集在租户数据库存储22中定义,如图9b中所示。

在框850,系统处理供应共享表的一个或更多个列给企业的请求。在一些实现中,企业服务器104或系统100的其他元件接收并解释请求。在一些实现中,发送请求的所有者、维护者或企业,在请求可以被解释或执行前被针对安全性进行检查或认证。在一些实现中,系统打开能够读取并且响应请求或执行请求的一个或更多个应用,诸如供应应用。在一些实现中,系统经由访问控制供应一个或更多个列给企业,从而使能企业的可见性、存储、检索和其他能力。

在框860,系统更新访问控制,以修改针对共享表的供应列的关于企业id的许可。在一些实现中,供应应用修改多租户非关系型数据库的共享表的许可。在一些实现中,多个企业的许可可以批量操作同时修改。在一些实现中,与多个数据对象有关的许可可以批量操作同时修改。

在框870,系统更新共享表的一个或更多个行以包括供应列,共享表的一个或更多个行与企业id相对应。例如,如果特定企业被赋予对自定义数据对象的访问,那么共享表的一个或更多个行可以包括与该自定义数据对象的属性相关的列。在一些实现中,可以按照与图2的框260和框270类似的方法更新行,用于数据对象的对象脚本由应用程序处理并且虚拟表被更新、随后字节被输入非关系型数据库的共享表的现有列。

以下描述了用于结合所公开的技术实现数据库系统和企业级社会和商业信息网络系统的系统、装置和方法。这样的实现可以提供数据库系统的更高效的使用。例如,数据库系统的用户可能不容易知道数据库中的重要信息什么时候已经改变,例如关于项目或客户。这样的实现可以提供关于这种改变以及其他事件的馈送跟踪更新,由此随时通知用户。

举例来说,用户可以以crm记录的形式来更新记录,例如机会,诸如可能销售1000台计算机。一旦已经进行记录更新,有关记录更新的馈送跟踪更新可以随后自动地例如在馈送中提供给订阅机会的任何人或提供给用户。因此,用户不需要针对机会变化联系管理者,因为关于更新的馈送跟踪更新经由至管理者的馈送页面或其他页面的馈送来发送。

图9a示出根据一些实现的、按需数据库服务可以在其中存在和使用的环境10的示例的框图。环境10可以包括用户系统12、网络14、数据库系统16、处理器系统17、应用平台18、网络接口20、租户数据存储22、系统数据存储24、程序代码26和进程空间28。在一些实现中,环境10可以不具有这些所有的部件,和/或可以具有代替上述所列的其他部件,或上述所列之外的其他部件。

系统12可以实现为任何一个或更多个计算设备或其他数据处理装置,诸如由用户使用以访问数据库系统16的机器或系统。例如,任何用户系统12可以是手持和/或便携式计算设备,诸如移动电话、智能电话、笔记本电脑或平板电脑。用户系统的其他示例包括诸如工作站的计算设备和/或计算设备的网络。如图9a中(和在图9b中更详细的)所示,用户系统12可以经由网络14与按需数据库服务交互,其在图9a的示例中实现为数据库系统16。

通过示例的方式使用系统16实现的按需数据库服务,是无需关心数据库系统的创建和/或维护的用户可用的服务。相反,数据库系统在用户需要数据库系统时(即按用户需求),可用于它们的用途。一些按需数据库服务可以将来自一个或更多个租户的信息存储至共同的数据库镜像的表中,以形成多租户数据库系统(mts)。数据库镜像可以包括一个或更多个数据库对象。关系型数据库管理系统(rdbms)或等价物可以执行针对一个或更多个数据库对象的对信息的存储和检索。非关系型数据库管理系统(nrdbms)或等价物可以执行针对一个或更多个数据库对象的对更大信息集的存储和快速检索。应用平台18可以是允许系统16的应用程序运行的框架,诸如硬件和/或软件,例如操作系统。在一些实现中,应用平台18使能按需数据库服务的提供者开发的一个或更多个应用的创建、管理和执行,用户经由用户系统12访问按需数据库服务,或第三方应用开发者经由用户系统12访问按需数据库服务。

用户系统12的用户在各自的能力方面可以不同,并且特定用户系统12的能力可能完全由针对当前用户的许可(许可级别)确定。例如,当销售人员正在使用特定用户系统12与系统16交互时,用户系统具有分配给销售人员的能力。然而,当管理员正在使用该用户系统与系统16交互时,该用户系统具有分配给管理员的能力。在具有分层角色模式的系统中,处于一个许可级别的用户可以访问可由较低许可级别的用户访问的应用、数据和数据库信息,但是可能无法访问由较高许可级别的用户访问的某些应用、数据库信息和数据。因此,不同的用户将具有与访问以及修改应用和数据库信息相关的不同能力,这取决于用户的安全或许可级别,也称为认证。

网络14是彼此通信的设备的任意网络或网络的组合。例如,网络14可以是lan(局域网)、wan(广域网)、电话网络、无线网络、点对点网络、星形网络、令牌环网络、集线器网络或其他合适配置中的任意一个或任意组合。网络14可包括tcp/ip(传输控制协议和互联网协议)网络,诸如通常称之为因特网的网络的全球互联网。本文将在很多示例中使用因特网。然而,应该理解,所呈现的实现可能使用的网络是不受限制的。

用户系统12可能使用tcp/ip与系统16通信,并且在较高的网络级,使用其他共同的因特网协议通信,诸如http、ftp、afs、wap等等。在使用http的示例中,用户系统12可能包括通常称之为“浏览器”的http客户端,用于发送http信号至系统16处的http服务器,以及接收来自http服务器的http信号。这样的http服务器可能实现为系统16和网络14之间的唯一的网络接口20,但其他的技术也可能被使用或代替。在一些实现中,系统16和网络14之间的网络接口20包括负载共享功能,诸如循环http请求分布器,以在多个服务器上平衡负载并且均匀地分布进入的http请求。至少对于访问系统16的用户,多个服务器中的每一个都可以访问mts的数据;然而,其他可选的配置可以替代地使用。

在一个实施例中,图9a中所示的系统16实现基于网页的crm系统。例如,在一个实现中,系统16包括应用服务器,其配置为实现和执行crm软件应用,以及提供相关数据、代码、表格、网页和其他信息至用户系统12或来自用户系统12的相关数据、代码、表格、网页和其他信息,并且存储至与数据、对象及网页内容相关的数据库系统以及从其检索。利用多租户系统,用于多个租户的数据可以存储在租户数据存储22的相同的物理数据库对象中,然而,租户数据通常布置在租户数据存储22的一个或更多个存储介质中,使得一个租户的数据与其他租户的数据逻辑上保持隔离,使得一个租户不能访问另一个租户的数据,除非这样的数据被明确地共享。在某些实现中,系统16实现附加于crm应用或除crm应用之外的应用。例如,系统16可以提供租户对多个托管的(标准的和自定义的)应用的访问。用户(或第三方开发者)应用,其可以包括或不包括crm,可以由应用平台18来支持,其管理应用的创建、至一个或更多个数据库对象的存储,以及在系统16的进程空间中的虚拟机中的应用的执行。

图9a和图9b中示出了系统16的组件的一个布置,包括网络接口20、应用平台18、用于租户数据23的租户数据存储22、用于系统16以及可能的多租户可访问的系统数据25的系统数据存储24、用于实现系统16的各种功能的程序代码26、以及用于执行mts系统进程和特定于租户进程的进程空间28,诸如作为应用主机服务的一部分运行应用。可以在系统16上执行的额外的进程包括数据库索引进程。

图9a中所示的系统中的数个元件包括常规的、已知的组件,.其在此仅简要解释。例如,每个用户系统12可以包括桌面个人计算机、工作站、笔记本电脑、pda、蜂窝电话、或者任何无线接入协议(wap)使能的设备或能够直接或间接地与因特网或其他网络连接接口的任何其他计算设备。术语“计算设备”在本文也简称为“计算机”。用户系统12通常运行http客户端,例如浏览器程序,诸如微软的internetexplorer浏览器、netscape公司的navigator浏览器、opera的浏览器、或在蜂窝电话、pda或其他无线设备等的情况下的wap使能的浏览器,以及允许用户系统12的用户(例如多租户数据库系统的订户)通过网络14从系统16访问、处理和查看其可用的信息、页面和应用。每个用户系统12通常还包括一个或更多个用户输入设备,诸如键盘、鼠标、轨迹球、触摸板、触摸屏、笔或类似物,用于与由计算设备的显示器(例如监视器屏幕、lcd显示器、oled显示器等)上由浏览器结合系统16或其他系统或服务器提供的页面、表格、应用和其他信息所提供的gui进行交互。本文所使用的“显示设备”可以指计算机系统的显示,诸如监视器或触摸屏显示,并且可以指具有显示能力的任何计算设备,诸如台式计算机、笔记本电脑、平板电脑、智能电话、电视机机顶盒、或如google的可穿戴设备、或其他人体穿戴显示装置。例如显示设备可以用于访问由系统16所托管(hosted)的数据和应用,并且对所存储的数据执行搜索,以及还允许用户与可以呈现给用户的各种gui页交互。如上所讨论,实现方式适合利用因特网来使用,虽然其他网络可以代替或在因特网之外使用,诸如内联网、外联网、虚拟私有网(vpn)、基于非tcp/ip的网络、任意的lan或wan以及类似物。

根据一种实现方式,每个用户系统12及其所有组件是操作员可使用诸如浏览器的应用程序配置的,所述应用包括使用诸如intel处理器之类的中央处理单元运行的计算机代码。类似地,系统16(以及mts的其他实例,其中存在多于一个)及其所有组件可以是操作员可使用包括使用处理器系统17运行的计算机代码的应用程序来配置的,其可以被实现为包括中央处理单元,可以包括处理器等,和/或多个处理器单元。非易失性计算机可读介质可以具有存储在其上或其中的指令,其可以被执行或使用以编程计算设备来执行本文所述的实施例的任意方法。实现指令的计算机程序代码26用于操作和配置系统16以相互通信并且处理网页、应用以及其他数据,并且本文所述的介质内容优选地被下载并储存在硬盘上,但是整体的程序代码或其部分也可以储存在任何其他的易失性或非易失性存储介质或已知的设备中,诸如rom或ram,或者在能够储存程序代码的任何介质上提供,诸如任意类型的旋转介质,包括软盘、光盘、数字通用盘(dvd)、高密度磁盘(cd)、微驱动器、以及磁光盘、和磁的或光的卡、纳米系统(包括分子存储器ic)、或任何类型的计算机可读介质或适合于存储指令和/或数据的设备。此外,整体程序代码或其部分可以通过传输介质例如通过因特网从软件源,或从另一个服务器(如众所周知的)被传送和下载,或者通过任意其他众所周知的常规的网络连接(例如外联网、vpn、lan等)使用众所周知的任何通信介质和协议(例如tcp/ip、http、https、ethernet等)被传送。还可以理解的是,用于所公开的实现的计算机代码可以以任意的编程语言来实现,所述编程语言可以在客户端系统和/或服务器或服务器系统上执行,诸如例如c、c++、html、任意其他标记语言、javatm、javascript、activex、任意其他脚本语言诸如vbscript,并且可以使用许多其他众所周知的编程语言。(javatm是sunmicrosystems公司的商标)。

根据一些实现,每个系统16配置为提供网页、表格、应用、数据和媒体内容给用户(客户端)系统12,以支持由作为系统16的租户的用户系统12访问。同样,系统16提供安全机制以保持每个租户的数据隔离,除非数据是共享的。如果使用一个以上的mts,那么它们可以彼此靠近(例如在位于单个建筑或校园里的服务器农场中),或者它们可以分布在彼此远离的位置(例如一个或更多个服务器位于城市a并且一个或更多个服务器位于城市b)。如本文所使用,每个mts可以包括一个或更多个逻辑上和/或物理上连接的服务器,其本地分布或跨一个或更多个地理位置分布。此外,术语“服务器”旨在指的是一种类型的计算设备,诸如包括处理硬件和一个或更多个进程空间、诸如存储器设备的相关联的存储介质、或数据库,以及在一些实例中本领域众所周知的数据库应用(例如oodbms或rdbms)。还应理解,在本文中“服务器系统”和“服务器”经常交换地使用。类似地,本文所描述的数据库对象可以实施为单个数据库、分布式数据库、分布式数据库的集合、具有冗余的在线或离线备份或其他冗余等的数据库,并且可以包括分布式数据库或存储网络以及相关联的处理智能。

图9b示出图9a的元件和在这些元件之间各种可能的交互的一些实现的示例的框图。换言之,图9b也示出了环境10。然而,在图9b中系统16的组件和在一些实现中的各种互连被进一步示出。图9b示出用户系统12可以包括处理器系统12a、存储器系统12b、输入系统12c以及输出系统12d。图9b示出了网络14和系统16。图9b还示出,系统16可以包括租户数据存储22、租户数据23、系统数据存储24、系统数据25、用户接口(ui)30、应用程序接口(api)32、pl/sqql34、保存例程36、应用启动机制38、应用服务器501-50n、系统进程空间52、租户进程空间54、租户管理进程空间60、租户存储空间62、用户存储64以及应用元数据66。在其他实现中,环境10可以不具有与如上所列出的元件相同的元件,和/或可以具有代替以上所列或以上所列之外的其他部件。

用户系统12、网络14、系统16、租户数据存储22以及系统数据存储24在以上图9a中已经讨论。对于用户系统12、处理器系统12a可以是一个或更多个处理器的任意组合。存储器系统12b可以是一个或更多个存储器设备、短期和/或长期存储器的任意组合。输入系统12c可以是输入设备的任意组合,输入设备诸如一个或更多个键盘、鼠标、轨迹球、扫描仪、照相机和/或至网络的接口。输出系统12d可以是输出设备的任意组合,输出设备诸如一个或更多个监视器、打印机、和/或至网络的接口。如图9b所示,系统16可以包括实现为应用服务器50的集合的(图9a的)网络接口20,应用平台18、租户数据存储22以及系统数据存储24。还示出系统进程空间52,包括单个的租户进程空间54和租户管理进程空间60。每个应用服务器50可以配置为与租户数据存储22和在其中的租户数据23以及系统数据存储24和在其中的系统数据25通信,以服务于用户系统12的请求。租户数据23可以被分为各个租户存储空间62,其可以是数据的物理布置和/或逻辑布置。在每个租户存储空间62内,可以为每个用户类似地分配用户存储64和应用程序元数据66。例如,用户最近所使用的(mru)项的复本可以存储至用户存储64。类似地,作为租户的整个组织的mru项的复本可以存储至租户存储空间62。ui30提供用户接口,并且api32提供至系统16驻留进程的应用程序接口给用户系统12上的用户和/或开发者。租户数据和系统数据可以存储在各种数据库中,诸如一个或更多个数据库。

应用平台18包括应用启动机制38,其支持应用开发者创建和管理应用,其可以由保存例程36作为元数据保存到租户数据存储22中,例如用于由订户作为例如由租户管理进程60管理的一个或更多个租户进程空间54来执行。可以使用pl/soql34对这些应用程序的调用进行编码,pl/soql34为api32提供编程语言样式的接口扩展。一些pl/sqql语言实现的详细描述在craigweissman的共同转让的、编号为7,730,478、名为“用于允许经由多租户按需数据库服务访问开发的应用程序的方法和系统(methodandsystemforallowingaccesstodevelopedapplicationsviaamulti-tenanton-demanddatabaseservice)”,于2010年6月1日公布的美国专利中讨论,其出于所有目的通过引用结合于此。对应用的调用可以由一个或更多个系统进程检测,其管理检索用于订户的应用元数据66,进行调用并在虚拟机上作为应用执行元数据。

每个应用服务器50可以经由不同的网络连接可通信地耦连至数据库系统,例如可访问系统数据25和租户数据23。例如,一个应用服务器501可以经由网络14(例如因特网)耦连,并且另一个应用服务器50n-1可以经由直接网络链路耦连,并且另一个应用服务器50n可以由不同的网络连接耦连。传输控制协议和互联网协议(tcp/ip)是用于在应用服务器50和数据库系统之间通信的典型的协议。然而,本领域技术人员可以理解其他的传输协议也可以使用以优化系统,取决于所使用的网络互连。

在某些实现方式中,每个应用服务器50被配置为处理对与作为租户的任意组织相关联的任意用户的请求。由于希望能够在任何时间出于任何理由从服务器池增加和移除应用服务器,优选地用户和/或组织不存在与特定的应用服务器50的服务器密切关系。在一个实现中,因此实现负载均衡功能的接口系统(例如f5big-ip均衡器)可通信地耦连在应用服务器50和用户系统12之间,以分布请求至应用服务器50。在一个实施例中,负载均衡器使用最小连接算法来路由用户请求至应用服务器50。负载均衡算法的其他示例也可以被使用,诸如轮循和观察的响应时间。例如,在某些实现中,来自相同用户的三个连续的请求可以命中三个不同的应用服务器50,并且来自不同用户的三个请求可以命中相同的应用服务器50。以这样的方式,通过示例,系统16是多租户的,其中系统16跨完全不同的用户和组织处理不同对象、数据和应用的存储和访问。

作为存储的示例,一个租户可以是雇佣销售人员的公司,其中每个销售人员使用系统16以管理他们的销售过程。因此,用户可以维护联系人数据、线索数据、客户跟踪数据、绩效数据、目标和进展数据等等,所有都可应用于用户的个人销售过程(例如,在租户数据存储22中)。在mts布置的示例中,由于将要访问、查看、修改、报告、传送、计算等的所有数据和应用可以由除了网络接入外没有任何其他的用户系统访问和维护,因此用户可以从任意多个不同的用户系统管理他的或她的销售工作和周期。例如,如果销售人员正在拜访客户,并且在其休息室有因特网接入,那么销售人员可以在等待客户到达休息室的同时获得关于该客户的关键更新。

尽管每个用户的数据可能与其他用户的数据分开,而不管每个用户的雇主,但是一些数据可能是组织范围的数据,其由多个用户或作为租户的给定组织的所有用户共享或访问。因此,可以存在分配在租户级别由系统16管理的一些数据结构,同时其他数据结构可以在用户级别管理。因为mts可以支持包括可能的竞争者的多个租户,所以mts应该具有安全协议,其保持数据、应用以及应用使用隔离。另外,因为很多租户选择访问mts而不是维护他们自己的系统,冗余、可运营时间以及备份是mts中可以实现的额外功能。除了特定于用户的数据和特定于租户的数据之外,系统16还可以维护由多个租户可使用的系统级数据或其他数据。这样的系统级数据可以包括行业报告、新闻、帖子以及可以在租户之间共享的类似物。

在某些实施例中,用户系统12(其可以是客户端系统)与应用服务器50通信以从系统16请求和更新系统级数据和租户级数据,这可能涉及向租户数据存储22和/或系统数据存储24发送一个或更多个查询。系统16(例如,系统16中的应用服务器50)自动生成一个或更多个旨在访问所需信息的sql语句(例如,一个或更多个sql查询)。系统数据存储24可以生成查询计划以从数据库访问所请求的数据。

通常可以将每个数据库视为对象的集合,例如一组逻辑表,其包含适合于预定义类别的数据。“表”是数据对象的一种表示,并且在本文中根据一些实现可以用于简化数据对象和自定义对象的概念性描述。应该理解,“表”和“对象”在本文中可以互换使用。每个表通常包含一个或更多个数据类别,其在可视模式中逻辑排列为列或字段。表的每行或每个记录包含由字段定义的每个类别的数据的实例。例如,crm数据库可以包括表,其描述具有用于基本联系人信息的字段的客户,例如姓名,地址,电话号码,传真号码等。另一个表可以描述采购订单,包括用于信息的字段,诸如客户、产品、销售价格、日期等。在某些多租户数据库系统中,可能会提供标准实体表供所有租户使用。对于crm数据库应用,此类标准实体可能包括用于案例、帐户、联系人、线索和机会数据对象的表,每个表都包含预定义的字段。应该理解,词语“实体”在本文中也可以与“对象”和“表”互换使用。

在一些多租户数据库系统中,可以允许租户创建并存储自定义对象,或者可以允许它们自定义标准实体或对象,例如通过为标准对象创建自定义字段,包括自定义索引字段。weissman等人的、于2010年8月17日发布的共同转让的编号为no.7,779,039,题为“多租户数据库系统中的自定义实体和字段(customentitiesandfieldsinamulti-tenantdatabasesystem)”的美国专利在此出于所有目的其全部内容通过引用并入本文,其教导了用于创建自定义对象以及在多租户数据库系统中自定义标准对象的系统和方法。在某些实现中,例如,所有自定义实体数据行都存储在单个多租户物理表中,每个组织可以包含多个逻辑表。对于客户来说透明的是,它们的多个“表”实际上存储在一个大表中,或者它们的数据可以与其他客户的数据存储在同一个表中。

图10a示出根据一些实现的、按需数据库服务环境900的架构组件的示例的系统示意图。如本文所述,位于云904中的客户端机器,所述云904通常指组合的一个或更多个网络,可以经由一个或更多个边缘路由器908和912与按需数据库服务环境通信。客户端机器可以是上述用户系统12的任意示例。边缘路由器可以经由防火墙916与一个或更多个核心交换机920和924通信。核心交换机可以与负载均衡器928通信,负载均衡器928可以在不同的pod(容器包)上分配服务器负载,诸如pod940和944。pod940和944可以执行数据处理和用于提供按需服务的其他操作,其中pod940和944的每一个可以包括一个或更多个服务器和/或其他计算资源。可以经由pod交换机932和936来进行与pod的通信。按需数据库服务环境的部件可以经由数据库防火墙948和数据库交换机952与数据库存储956通信。

如图10a和图10b所示,访问按需数据库服务环境可以涉及在各种不同硬件和/或软件组件之间传输的通信。此外,按需数据库服务环境900是实际按需数据库服务环境的简化表示。例如,虽然在图10a和图10b中仅示出了每种类型的一个或两个设备,但是按需数据库服务环境的一些实现可以包括每种类型的从一个到许多设备的任何地方。而且,按需数据库服务环境不需要包括图10a和图10b中所示的每个设备,或者可以包括图10a和图10b中未示出的附加设备。

此外,按需数据库服务环境900中的一个或更多个设备可以在同一物理设备上或在不同硬件上实现。一些设备可以使用硬件或硬件和软件的组合来实现。因此,诸如本文使用的“数据处理装置”,“机器”、“服务器”和“设备”之类的术语不限于单个硬件设备,而是包括被配置为提供所描述的功能的任何硬件和软件。

云904旨在指代通常包括因特网的数据网络或数据网络的组合。位于云904中的客户端机器可以与按需数据库服务环境通信,以访问由按需数据库服务环境提供的服务。例如,客户端机器可以访问按需数据库服务环境以检索、存储、编辑和/或处理信息。

在一些实现中,边缘路由器908和912在云904和按需数据库服务环境900的其他部件之间路由分组。边缘路由器908和912可以采用边界网关协议(bgp)。bgp是因特网的核心路由协议。边缘路由器908和912可以维护ip网络表或“前缀”,其指定因特网上的自主系统之间的网络可达性。

在一个或更多个实现中,防火墙916可以保护按需数据库服务环境900的内部组件免受因特网业务的影响。防火墙916可以基于一组规则和其他标准来阻止、允许或拒绝对按需数据库服务环境900的内部组件的访问。防火墙916可以充当一个或更多个分组过滤器、应用程序网关、有状态过滤器、代理服务器或任何其他类型的防火墙。

在一些实现中,核心交换机920和924是在按需数据库服务环境900内传输分组的高容量交换机。核心交换机920和924可以被配置为网络桥,其在按需数据库服务环境内的不同组件之间快速路由数据。在一些实现中,使用两个或更多个核心交换机920和924可以提供冗余和/或减少的延时。

在一些实现中,pod940和944可以执行由按需数据库服务环境提供的核心数据处理和服务功能。每个pod可以包括各种类型的硬件和/或软件计算资源。参考图10b更详细地讨论pod架构的示例。

在一些实现中,pod940和944之间的通信可以经由pod交换机932和936进行。pod交换机932和936可以促进pod940和944与位于云904中的客户端机器之间的通信,例如通过核心交换机920和924。此外,pod交换机932和936可以促进pod940和944与数据库存储956之间的通信。

在一些实现中,负载均衡器928可以在pod940和944之间分配工作负载。在pod之间平衡按需服务请求可以帮助改善资源的使用,增加吞吐量,减少响应时间和/或减少开销。负载均衡器928可以包括多层交换机以分析和转发流量。

在一些实现中,可以由数据库防火墙948保护对数据库存储956的访问。数据库防火墙948可以充当在协议栈的数据库应用层处操作的计算机应用防火墙。数据库防火墙948可以保护数据库存储956免受诸如结构查询语言(sql)注入、数据库木马和未经授权的信息披露的应用程序攻击。

在一些实现中,数据库防火墙948可以包括主机,其使用一种或更多种形式的反向代理服务来在将流量传递到网关路由器之前代理流量。数据库防火墙948可以检查数据库流量的内容并阻止某些内容或数据库请求。数据库防火墙948可以在tcp/ip堆栈顶部的sql应用级上工作,管理应用与数据库或sql管理界面的连接,以及拦截和强制执行至或来自数据库网络或应用接口的分组。

在一些实现中,与数据库存储956的通信可以经由数据库交换机952进行。多租户数据库存储956可以包括用于处理数据库查询的一个以上的硬件和/或软件组件。因此,数据库交换机952可以将由按需数据库服务环境的其他组件(例如,pod940和944)发送的数据库查询引导到数据库存储956内的正确组件。

在一些实现中,数据库存储956是由许多不同组织共享的按需数据库系统。按需数据库服务可以采用多租户方法、虚拟化方法或任何其他类型的数据库方法。参考图10a和图10b更详细地讨论了按需数据库服务。

图10b示出根据一些实现的、进一步示出按需数据库服务环境的架构组件的示例的系统示意图。pod944可以用于向按需数据库服务环境900的用户呈现服务。在一些实现中,每个pod可以包括各种服务器和/或其他系统。pod944包括一个或更多个内容批服务器964,内容搜索服务器968,查询服务器982,文件服务器986,访问控制系统(acs)服务器980,批服务器984和应用服务器988。此外,pod944包括数据库实例990,快速文件系统(qfs)992和索引器994。在一个或更多个实现中,pod944中的服务器之间的一些或所有通信可以经由交换机936发送。

内容批服务器964可以处理pod内部的请求。这些请求可以是长期运行的和/或未绑定到特定客户的。例如,内容批服务器964可以处理与日志挖掘、清理工作和维护任务相关的请求。

内容搜索服务器968可以提供查询和索引器功能。例如,内容搜索服务器968提供的功能可以允许用户搜索存储在按需数据库服务环境中的内容。

文件服务器986可以管理对存储在文件存储998中的信息的请求。文件存储998可以存储诸如文档、图像和基本大对象(blob)之类的信息。通过使用文件服务器986来管理对信息的请求,可以减少数据库上的图像占用空间。

查询服务器982可用于从一个或更多个文件系统检索信息。例如,查询系统982可以接收来自应用服务器988的对信息的请求,并且然后将信息查询发送到位于pod外部的nfs996。

pod944可以共享被配置为多租户环境的数据库实例990,其中不同的组织共享对相同数据库的访问。另外,由pod944呈现的服务可以调用各种硬件和/或软件资源。在一些实现中,acs服务器980可以控制对数据、硬件资源或软件资源的访问。

在一些实现中,批处理服务器984可以处理批工作,其用于在指定时间运行任务。因此,批服务器984可以将指令发送到其他服务器,例如应用服务器988,以触发批工作。

在一些实现中,qfs992可以是可从加利福尼亚州圣克拉拉市的sun获得的开源文件系统。qfs可以用作快速访问文件系统,用于存储和访问pod944中可用的信息。qfs992可以支持一些卷(volume)管理能力,允许将许多磁盘分组在一起成为文件系统。文件系统元数据可以保存在一组单独的磁盘上,这对于无法容忍长磁盘搜索的流应用非常有用。因此,qfs系统可以与一个或更多个内容搜索服务器968和/或索引器994通信,以识别、检索、移动和/或更新存储在网络文件系统996和/或其他存储系统中的数据。

在一些实现中,一个或更多个查询服务器982可以与nfs996通信,以检索和/或更新存储在pod944外部的信息。nfs996可以允许位于pod944中的服务器访问信息,以与访问本地存储的方式类似的方式通过网络访问文件。

在一些实现中,来自查询服务器922的查询可以经由负载均衡器928发送到nfs996,负载均衡器928可以在按需数据库服务环境中可用的各种资源上来分发资源请求。nfs996还可以与qfs992通信以更新存储在nfs996上的信息和/或向qfs992提供信息,以供位于pod944内的服务器使用。

在一些实现中,pod可以包括一个或更多个数据库实例990。数据库实例990可以向qfs992发送信息。当信息被发送到qfs时,它可以由pod944内的服务器使用,无需使用额外的数据库调用。

在一些实现中,数据库信息可以被发送到索引器994。索引器994可以提供数据库990和/或qfs992中可用的信息的索引。索引信息可以被提供给文件服务器986和/或qfs992。

本文描述或引用的一些但不是全部技术是作为社交网络数据库系统的一部分或与其结合实现,社交网络数据库系统在此也称为社交网络系统或社交网络。社交网络系统已经成为促进人们之间通信的流行方式,其中任何人都可以被认为是社交网络系统的用户。社交网络系统的一个例子是由加州旧金山的salesforce.com公司提供。salesforce.com公司是社交网络服务、crm服务和其他数据库管理服务的提供者,在一些实现中,任何这些服务都可以与本文公开的技术一起被访问和使用。可以在云计算环境中提供这些各种服务,例如,在多租户数据库系统的环境中。从而,可以在不必在本地安装软件的情况下实现所公开的技术,所述本地即,在与通过云可用的服务交互的用户的计算设备上。尽管经常参考描述所公开的实现,但是本领域技术人员应该理解,所公开的技术既不限于也不限于由salesforce.com公司提供的任何其他服务和系统,并且可以仅通过示例的方式在各种其他数据库系统和/或社交网络系统的环境中实现,诸如

一些社交网络系统可以在各种设置中实现,包括组织。例如,社交网络系统可以被实现以连接企业(诸如公司或业务合作伙伴)内的用户,或这种组织内的一组用户。例如,可以由商业组织的部门的员工用户使用,以便为了常涉及组织的业务的各种社交目的而彼此共享数据、进行通信和协作。在多租户数据库系统的示例中,组织内的每个组织或组可以是系统的各自的租户,如本文中更详细描述的。

在一些社交网络系统中,用户可以访问一个或更多个社交网络馈送,其包括作为馈送中的项目或条目呈现的信息更新。这样的馈送项可以包括单个信息更新或各个信息更新的集合。馈送项可以包括各种类型的数据,包括基于字符的数据,音频数据,图像数据和/或视频数据。社交网络馈送可以在显示装置上的图形用户界面(gui)中显示,显示装置如诸如本文所述的计算设备的显示。信息更新可以包括来自各种源的各种社交网络数据,并且可以存储在按需数据库服务环境中。在一些实现中,所公开的方法,装置,系统和计算机可读存储介质可以被配置或设计用于在多租户数据库环境中使用。

在一些实现中,除了跟随各个用户和用户组之外,社交网络系统还可以允许用户以诸如案例、账户或机会之类的crm记录的形式跟随数据对象。存储在数据库中的记录的“跟随”,如本文更详细描述的,当用户订阅记录时,允许用户跟踪该记录的进度。对记录的更新,这里也称为记录的改变,是可以发生的一种类型的信息更新,并且可以在社交网络馈送上标记,诸如订阅记录的用户的记录馈送或新闻馈送。记录更新的示例包括记录中的字段改变,记录状态的更新,以及记录本身的创建。某些记录是公共可访问的,这样任何用户都可以跟随记录,而其他记录是私有的,对于这些记录,适当的安全界限/许可是用户跟随记录的先决条件。

信息更新可以包括各种类型的更新,其可以与特定记录有关或者可以与特定记录无关。例如,信息更新可以是由用户提交的社交媒体消息,或者可以响应于用户动作或响应于事件而生成。社交媒体消息的示例包括:帖子、评论、用户个人偏好的指示,诸如“喜欢”和“不喜欢”,用户状态的更新,上传的文件,以及用户提交的社交网络数据超链接或其他网络数据,诸如因特网上的各种文档和/或网页。帖子可以包括字母数字或其他基于字符的用户输入,如单词,短语,语句,问题,情绪表示,和/或符号。评论通常是指对帖子或其他信息更新的回复,例如单词,短语,陈述,答案,问题,和反动情绪表示,和/或符号。多媒体数据可以包含在帖子或评论中,与其链接或附加。例如,帖子可以包括与jpeg图像或动画图像组合的文本语句。可以响应于特定帖子或评论提交喜欢或不喜欢。上载文件的示例包括演示文稿,文档,多媒体文件以及类似物。

如上所述,用户可以通过订阅记录来跟随记录。用户还可以跟随其他实体,诸如其他类型的数据对象、其他用户和用户组。关于这些实体的馈送跟踪更新是可以接收并包括在用户的新闻馈送中的一种类型的信息更新。任何数量的用户可以跟随具体的实体,从而在用户的相应新闻馈送上查看与该实体有关的信息更新。在一些社交网络中,用户可以通过建立彼此的连接来相互跟随,有时被称为彼此的“友谊”。通过建立这样的连接,一个用户可能能够看到由另一个用户生成的信息、所生成的关于另一用户或以其他方式与另一个用户相关联的信息。例如,第一个用户可以能够看到由第二用户发布到第二用户的个人社交网络页面的信息。这种个人社交网络页面的一种实现是用户的简档页面,例如,以表示用户简档的网页形式。在一个示例中,当第一用户跟随第二用户时,第一用户的新闻馈送可以从第二用户接收提交给第二用户的简档馈送的帖子。用户的简档馈送在此也称为用户的“墙”,其是在用户的简档页面上显示的社交网络馈送的一个示例。

在一些实现中,社交网络馈送可以特定于社交网络系统的一组用户。例如,一组用户可以发布新馈送。根据馈送和组的许可配置,该组的成员可以查看该组的馈送并发布到该组的馈送。在组上下文中的信息更新还可以包括对组状态信息的更改。

在一些实现中,当从一个或更多个用户输入的数据(诸如帖子或评论)被提交给具体用户、组、对象或社交网络系统内的其他构造的社交网络馈送时,除了包含作为在一个或更多个馈送中的馈送项的数据之外,电子邮件通知或其他类型的网络通信发送到跟随该用户、组或对象的所有用户,其中一个或更多个馈送诸如用户的简档馈送、新闻馈送或记录馈送。在一些社交网络系统,这种通知的发生仅限于已发布输入的第一实例,其可以构成更大会话的一部分。例如,可以为初始帖子发送通知,但不为关于帖子的评论发送通知。在一些其他实现中,针对每个这样的信息更新发送单独的通知。

术语“多租户数据库系统”通常指的是那些系统,其中一个或更多个客户可以共享数据库系统的硬件和/或软件的各种元件。例如,给定的应用服务器可以同时处理对大量客户的请求,并且给定的数据库表可以存储数据的行,诸如用于潜在更多数量的客户的馈送项。

“用户简档”或“用户的简档”的示例是数据库对象或对象集,其被配置为存储和维护关于社交网络系统和/或数据库系统的给定用户的数据。数据可以包括一般信息,诸如姓名、职位、电话号码、照片、传记摘要和状态,例如描述用户当前正在做什么的文本。如上本文所述,数据可以包括由其他用户创建的社交媒体消息。在存在多个租户的情况下,用户通常与具体租户相关联。例如,用户可以是公司的销售人员,该公司是提供数据库服务的数据库系统的租户。

术语“记录”通常是指,具有有值的字段并存储在数据库系统中的数据实体。记录的示例是由数据库服务的用户创建的数据对象的实例,例如,以关于具体(实际或潜在)业务关系或项目的crm记录的形式。记录可以具有由数据库服务(标准对象)定义的或由用户(自定义对象)定义的数据结构。例如,记录可以是针对用户的商业伙伴或潜在商业伙伴(例如,客户,供应商,分销商等)的,并且可以包括描述公司的整个公司,子公司或联系人的信息。作为另一个例子,记录可以是用户工作正在进行的项目,例如与现有合作伙伴的机会(例如,可能的销售),或者用户试图获得的项目。在多租户数据库系统的一个实现中,租户的每个记录具有存储在公共表中的唯一标识符。记录具有由对象的结构定义的数据字段(例如,某些数据类型和目的的字段)。记录也可以具有由用户定义的自定义字段。字段可以是另一个记录或包括其链接,从而提供记录之间的父子关系。

术语“社交网络馈送”和“馈送”在本文中可互换使用,并且通常是指具有各种类型的信息和数据的馈送项或条目的组合(例如,列表)。可以在一个或更多个数据库表中存储和维护这样的馈送项目,例如,作为表中的行,其可以被访问以检索要作为所显示的馈送的一部分呈现的相关信息。术语“馈送项目”(或馈送元素)通常是指信息项,其可以在馈送中呈现,诸如用户提交的帖子。作为示例,可以在数据库的用户简档馈送中呈现关于用户的信息的馈送项,同时可以在数据库中的记录馈送中呈现关于记录的信息的馈送项。简档馈送和记录馈送是不同类型的社交网络馈送的示例。跟随第一用户和记录的第二用户可以接收与第一用户和记录相关联的馈送项,用于在第二用户的新闻馈送中显示,该新闻馈送是另一种类型的社交网络馈送。在一些实现中,来自任何数量的被跟踪用户和记录的馈送项可以组合成特定用户的单个社交网络馈送。

作为示例,馈送项可以是社交媒体消息,诸如用户生成的文本数据的帖子,以及对记录或配置文件的馈送跟踪更新,例如对记录的字段的更改。本文更详细地描述了馈送跟踪更新。馈送可以是社交媒体消息和馈送跟踪更新的组合。社交媒体消息包括由用户创建的文本,并且还可以包括其他数据。社交媒体消息的示例包括帖子,用户状态更新和评论。可以为用户的简档或为记录创建社交媒体消息。尽管可以应用某些限制,但是可以由各种用户,可能是任何用户,创建帖子。作为示例,可以将帖子发布到用户的简档页面的墙壁部分(其可以包括许多最近的帖子)或者包括多个帖子的记录的部分。在例如用户的简档页面上的gui中显示时这些帖子可按时间顺序组织,作为用户简档馈送的一部分。与帖子相反,用户状态更新改变用户的状态,并且可以由该用户或管理员进行。记录也可以具有状态,其更新可以由记录的所有者或对记录具有合适的写访问许可的其他用户提供。所有者可以是单个用户、多个用户或组。

在一些实现中,可以对任何馈送项进行评论。在一些实现中,评论被组织为明确地与特定馈送跟踪更新、发布或状态更新相关联的列表。在一些实现中,评论可能未被列在馈送项的第一层(在层级意义上)中,但是作为从特定第一层馈送项分支的第二层列出。

“馈送跟踪更新”在本文中也称为“馈送更新”,其是一种类型的信息更新,并且通常是指代表事件的数据。馈送跟踪更新可以包括由数据库系统响应于该事件而生成的文本,作为一个或更多个馈送项提供,以可能包括在一个或更多个馈送中。在一个实现中,最初可以存储数据,然后数据库系统可以稍后使用该数据来创建用于描述事件的文本。如本文所使用的,数据和/或文本都可以是馈送跟踪更新。在各种实现中,事件可以是记录的更新和/或可以由用户的特定动作触发。哪些动作触发事件可以配置。哪些事件具有所创建的馈送跟踪更新,以及将哪些馈送更新发送到哪些用户也可以进行配置。社交媒体消息和其他类型的馈送更新可以存储为记录的字段或子对象。例如,可以将馈送存储为记录的子对象。

“组”通常是用户的集合。在一些实现中,组可以定义为具有相同或相似属性的用户,或者通过成员资格定义。在一些实现中,“组馈送”,在本文中也称为“组新闻馈送”,包括关于组中的任何用户的一个或更多个馈送项。在一些实现中,组馈送还包括信息更新和其他馈送项,其是关于整个组、组的目的、组的描述、组记录以及与组关联存储的其他对象的。包括组记录更新和诸如帖子、评论、喜欢等的社交媒体消息的信息更新的线程可以定义组对话并且随时间变化。

“实体馈送”或“记录馈送”通常是指关于数据库中的具体记录的馈送项的馈送。这样的馈送项可以包括关于记录的变化的馈送跟踪更新以及用户进行的关于记录的帖子。实体馈送可以由任何类型的馈送项组成。可以在页面上显示这样的馈送,诸如与记录相关联的网页,例如记录的主页。如本文所使用的,“简档馈送”或“用户的简档馈送”通常是指关于特定用户的馈送项的馈送。在一个示例中,简档馈送的馈送项包括其他用户做出或发送给特定用户的帖子和评论,以及特定用户进行的状态更新。这样的简档馈送可以在与特定用户相关联的页面上显示。在另一示例中,简档馈送中的馈送项可以包括由特定用户做出的帖子以及基于特定用户的动作发起的馈送跟踪更新。

虽然可以参考具有应用服务器的系统来描述一些公开的实现,该应用服务器为能够支持多个租户的按需数据库服务提供前端,但是所公开的实施例不限于多租户数据库,也不限于应用服务器上的部署。在不脱离所要求的实施例的范围的情况下,可以使用诸如ibm的等各种数据库体系结构来实践一些实现。

应当理解,所公开的实现中的一些可以以模块化或集成方式使用硬件和/或计算机软件的控制逻辑的形式具体化。使用硬件以及硬件和软件的组合的其他方式和/或方法是可能的。

任何所公开的实现可以以各种类型的硬件、软件、固件及其组合具体化。例如,本文公开的一些技术可以至少部分地由包括程序指令、状态信息等的计算机可读介质来实现,用于执行本文描述的各种服务和操作。程序指令的示例包括诸如由编译器产生的机器代码和包含可由计算设备(诸如服务器或使用解释器的其他数据处理设备)执行的更高级代码的文件。计算机可读介质的示例包括但不限于:磁性介质,诸如硬盘,软盘和磁带;光学介质,如闪存,光盘(cd)或数字多功能光盘(dvd);磁光介质;以及专门配置用于存储程序指令的硬件设备,诸如只读存储器(“rom”)设备和随机存取存储器(“ram”)设备。计算机可读介质可以是这种存储设备的任何组合。

本申请中描述的任何操作和技术可以实现为由处理器使用任何合适的计算机语言(诸如,例如面向对象的技术使用的java,c++或perl)使用例如面向对象的技术来执行的软件代码。软件代码可以作为一系列指令或命令存储在计算机可读介质上。利用软件/程序代码编码的计算机可读介质可以与兼容设备一起打包,或者与其他设备分开提供(例如,通过因特网下载)。任何这样的计算机可读介质可以驻留在单个计算设备或整个计算机系统上或其内,并且可以是在系统或网络内的其他计算机可读介质中。计算机系统或计算设备可以包括监视器、打印机或其他合适的显示器,用于向用户提供本文提到的任何结果。

虽然本文已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,本申请的广度和范围不应该受本文描述的任何实施例限制,但是应该仅根据以下和随后提交的权利要求及其等同物来限定。

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