多租户数据库系统中为多个租户存储自定义字段的方法和系统技术方案

技术编号:2833962 阅读:270 留言:0更新日期:2012-04-11 18:40
用于在固定物理数据库模式中容纳诸如动态表和列等可变模式数据的系统和方法。提供了诸如表的标准对象以供多个租户或组织在多租户数据库系统(201)中使用。每一组织可添加或定义自定义字段以包含在标准对象(203)中。多租户的自定义字段被存储在对象数据结构内的单个字段中,且该单个字段可对每一租户(213)包含不同的数据类型。还提供了索引列,其中租户可指定用于索引的字段。指定字段的数据值被复制到索引列中,每一索引列可包含多种数据类型(210)。每一组织也可定义包含自定义字段和索引列(201)的自定义对象。多个租户的自定义对象被存储在单个自定义对象数据结构中。单个自定义对象表的主键值是全局唯一的,但也可包括可在不同实体中重用的对象专用标识符。

【技术实现步骤摘要】
【国外来华专利技术】多租户数据库系统中的自定义实体和字段专利技术背景本专利技术一般涉及多租户数据库,尤其涉及用于在多租户数据库系统中创建诸 如自定义实体和字段等自定义对象的系统和方法。在多租户数据库系统,诸如salesforce.com服务中,使用了多租户体系结构, 其中顾客组织(即,租户)共享一个逻辑数据库中的数据库资源。数据库表本身一 般是共享的;数据模型中的每一实体一般包含为每一租户区分行的organization—id(组织id)列。在此(被索引的)organizationjd列上的租户过滤器的上下文中的 所有的查询和数据处理用于确保适当的安全性和虚拟专用数据库的外观。例如在 salesforce.com系统中,该策略被用来向顾客展示诸如」ccowf (账户)、Cowto(联系人)、lead (潜在顾客)和C^ ortwm'0;(机遇)实体等的标准实体。然而,顾客可能希望向数据库系统添加除标准应用配备的标准实体和字段以 外的他们自己的自定义数据。在传统的客户机/服务器应用中,其中顾客具有其自 己的物理数据库,自定义数据的添加通常是经由针对该数据库的DDL (数据定义 语言)来完成的,以创建新的物理模式——表和列。在在线多租户数据库系统,诸 如salesforce.com服务中,由于各种原因该方法可能是无法维持的。例如,对具有 大量租户(例如,1,000或10,000或更多租户的数量级)的数据库系统,所有期望 的模式的联合将淹没底层数据词典式目录(例如,Oracle词典)。此外,维护所有 这些模式对象将是DBA (数据库管理员)的几乎不可能的负担。此外,当前的关 系型数据库不能足够良好地支持在线DDL (在高度并发事务系统中)以便组织能 维持逻辑独立。具体地, 一个组织进行的模式创建将对引起不可接受的延迟的所有 其它顾客锁定应用。从而,期望提供一种系统和方法,它们提供在固定物理模式中存储可变模式 数据以便克服以上和其它问题的方法。专利技术简述本专利技术提供用于在固定物理数据库模式中容纳诸如动态表和列等可变模式数据的新颖的系统和方法。根据本专利技术,提供诸如表等标准对象以供多个租户或组织使用。每一组织可 添加或定义自定义字段以包含在标准对象中。在一个方面,多租户的自定义字段被 存储在对象数据结构内的单个字段中,且该单个字段可对每一租户包含不同的数据 类型。还提供了索引列,其中租户可指定用于索引的字段。指定字段的数据值被复 制到索引列中,每一索引列可包含多种数据类型。每一组织也可定义包含自定义字 段和索引列的自定义对象。在一个方面,多个租户的自定义对象被存储在单个自定 义对象数据结构中。单个自定义对象表的主键值是全局唯一的,但也可包括可在不 同实体中重用的对象专用标识符。根据本专利技术的一方面,提供了一种用于在单个多租户数据结构中存储多个租 户的多个字段的计算机实现的方法。该方法一般包括定义具有多个数据列和一个或 多个索引列的多租户数据结构,为第一租户定义第一数据字段,所述第一字段具有 第一数据类型;以及为第二租户定义第二数据字段,所述第二字段具有第二数据类 型,其中第二数据类型不同于所述第一数据类型。该方法一般还包括当所述第一和 第二字段中具有数据值的记录由所述第一和第二租户创建时将第一和第二字段的 数据值存储到数据结构中的单个列中,其中该单个列对不同租户包含具有不同数据类型的数据值;以及响应于来自第一租户的在第一数据字段中索引数据的请求将单个数据列中为第一字段存储的数据值复制到索引列的第一个中。根据本专利技术的另一方面,提供了一种用于在单个多租户数据结构中容纳一个 或多个组织的多个表的计算机实现的方法。该方法一般包括定义含有主键列、组织id列和多个物理数据列的多租户数据结构;为第一租户定义第一表,该第一表具有 第一数据字段且第一租户具有第一租户id;将第一表id分配给第一表;为第二租 户定义第二表,该第二表具有第二数据字段且第二租户具有第二租户id;以及将第 二表id分配给第二表。当由第一租户为第一表创建记录时,对所创建的每一记录, 该方法一般包括将第一数据字段的值存储到该数据结构中的单个数据列,将第一租 户id存储到组织id列,并将第一表id存储到主键列。当由第二租户为第二表创建 记录时,对所创建的每一记录,该方法一般包括将第二数据字段的值存储到数据结 构中的单个数据列,将第二租户id存储到组织id列,并将第二表id存储到主键列,其中第一和第二租户的第一和第二表被存储到该数据结构中。根据本专利技术的又一方面,提供了一种用于在单个数据结构中为一个或多个租 户存储多个表的计算机实现的方法。该方法一般包括定义具有主键列、组织id列和多个数据列的数据结构;为第一租户定义第一表,该第一表具有第一数据字段, 该第一数据字段具有第一数据类型,且第一租户具有第一租户id;将第一表id分 配给第一表;为第一租户定义第二表,该第二表具有第二数据字段,该第二数据字 段具有不同于第一数据类型的第二数据类型;以及将第二表id分配给第二表。当. 为第一表创建记录时,对所创建的每一记录,该方法一般包括将第一数据字段的值 存储到数据结构中的单个数据列,将第一租户id存储到组织id列,并将第一表id 存储到主键列。当为第二表创建记录时,对所创建的每一记录,该方法一般包括将 第二数据字段的值存储到单个数据列,将第一租户id存储到组织id列,并将第二 表id存储到主键列,其中第一租户的第一和第二表被存储到数据结构中,且其中 所述单个数据列包括具有所述第一和第二数据类型的数据值。参考说明书的其余部分,包括附图和权利要求书,将理解本专利技术的其它特征 和优点。本专利技术的其它特征和优点以及本专利技术的各个实施例的结构和操作以下参考 附图详细描述。附图中,相同的参考标号指示相同或功能类似的元素。附图简述附图说明图1示出了根据一个实施例可在其中使用多租户数据库系统(MTS)的环境。 图2根据一个实施例更详细地示出了 MTS的元素及其中的互连。 图3示出了根据本专利技术的一个实施例表示为标准主表和相关联的自定义字段 表的对象的示例。图4示出了根据一个实施例表示为包含物理索引列320的自定义字段表310 的自定义对象。图5示出了根据一个实施例表示为自定义实体表的自定义对象的示例。图6a示出了根据本专利技术的实施例的自定义字段定义元数据表。图6b示出了根据本专利技术的实施例用于记录为每一组织定义的每一自定义实体对象的名字和其它信息的元数据表。图7示出了包含标准列和自定义字段列的标准实体表的示例,以及多个虚构组织的实际数据值的示例。图8示出了包括含有虚构组织的数据值的自定义表的自定义实体对象的示例。专利技术的详细描述图1示出了可在其中使用多租户数据库系统的环境。如图1中所示(且在图2中更详细示出),任何用户系统12可经由网络14与多租户数据库系统(MTS) 16交互。这些用户系统12的用户可以是处于不同容量(capacity)中的用户,特 定用户系统12的容量可由当前用户完全确定。例如,在销售员正使用特定的用户 系统12来与MTS 16交互的情况下,该用户系统具有分配给该销售员的容量。然 而,当管理员使用该用户系统与MTS16交互时,该用户系统具有分配给该管理员 的容量。网络14可以是LAN (局字段网)、W本文档来自技高网...

