`
ztian
  • 浏览: 3566 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

PaaS平台上多租户的数据拓展(自定义)

阅读更多
  SaaS系统风云一时,PaaS平台方兴未艾.各种标识为云计算的服务更是多于牛毛.在这篇文章中不会就云,PaaS,或SaaS做任何讨论,只想为多租户情况下的数据拓展设计一套解决方案.

   人们总是渴望自由,追求个性,SaaS尽管为大多数公司的通用应用提供了解决方式,但是这不足以吸引客户.因为客户除了需要很Basic的功能外.还需一些满足个性,符合实际情况的定制.比如.对于User. 除了常用的姓名\性别\年龄等,对于客户A,他可能希望里面还记录有"电话",而对于公司B,他可能还希望记录薪水等级等.这样的需求会层出不穷.我们可以有余下几种解决办法:

  • 1.为每个客户的需求定制化相应的Java代码,这显然不可取.应为每次的变动都会带来代码的修改,如果客户量大,这将为系统的稳定和优化带来无穷的隐患,同时也基本上是不可能完成的任务.
  • 2.为每张表设计时预留一定量的字段.然后需要拓展的时候,使用预留指端.这种方案能解决部分问题,但是如果真应用面对的真的是千差万别的客户,那预留多少字段合适呢?太少不能够用,太多,又必须考虑性能,维护的复杂性.等等.
  • 3.为每张基本表表建立拓展表,比如一百列的,通用类型种占个二三十列.然后写程序的时候总是附带上查询拓展表.这种情况下有两个比较明显的缺点,拓展的数量有限制,查询是浪费了许多性能.而且对于分库分表时,会很难进行.同时程序必须对拓展表有感知.


    我们在实际使用中,为了解决不可预知的拓展问题,同时方便在运行时动态拓展,并综合分析了以上几种解决方案后,我们决定自己实现数据访问层.定义了一套数据访问接口,支持Sql和实体的增删改查!取代Hibernate,支持分库分表,动态路由.映射对象.同时也是最关键的是代码在编写阶段根本不会感知拓展数据的存在,同时也从开发和运行过程中实现了拓展方案的变更.

   举一个实际的例子来说: 我们有一个User表,然后又个客户希望上面拓展一个mail的属性,那么他可以在运行时定义这个拓展,我们可能把这个属性放在ext表的ext1字段上,但是对于程序员来说,他在编码阶段可以根本不关心这些.最终的结果中却包含相关拓展信息.而在二次开发阶段他的Sql代码也只需要是Select username,mail from user!而不是
select u.username,e.mail from user u left join ext e on ...

这个好处不言而寓. 假如有一天我们觉得mail很通用,那好 ,我们直接alter user表,加上mail字段,然后移过来所有在拓展表中的数据即可.整过过程中,我们我用重启服务器,简单得就像你只是在访问普通的页面. 同时,这种屏蔽,也为我们的优化带来了可能,我们可以把同一张表的多个拓展字段在运营的过程中移到同一张表中!

当然,任何一个方案都不能完美的解决所有问题,必须结合其他解决方案配合使用! 但是数据层面的拓展已经得到了完美解决.展示层我们用了另外的解决方案.
分享到:
评论
2 楼 ztian 2011-08-24  
wanglei871103 写道
写得很好,这个问题也很普遍,但是是如何实现的数据访问层,能否详细说明呢?

我会在接下来的几篇文章中详细分析的.
1 楼 wanglei871103 2011-07-29  
写得很好,这个问题也很普遍,但是是如何实现的数据访问层,能否详细说明呢?

相关推荐

    SaaS、PaaS及多租户数据管理

    SaaS、PaaS及多租户数据管理,SaaS、PaaS及多租户数据管理

    剖析SalesForce的多租户架构(PAAS\SAAS\云计算)

    该平台基于多租户架构,通过提供丰富的开发工具和支持,帮助企业及第三方供应商构建强大、可靠且可扩展的在线应用。 **Force.com的关键功能**: 1. **强大的定制能力**:不仅支持界面的定制,还包括工作流、表单等...

    梓豪平台是一个docker 容器化管理平台 包括主机管理,手工制作镜像,镜像管理,ci/cd 构建和应用管理的paas平台

    主要功能(多租户管理、多主机管理、web shell功能、文件系统、应用管理、ci/cd 持续集成功能、docker 镜像管理、mysql web 操作控制、 数据备份功能 分为文件 和数据库备份 可以备份到 ftp oss 和mysql 数据库、...

    企业PaaS平台解决方案.docx

    弹性多租户是PaaS的一个重要特性,允许多个组织或项目共享同一基础设施,但彼此之间数据隔离,确保数据安全。 2. PaaS平台汇总 国内外的PaaS平台各有特色,国外如Google App Engine、Microsoft Azure App Service、...

    PAAS平台产品功能说明 (2).pdf

    平台采用兼容性最佳的技术内核,支持多租户、自动化运维和跨云部署,与VMware vSphere、vCloud、OpenStack等IaaS平台无缝对接。 1.1.2 基础服务 基础服务是PAAS平台对外提供计算和存储能力的关键。它包括弹性云主机...

    企业级PaaS平台规划建议.pptx

    PaaS平台解决了开发和运维都关注的问题,包括开发者关注的问题,如单/多租户、开发语言和开发环境、持续集成/交付、单点登录/身份联合、角色管理/目录服务等;IT管理员关注的问题,如公有/私有云环境、自动扩展、高...

    藏经阁-金融级别大数据平台的多租户隔离实践.pdf

    他从IaaS单租户大数据产品架构开始,逐步介绍了MaxCompute PaaS多租户架构、多租户隔离实践、逻辑隔离、物理上分散的集群、统一的数据资源视图、统一的权限管理模型等内容。 IaaS单租户大数据产品架构 IaaS单租户...

    中服PaaS云平台架构解析

    多租户模式是PaaS云平台的另一个重要特点,它允许一个平台上的单个实例为多个租户提供服务。在这种模式下,不同的租户可以共享同一平台资源,但是彼此之间是隔离的,这样既保证了安全性,又提高了资源的使用效率。 ...

    PAAS平台问题知识库

    ### PAAS平台问题知识库概览 #### 一、咨询类 **1.1 PaaS平台使用咨询** ...这些内容覆盖了PaaS平台的咨询、技术支持、故障解决及数据服务等多个方面,旨在帮助用户更好地理解和使用PaaS平台的各项功能和服务。

    云计算PaaS平台总体设计说明书.docx

    总结,云计算PaaS平台总体设计说明书旨在构建一个全面的开发和运行环境,通过集成多种服务和工具,为企业提供高效、安全、易用的云上开发体验。其设计考虑了开发、运行、管理等各个层面的需求,以适应不断变化的业务...

    基于Saas的云计算工作流中间件与大型企业管理云开发实战 及Paas平台下多系统生成

    【标题】"基于SaaS的云计算工作流中间件与大型企业管理云开发实战及PaaS平台下多系统生成" 本课程深入探讨了SaaS(Software as a Service)在云计算领域的应用,特别是如何利用SaaS构建大型企业的管理云系统。SaaS...

    企业级PAAS平台-PAAS平台说明.pdf

    PaaS平台通常支持多组织和多租户,以适应不同业务系统的需求。在公有云环境下,基于PaaS的应用可能更倾向于SaaS模式,而在私有云中则不一定。PaaS并非实现SaaS的必要条件,但可以简化SaaS应用的开发和部署。 此外,...

    剖析多租户-SaaS-PaaS.docx

    多租户架构在云计算领域中扮演着核心角色,尤其是对于Software as a Service (SaaS) 和 Platform as a Service (PaaS) 提供商而言。本文将深入剖析SaaS提供商Salesforce如何利用多租户模式实现其服务的高效运行和...

    如何基于K8S打造轻量级PaaS平台

    几个角度介绍一下PaaS平台,基于K8S与Docker构建轻量级平台叫做ECP,就是弹性计算平台。我们知道刚才马俊讲的CMP,更多是在IaaS这一层面的,IaaS这一层面很多工作在主机、存储、网络上。到PaaS这一层面,大家对PaaS的...

    企业PaaS通用能力平台解决方案.pptx

    ### 企业PaaS通用能力平台...综上所述,企业PaaS通用能力平台为企业提供了强大的技术支持和服务,不仅促进了业务的快速发展,还提升了企业的竞争力。随着技术的不断进步,未来PaaS平台将在更多领域展现出其独特价值。

    PaaS通用校园办公云平台的设计与实现

    强大的工作流中间件保证了系统流程的稳定运行,自定义的工作流中间件也能够根据paas平台的需要而进行调整,并且在课程中讲解了工作流反向同步平台组织机构的功能,工作流提供了RMI服务,从而实现了分布式的部署,...

    集团企业PaaS云平台建设方案.pptx

    2. 数据加密:保护云平台上的数据安全。 3. 防火墙和入侵检测:保护云平台免受恶意攻击和入侵。 PaaS云平台的部署和管理主要包括以下几个方面: 1. 云平台监控:实时监控云平台的运行状态和性能。 2. 资源分配:...

Global site tag (gtag.js) - Google Analytics