MongoDB⽂档数据库SaaS多租户实现⽅案
⼀、前⾔
上⼀章节已经实现了mysql的多租户切换数据源,本章将继续学习MongoDB的多数据源切换。
MongoDB可能有些朋友⽤的不多,这⾥做⼀个简单的介绍。MongoDB是⼀个基于分布式⽂件存储的⽂档型数据库,由C++语⾔编写。旨在为WEB应⽤提供可扩展的⾼性能数据存储解决⽅案。
mongodb和mysql结合
MongoDB是⼀个介于关系数据库和⾮关系数据库之间的产品,是⾮关系数据库当中功能最丰富,最像关系数据库的。它⽀持的数据结构⾮常松散,是类似json的bson格式,因此可以存储⽐较复杂的数据类型。
Mongo最⼤的特点是它⽀持的查询语⾔⾮常强⼤,其语法有点类似于⾯向对象的查询语⾔,⼏乎可以实现类似关系数据库单表查询的绝⼤部分功能,⽽且还⽀持对数据建⽴索引。⽐较常见的⽤途是存储像微博中的评论数据,也可以作为⼩⽂件的⽂件数据库。
⼆、实现⽅案
因为Spring的AbstractRoutingDataSource只能⽤来实现MySQL多数据源的切换,⽆法⽤于MongoDB的多数据源切换,但是我们可以参考AbstractRoutingDataSource的实现思路。
1、⾸先我们需要⼀个Map来保存各租户与数据源的映射关系
2、然后需要⼀个ThreadLocal来保存当前线程的MongoDB数据源,获取数据源的时候取当前线程的数据源,设置数据源的时候设置到当前线程中。
3、因为我们使⽤MongoDB的时候,⼀般是使⽤MongoTemplate来对MongoDB数据库进⾏操作,所以我们在注⼊MongoTemplate这个bean的时候,不能使⽤默认的MongoTemplate,要使⽤我们⾃定义的MultiMongoTemplate,这个MultiMongoTemplate继承⾃MongoTempl

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。