我正在开发一个多租户应用程序.我选择了“共享数据库/单独模式”方法.
我的想法是拥有一个默认模式(dbo),并在部署此模式时,对租户的模式(tenantA,tenantB,tenantC)进行更新;换句话说,制作同步模式.
如何使用默认架构同步租户的架构?
我正在使用sql Server 2008.
解决方法
您需要的第一件事是用于存储架构的版本信息的表或其他机制.如果没有别的,那么您可以将应用程序和架构绑定在一起.没有什么比一个版本的应用程序对错误的模式 – 失败,破坏数据等更痛苦.
应用程序应拒绝或关闭,如果它不是正确的版本 – 当它不正确时你可能会得到一些反弹,但保护你免受数据库破坏有价值数据的真正糟糕的一天.
您需要一种方法来跟踪更改,例如Subversion或其他 – 从sql可以导出初始模式.从这里开始,您将需要一种机制来使用sql比较等漂亮工具跟踪更改,然后跟踪架构更改并匹配目标数据库中版本号的更新.
我们将每个delta保存在我们构建的升级实用程序下面的单独文件夹中.此实用程序登录到服务器,读取版本信息,然后应用数据库中下一个版本的转换脚本,直到它的子文件夹中找不到更多升级脚本.这使我们能够升级数据库,无论它与当前版本的年龄有多大.如果租户有独特的数据转换,这些将变得棘手.
当然,您应该始终备份写入外部文件的数据库,最好使用人类可识别的版本号,这样您就可以找到它并在脚本出现故障时恢复它.最终它只会计划如何恢复和恢复.
我看到新VS 2010中有某种架构升级工具,但我还没有使用它.这可能对你有用.