本文参考自官方文档

多租户架构

作为云计算平台的先驱,Salesforce最大的特点是“软件即服务”(Software as a Service,Saas)。实现这种技术的基础便是“多租户架构”(Muntitenancy)。

定义引自维基百科:

多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。

这种架构的优点在于:

  • 所有的用户高效共享所有的资源
  • 用户的资源之间不会互相影响

多租户架构的核心——元数据驱动

Salesforce多租户架构的核心是元数据驱动。不同于传统的关系数据库结构,Force.com中的对象、字段等并没有存储在实际的、静态的数据表中。在Force.com中,这些对象、字段等由元数据定义,在运行时动态编译生成。

Force.com中定义了一个全局数据字典(Universal Data Dictionary,简称UDD)。在UDD中存储了各种逻辑数据,包括但不限于:

  • 对象(Object),相当于传统关系数据库中的数据表
  • 字段(Field),相当于传统关系数据库中的字段
  • 数据库触发器(Database Trigger)
  • 存储过程(Stored Procedure)

举个例子。当用户创建了一个对象,比如“地址”,Force.com并不会真正的创建一个名为“地址”的数据表,而是将“地址”对象的定义保存为元数据。在运行时,系统会读取“地址”的定义,然后将其动态编译成“地址”对象,供用户使用。

这样做的好处是当用户需要修改对象定义时,在Force.com的后台不需要修改某个数据表的结构,而只是修改数据表中的某一条记录,让整个过程变得高效、稳定。

与此同时,Force.com中也使用了许多复杂的缓存技术来缓存诸多元数据,从而提高系统的效率。

元数据存储的数据模型

Force.com中使用诸多数据表来存储元数据和其他数据及关系。在实际的系统中它们有着复杂的名字和定义。为了描述方便起见,在下文将它们的名称做简化,着重描述它们的功能。

  • MT_Objects表:用于存储对象的定义,包括了其唯一的ID、从属的组织的ID、名字等。在Salesforce系统中的所有“租户”组织的对象定义同时保存在这一个表中

  • MT_Fields表:用于存储对象字段的信息,包括了其唯一的ID、从属的组织的ID、从属的对象的ID、名字、字段类型等。在Salesforce系统中的所有“租户”组织包含的字段同时保存在这一个表中

  • MT_Data表:用于存储各个对象的实际数据,相当于传统关系数据库中的一行记录。在Salesforce系统中所有“租户”组织中的数据同时保存在这一个表中

  • MT_Clobs表:CLOB是“character large objects”的简称。这些对象可以存储长达32000字符的数据。当MT_Data表中存在的数据包含过多的字符时,系统会将这些长字符数据存储在MT_Clobs表中,而在MT_Data表中存储一个MT_Clobs表某一行的ID值,从而精简MT_Data表

  • MT_Indexes表:这是一个数据透视表(Pivot table),用于存储MT_Data表中数据的索引。该表主要用于提高数据的搜索效率

  • MT_Unique_Indexes表:该表和MT_Indexes表类似,也是一个数据透视表,也存储了数据的索引。不同之处在于该表中的数据索引保持着唯一性。在用户给某字段增加唯一约束时,系统会将该字段的内容记录在此表中。当用户插入重复的值的时候,系统会根据该表的内容给出警告信息

  • MT_Fallback_Indexes表:MT_Fallback_Indexes表中保存了所有数据的名字(Name)。在特殊情况下,Salesforce有可能无法完成用户需要的搜索。在这种情况下,Salesforce会启用备用搜索机制,直接查询MT_Fallback_Indexes表中的数据,从而给出名字符合搜索条件的数据