【技术保护点】
一种在单个多租户数据结构中为多个租户存储多个字段的计算机实现的方法,包括:定义具有多个数据列和一个或多个索引列的多租户数据结构;为第一租户定义第一数据字段,所述第一字段具有第一数据类型;为第二租户定义第二数据字段,所 述第二字段具有第二数据类型,其中所述第二数据类型不同于所述第一数据类型;当在所述第一和第二字段中具有数据值的记录由所述第一和第二租户创建时,将所述第一和第二字段的数据值存储到所述数据结构中的单个列中,其中所述单个列包括数据值,所述数 据值对不同租户具有不同数据类型;以及响应于来自所述第一租户的在所述第一数据字段中索引数据的请求,将所述单个数据列中为所述第一字段存储的数据值复制到所述索引列的第一个中。

【技术特征摘要】
【国外来华专利技术】US 2004-4-2 10/817,1611.一种在单个多租户数据结构中为多个租户存储多个字段的计算机实现的方法,包括定义具有多个数据列和一个或多个索引列的多租户数据结构;为第一租户定义第一数据字段,所述第一字段具有第一数据类型;为第二租户定义第二数据字段,所述第二字段具有第二数据类型,其中所述第二数据类型不同于所述第一数据类型;当在所述第一和第二字段中具有数据值的记录由所述第一和第二租户创建时,将所述第一和第二字段的数据值存储到所述数据结构中的单个列中,其中所述单个列包括数据值,所述数据值对不同租户具有不同数据类型;以及响应于来自所述第一租户的在所述第一数据字段中索引数据的请求,将所述单个数据列中为所述第一字段存储的数据值复制到所述索引列的第一个中。2. 如权利要求l所述的方法,其特征在于,还包括-定义具有一个或多个列的单独的数据结构;以及响应于来自所述第一租户和所述第二租户的、分别关于所述第一数据字段或 第二数据字段中的数据为唯一的指示,将分别对应于所述第一数据字段或第二数据 字段的存储在所述单个数据列中的数据值复制到所述单独的数据结构中。3. 如权利要求l所述的方法,其特征在于,所述复制包括将所复制的数据值 转换成经修改的格式。4. 如权利要求3所述的方法,其特征在于,所述转换包括对所述数据值应用 大小写折叠算法。5. —种在单个多租户数据结构中为一个或多个组织容纳多个表的计算机实现 的方法,包括定义含有主键列、组织id列和多个数据列的多租户数据结构; 为第一租户定义第一表,所述第一表具有第一数据字段,且所述第一租户具有第-一租户id;将第一表id分配给所述第一表;为第二租户定义第二表,所述第二表具有第二数据字段,且所述第二租户具 有第二租户id; 将第二表id分配给所述第二表;其中当由所述第一租户为所述第一表创建记录时,对所创建的每一记录a) 将所述第一数据字段的值存储到所述数据结构中的单个数据列;b) 将所述第一租户id存储到所述组织id列;并且 C)将所述第一表id存储到所述主键列;以及其中当由所述第二租户为所述第二表创建记录时,对所创建的每一记录a) 将所述第二数据字段的值存储到所述数据结构中的单个数据列;b) 将所述第二租户id存储到所述组织id列;并且C)将所述第二表id存储到所述主键列;以及其中所述第一和第二租户的第一和第二表被存储到所述数据结构中。6. 如权利要求5所述的方法,其特征在于,所述数据结构包括一个或多个索引列,所述方法还包括响应于来自所述第一租户的在所述第一数据字段中索引数据的请求,将所述 单个数据列中为所述第一表存储的数据值复制到所述索引列的第一个中。7. 如权利要求6所述的方法,其特征在于,所述复制包括基于所述第一租户id、所述第一表id和所述第一数据字段标识要被复制的数据值。8. 如权利要求5所述的方法,其特征在于,所述第一数据字段具有第一数据类型,且所述第二数据字段具有不同于所述第一数据类型的第二数据类型,使得所 述单个数据列包括具有所述第一和第二数据类型的数据值。9. 一种用于在单个数据结构中为一个或多个租户存储多个表的计算机实现的方法,包括定义具有主键列、组织id列和多个数据列的数据结构;为第一租户定义第一表,所述第一表具有第一数据字段,所述第一数据字段具有第一数据类型,且所述第一租户具有第一租户id;将第一表id分配给所述第一表;为所述第一租户定义第二表,所述第二表具有第二数据字段,所述第二数据字段具有不同于所述第一数据类型的第二数据类型;将第二表id分配给所述第二表;其中当为所述第一表创建记录时,对所创建的每一记录a) 将所述第一数据字段的值存储到所述数据结构中的单个数据列;b) 将所述第一租户id存储到所述组织id列;并且 C)将所述第一表id存储到所述主键列;以及 其中当为第二表创建记录时,对所创建的每一记录a) 将所述第二数据字段的值存储到所述单个数据列;b) 将所述第一租户id存储到所述组织id列;并且C)将所述第二表id存储到所述主键列;其中所述第一租户的所述第一和第二表被存储到所述数据结构中,且其中所 述单个数据列包括具有所述第一和第二数据类型的数据值。10. 如权利要求9所述的方法,其特征在于,还包括为第二租户定义第三表,所述第三表具有第三数据字段,所述第三数据字段 具有第三数据类型,且所述第二租户具有第二租户id;以及 将第三表id分配给所述第三表;其中当为所述第三表创建记录时,对所创建的每一记录将所述第三数据字段的值存储到所述数据结构中的所述单个数据列中; 将所述第二租户id存储到所述组织id列中;以及 将所述第三表id存储到所述主键列中;其中所述第一、第二和第三表存储在所述数据结构中,且其中所述单个数据 列包括具有所述第一和第二数据类型和所述第三数据类型的数据值。11. 如权利要求9所述的方法,其特征在于,所述第一和第二表id是不同的。12. 如权利要求IO所述的方法,其特征在于,所述第一和第二表id是不同的, 且所述第三表id与所述第一和第二表...

【专利技术属性】
技术研发人员:C韦斯曼S翁
申请(专利权)人:易享信息技术上海有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1