目录
- 背景和价值
- 租户设计
- 元数据模型
- 参考资料
背景和价值
租户设计
元数据模型
解决什么问题?
不同的租户(客户)有建自定义表或者字段的需求。
如果都用物理表的设计,那么单库最多支持上千个模型,一般来说,一个租户有数百个数据模型,单库就只能支撑至多数十个租户,成本极高;并且运行时,各租户会经常修改数据模型,这些模型的修改如果线上执行数据库DDL,将会极大影响数据库性能,并且会影响其它租户。
方案:
Salesforce给出Zero DDL的设计,线上海量的租户可以自由更新模型,模型的变更仅仅是元数据记录的更新而已,非常轻量,单库实例可以轻松支撑十万乃至百万模型以上。如果采用物理库设计,很难做到单实例支撑百万个数据表以及在线DDL。
关键设计思想就是:当用户定义一个新的用户表或者添加字段时,用户创建的不是数据库中的物理表,而是在系统的元数据表中添加了一条记录,这个记录描述的是用户表的逻辑定义,是虚拟的。
任何数据表、字段的变更都不会带来线上数据库的DDL,Salesforce巧妙的通过七个数据表实现这个设计,使得http://Force.com可以描述任意复杂的模型,这才使得它的CRM产品具备无限的扩展能力和无穷的生命力。
参考资料
https://blog.csdn.net/wwd0501/article/details/136242900