Force.com 多租户架构的更多相关文章

  1. Oracle 12c多租户架构浅析

    Oracle数据库12c的一大创新即是其采用的多租户架构.对于多租户这项新功能,业内的评价褒贬不一.有的声音认为,这项功能的用处不是特别大,但在某些场景或特定的环境下,多租户依然有它的用处.其最大的用 ...

  2. ABP Zero 单部署,单数据库,多租户架构

    首先,我们应该定义多租户系统中的两个条目: 租主(Host):租主是单例的(只有一个租主).租主会对创建和管理租户负责.因此,一个“租主用户”比所有的租户等级更高,并独立于所有租户,同时还能控制他们. ...

  3. SaaS “可配置”和“多租户”架构的几种技术实现方式

    1.数据存储方式的选择 多租户(Multi-Tenant ),即多个租户共用一个实例,租户的数据既有隔离又有共享,说到底是要解决数据存储的问题. 常用的数据存储方式有三种. 方案一:独立数据库   一 ...

  4. Mybatis Plus 多租户架构实现(完美教程)

    一.背景介绍 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 简单讲 ...

  5. Hadoop多租户架构配置

    cloudera manager 进到cluster里面,点击Dynamic Resource Pools,没做任何配置默认情况下,资源池里有个default资源组 hadoop jar /usr/l ...

  6. ORACLE--12C--多租户体系架构概念

    一,概念 1,何为多租户? 官网链接: 飞机直达>> 多租户这个概念并不是12C的新特性,而是体系架构,多租户架构使得oracle 数据库成为了一个多租户的容器数据库,也就是contain ...

  7. 在 Windows Azure 上设计多租户应用程序

    作者:Suren Machiraju 和 Ralph Squillace 审校:Christian Martinez.James Podgorski.Valery Mizonov 和 Michael ...

  8. 一种Django多租户解决方案

    什么是多租户? 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 多租 ...

  9. ABP框架 - 多租户

    文档目录 本节内容: 什么是多租户 多部署 - 多数据库 单部署 - 多数据库 单部署 - 单数据库 单部署 - 混数据库 多部署 - 单/多/混 数据库 ABP中的多租户 启用多租户 宿主与租户 会 ...

随机推荐

  1. 使用FFmpeg如何转发一个RTSP视频流

    版权声明:转载请说明出处:http://www.cnblogs.com/renhui/p/6930221.html   转发RTSP流,这类需求一般出现于转发一些摄像头采集视频,并在摄像头上做RTSP ...

  2. 为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131

    例子:请写出echo 3 . print(2) . print(4) . 5 . 'c'的输出结果为____? 许多人看到这个题的第一印象是输出结果不就是3245c嘛,然而正确的是答案却是45c213 ...

  3. 第32节:Java中-构造函数,静态方法,继承,封装,多态,包

    构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...

  4. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —7.网络服务Neutron配置

    网络服务Neutron本章节结束如何安装并配置网络服务(neutron)采用:ref:`provider networks <network1>`或:ref:`self-service n ...

  5. 批量插入bulkcopy

     public static void InsertBatch<T>(IDbConnection conn, IEnumerable<T> entityList, string ...

  6. ubuntu18.04 出现 Command 'ifconfig' not found 问题的解决办法

    我们在虚拟主机中查看ip地址需要输入ifconfig,但是报以下错误: 系统提示我们安装 net-tools,当我们输入以下命令,即可安装完成. sudo apt-get install net-to ...

  7. 从零开始学 Web 之 CSS(四)CSS初始化、定位、overflow、标签规范

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  8. TCP/IP 笔记 - 超时和重传

    TCP协议为了提供可靠的数据传输服务,会启动数据重传来解决下层网络层(IP)可能出现的数据包丢失. 超时重传介绍 TCP重传由两套独立机制来完成重传,基于时间的超时重传(RTO,TCP发送数据时会设置 ...

  9. Percona 数据库

    1. Percona介绍 Percona Server由领先的MySQL咨询公司Percona发布. Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的 ...

  10. kdump内核转储

    目录 CentOS 7.5 配置Kdump 安装Kdump 安装Kdump图形化 配置保留内存 配置kdump类型 核心转储到本地 核心转储到设备 使用NFS指定核心转储 使用SSH指定核心转储 配置 ...