多租户(Multi-Tenant)应用的可配置性

2023-10-31 11:48

本文主要是介绍多租户(Multi-Tenant)应用的可配置性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 数据可配置性

定制字段:根据客户的需求在数据表上增加相应的定制字段来保存扩展数据。例如,根据客户33的需求,在客户表中增加来源Source和Introducer两个字段 。跟客户40的需求在客户表中增加salary和work两个字段。这种方式的缺点就是随着客户的增多,客户表的字段数据将会变的非常多,一个客户定制的字段对于另外一个客户来说是毫无意义的,严重破坏了数据表的结构。但是其不需要处理复杂的数据延伸的追踪。

预定义字段:在用户可能有扩展需求的表中预设一定数量的字段。当用户提出扩展需求时,使用其中的一个或者多个字段来保存扩展数据。其缺点是无法事先确定预定义字段的数量。

名称值对:将扩展数据的保存和原数据表分离,另外用一个统一的扩展数据表来保存。扩展数据表将数据表的横向扩展列转换为纵向的数据集,将每一条原始数据记录的一个扩展字段,都保存成一条扩展数据行。将数据表中的数据记录与配置元数据表中的配置记录关联,构成扩展数据记录。可以提供无限数量的自定义扩展字段。 但是其增加数据操作的复杂性,查询时也要多次访问数据库才能得到完整的业务数据。

2.功能可配置性

    原子功能划分

功能分解遵循的原则:

每个功能都是有价值的

每个功能都是不可再细分的

功能间不可重叠

功能间不可依赖循环

整个系统功能是完整的

并不是所有的原子功能都可以单独使用的。有些功能是需要依赖其他功能才能使用,功能之间是存在一定依赖关系的。例如,用户没有购买“产品管理”模块,那么他就不能在“客户管理”模块使用“相关产品”这一功能。

 

    功能包设计

当系统功能被划分为许多原子功能后,直接配置原子功能给每个租户是比较复杂的。需要根据用户类型和使用的场景,对原子功能进行打包,然后为每个用户配置其合适的功能包。功能包的设计要遵循高内聚、低耦合的原则,尽量将相关的和相互依赖的原子功能设计在一个功能包中。同时应该减少功能包和功能包之间的依赖,使得各个功能包尽可能独立的进行操作使用。

 

    销售包的设计

    通过功能包的设计,虽然可以将系统功能组合成几个相对比较独立的部分,但是这些功能包仍然不可以完全独立使用,也就不能够单独销售。为了让用户购买了系统以后可以充分使用其同能,需要按照不同的商业意图构造合适用户的销售包。例如,按照客户使用功能的多少,可以把系统划分为最小版、标准版、完整版。按照客户所属的行业类型,可以划分为服务行业版和制造行业版。

3.界面可配置性

系统菜单可配置性

同样的菜单对不同的租户来说,可能有不完全一样的名字。例如,CRM中的客户管理,在医院使用时,就得改成病人管理,客户服务人员就 得改成医生,客户服务记录就是就诊记录等。另外菜单的层次结构和分布,不同的租户可能也会有不同的要求。在设计上需要考虑以下几个问题:

一个用户一套菜单

一个菜单可以关联一个子功能

组织成树型结构,构成上下级菜单结构

同级菜单之间还存在显示顺序的问题

 

    界面元素可配置性

    各功能界面上的内容也是供用户和系统交互的界面元素。不同的租户可能有各种不同的需求,无论对页面元素的个数、位置、顺序,还是元素的含义,租户都会有一些个性化的需求。 对于在设计时设定的界面元素,一般情况下是不允许删除的,但有时候还是允许租户将一些无关紧要的字段隐藏。另外,同一个界面上同一个字段代表的含义可能是不一样的。例如,“客户新建”界面上有一个字段叫“客户姓名”,可有的租户就喜欢把它叫做“顾客姓名”或者“代理商姓名”。

4.流程可配置性

5.配置元数据管理

6.可配置系统运行

这篇关于多租户(Multi-Tenant)应用的可配置性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315131

相关文章

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都