智能一代云平台(二十二):多租户方案比较Hibernate、EclipseLink、Mybatis+Mycat

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【前言】

    我们做的高校云平台中需要用多租户这种技术,目录了解到的有三种技术可以实现:符合JPA规范的Hibernate和EclipseLink以及Mybatis+Mycat;我们的上一版本的系统用的是EclipseLink实现的,这版需要重新对比一下,选定一个,于是花了些时间来做了些验证

【三种实现方式】

     一、什么是多租户

         1、多租户的实现根据在数据库中存储的形式区分,分为三种方式:DATABASE、SCHEMA、DISCRIMINATOR;

           (1)DATABASE:一个租户一个单独的数据源,物理上不同的数据库;隔离性最好,数据恢复等也最方便,需要的资源比较多,一个租户分配一个机器;

           (2)SCHEMA:多个租户共用一个数据源,每个租户有不同的数据库;在两者之间;

           (3)DISCRIMINATOR:多个租户在同一个数据源中的同一个库中用不同的字段区分;隔离性差,影响性能;但是节省资源;

         2、关于多租户我们权衡后选用的是SCHEMA这种方式,我画了张图来描述这个概念:

 

     二、符合JPA规范

          1、符合JPA规范常用实现

             Hibernate、EclipseLink、OpenJPA、TopLink

         2、为何将Hibernate和EclipseLink做为备选方案

            (1)整体性能上来说Hibernate和EclipseLink更胜一筹(参考:JPA 实现比较:Hibernate、Toplink Essentials、OpenJPA、Eclipselink  JPA实现比较:Hibernate、OpenJPA、Eclipselink
            (2)对多租户实现支持来说,两者都有比较成熟的实现方式
             (3)Hibernate和EclipseLink团队学习成本相对来说低

         3、Hibernate和EclipseLink对比
            (1)Hibernate
               优点:国内用的人多遇到问题问题解决成本低;性能较高
               缺点:同样情况下相比与EclipseLink消耗更多资源
            (2)EclipseLink
               优点:更符合JPA规范,占用资源(和Hibernate在同样情况下CPU和内存资源消耗小)

               缺点:性能上略低于Hibernate,参考资料较少

    三、JPA规范和Mybatis+MyCat实现方案对比

         1、JPA规范
             (1)优点:将来换数据库类型(比如:从MySQL换到Oracle等)代码改动小;可以表达继承聚合等关系;
             (2)缺点:性能较低;学习成本高
          2、Mybatis+MyCat
             (1)优点:性能高;上手容易;更加灵活
             (2)缺点:将来换数据库类型(比如:从MySQL换到Oracle等)代码改动小
          3、参考资料
              ORM & MyBatis VS Hibernate

【总结】

    1、权衡利弊看得失;

    2、我们的项目需要好几个系统一块儿来完成,不同的系统有不同的特点,比如有的联合查询比较多,这时候Mybatis的优势更大等,扬长避短在不同的系统或模块中会采用不同的技术;

    3、多对比不同的技术,了解每个技术实现的原理十分有利于我们的成长。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当年的春天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值