求可伸缩易维护的数据库设计方案

coudoufu 2012-07-04 11:09:53
我们目前正在做一个教育系统,采用1+N形式,1是我们的系统管理平台,N是学校应用系统。我们在管理平台中为每个学校在应用系统中分配管理员账号,学校通过管理员账号建立学校其它账号使用应用系统。每个学校都只操作自己相关的数据,所有学校的数据需要和管理平台的数据做双向交互。目前有2个方案来设计数据库:
1、采用2个数据库,一个保存管理平台数据,一个保存应用平台数据
2、采用1+N个数据库,一个保存管理平台数据,并为每个学校建立1个数据库来保存他们的应用数据。

采用第一个方案的时候管理平台和应用平台的数据交互会简单很多,但是当学校数量不断增大的时候,数据库可能会面临严重的性能问题(如果将多个学校的同类数据保存在一个表),不知道是否有相关技术可以按数据库账号隔离表?比如学校A账号下有User表,学校B账号下也有User,他们的这2个User表都只保存自己的数据,但是这2个表在同一个数据库?

采用第二个方案数据交互会变得复杂很多,数据库太多维护起来也繁琐,1个管理平台需要和N个学校应用系统交互数据,但是可以支撑学校数量的无限扩充。

大家有什么好建议?既要性能好又要考虑维护性问题。

另外,我们打算在阿里云上面来部署应用,这个大家有何建议?
...全文
145 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
coudoufu 2012-07-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我也想知道

貌似一个很值钱的方案,估计真正做过的人没有这么无私的
[/Quote]规模这个不好说,N会不断增大,虽然目前很小。
孤独加百列 2012-07-04
  • 打赏
  • 举报
回复
LZ参考下MongoDB的解决方案吧
昵称被占用了 2012-07-04
  • 打赏
  • 举报
回复
看规模吧

动态必然带来复杂性,也就带来开发难度,考虑是否值得
筱筱澄 2012-07-04
  • 打赏
  • 举报
回复
我也想知道

貌似一个很值钱的方案,估计真正做过的人没有这么无私的
SQL777 2012-07-04
  • 打赏
  • 举报
回复
按学校分区表。
coudoufu 2012-07-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

建议集中设计,以学校标识区别
既然都在一台服务器上,分为多个DB去区分是纯粹多此一举。。毕竟有很多基础数据是共享的,甚至参照
数据量大?会大到什么程序,是指几百G还是数百T?
良好设计是关键
[/Quote]目前只有2,3个学校数据量是不大,一个表里的数据最多也就几十万把,但是以后学校越来越多就会成倍增长了。
Q315054403 2012-07-04
  • 打赏
  • 举报
回复
建议集中设计,以学校标识区别
既然都在一台服务器上,分为多个DB去区分是纯粹多此一举。。毕竟有很多基础数据是共享的,甚至参照
数据量大?会大到什么程序,是指几百G还是数百T?
良好设计是关键
zbdzjx 2012-07-04
  • 打赏
  • 举报
回复
关键是看你的数据量有多大了。
前几天,某人的一个说法,写多组织的ERP,将组织代码放到表中,也就是所有的组织的数据都放在一个数据库中,相同的人事资料,各组织的也是放到一个表中。只是表多了一列:组织代码。通过这列来标识此记录是那个组织的。
coudoufu 2012-07-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

按学校分区表。
[/Quote]这个我觉得不现实,那样几乎所有的表都要用分区表。而且增加一学校的话还要增加一个分区。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