求可伸缩易维护的数据库设计方案
我们目前正在做一个教育系统,采用1+N形式,1是我们的系统管理平台,N是学校应用系统。我们在管理平台中为每个学校在应用系统中分配管理员账号,学校通过管理员账号建立学校其它账号使用应用系统。每个学校都只操作自己相关的数据,所有学校的数据需要和管理平台的数据做双向交互。目前有2个方案来设计数据库:
1、采用2个数据库,一个保存管理平台数据,一个保存应用平台数据
2、采用1+N个数据库,一个保存管理平台数据,并为每个学校建立1个数据库来保存他们的应用数据。
采用第一个方案的时候管理平台和应用平台的数据交互会简单很多,但是当学校数量不断增大的时候,数据库可能会面临严重的性能问题(如果将多个学校的同类数据保存在一个表),不知道是否有相关技术可以按数据库账号隔离表?比如学校A账号下有User表,学校B账号下也有User,他们的这2个User表都只保存自己的数据,但是这2个表在同一个数据库?
采用第二个方案数据交互会变得复杂很多,数据库太多维护起来也繁琐,1个管理平台需要和N个学校应用系统交互数据,但是可以支撑学校数量的无限扩充。
大家有什么好建议?既要性能好又要考虑维护性问题。
另外,我们打算在阿里云上面来部署应用,这个大家有何建议?