论坛首页 Java企业应用论坛

多个客户共享同一个数据库的设计办法

浏览 14665 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-25  
Mirima 写道
简单做法,按用户平切schema,共用数据放默认的共用schema




好贴,引出好答案.我来做资料补充.

http://blog.csdn.net/yanjiangbo/article/details/1782576
0 请登录后投票
   发表时间:2011-08-25  
参照下saas模式下的多租户
0 请登录后投票
   发表时间:2011-08-25  
SaaS实现方式一般有三种:
1.每个租户都有一套应用和一个数据库,这种成本是最高的,管理很简单,隔离性非常好。
2.多个租户使用同一套应用,不同的数据库,这种成本比第一种低很多,像Oracle可以采用多schema的方式,管理和维护相对也简单,但是需要保证一套应用满足每个商户进行数据模型的定制,再就是一套应用多个数据库连接池。这个对技术上要求比较高。
3.多个租户使用同一套应用和一个数据库,这种成本是最低的,但是隔离性和扩展性较差,技术上实现也比较简单。
0 请登录后投票
   发表时间:2011-08-25  
zhuzhsh 写道
SaaS实现方式一般有三种:
1.每个租户都有一套应用和一个数据库,这种成本是最高的,管理很简单,隔离性非常好。
2.多个租户使用同一套应用,不同的数据库,这种成本比第一种低很多,像Oracle可以采用多schema的方式,管理和维护相对也简单,但是需要保证一套应用满足每个商户进行数据模型的定制,再就是一套应用多个数据库连接池。这个对技术上要求比较高。
3.多个租户使用同一套应用和一个数据库,这种成本是最低的,但是隔离性和扩展性较差,技术上实现也比较简单。
第一种办法成本真是高.公司还希望客户越多越好.比方说达到1W个,那简直不就是没办法管理了?
应该是用第三种方案,不过将来维护上可真是费劲啊...
0 请登录后投票
   发表时间:2011-08-25  
hngmduyi 写道
zhuzhsh 写道
SaaS实现方式一般有三种:
1.每个租户都有一套应用和一个数据库,这种成本是最高的,管理很简单,隔离性非常好。
2.多个租户使用同一套应用,不同的数据库,这种成本比第一种低很多,像Oracle可以采用多schema的方式,管理和维护相对也简单,但是需要保证一套应用满足每个商户进行数据模型的定制,再就是一套应用多个数据库连接池。这个对技术上要求比较高。
3.多个租户使用同一套应用和一个数据库,这种成本是最低的,但是隔离性和扩展性较差,技术上实现也比较简单。
第一种办法成本真是高.公司还希望客户越多越好.比方说达到1W个,那简直不就是没办法管理了?
应该是用第三种方案,不过将来维护上可真是费劲啊...

现在一般的都是采用第二种方案,我们现在做的也是采用第二种方案,技术难度上大些。
0 请登录后投票
   发表时间:2011-08-25  
顶顶更健康,同疑问,求答案
0 请登录后投票
   发表时间:2011-08-25  
yaoming159 写道
顶顶更健康,同疑问,求答案

核心的问题就是租户自定义模型(像用户信息,有的需要自己添加几个字段),如果没有定义的内容,整体的管理都是很简单的。
0 请登录后投票
   发表时间:2011-08-25  
zhuzhsh 写道
yaoming159 写道
顶顶更健康,同疑问,求答案

核心的问题就是租户自定义模型(像用户信息,有的需要自己添加几个字段),如果没有定义的内容,整体的管理都是很简单的。

我也来抛个砖,数据库表的设计使用纵横结合,允许一些字段的冗余。
单单使用纵向表也是最简单的,其实就是个联合主键的Map。
纵向表扩展性好,但是查询功能较弱。
所以使用公用字段作为横向表,自定义的为纵向表。
0 请登录后投票
   发表时间:2011-08-25  
结合楼主要求,只需加数据权限(用一个字段标示这条记录的归属ID)就可以解决。
0 请登录后投票
   发表时间:2011-08-25  
分库分表,按用户分区,流水里面按用户分区来划分, master-slaves读写分离。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics