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

强烈推荐一个大神的人工智能的教程:http://www.captainbed.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、多对比不同的技术,了解每个技术实现的原理十分有利于我们的成长。

当年的春天 CSDN认证博客专家 分布式 Spring Redis
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页