我一直在搜索博客和文章,但我没有找到太多支持这种情况。我一直在探索EF,并意识到我可以创建包含来自多个数据库的数据的视图,然后从这些视图构建EF对象模型。虽然它有效但我不确定性能,可伸缩性和可维护性这些常见问题。我在数据库之间实现连接的方式是在EF模型中创建关联。
有没有人有关于此类实施的任何信息?关于这个提出的解决方案的另一个解决方案或评论?
谢谢,
汤姆
答案 0 :(得分:0)
关于根据多个数据库中的数据在一个数据库中创建所有视图,与在同一数据库中拥有所有内容相比,我没有看到任何特定的性能差异。
您最大的直接影响将是安全性。假设您不允许链接,则用户必须拥有跨数据库视图所在级别的基础跨数据库对象的权限(即,如果顶级视图引用表,则需要具有对你使用的列适当的SELECT,如果它引用一个视图,它们在视图上需要相同的 - 但也许在下面的任何东西上 - 所以它们必须被允许作为用户在该数据库中担任某个角色并拥有权限
在结构上,多个数据库带来了某些挑战和限制,因此对于可维护性,是的,这可能是一个因素 - 别名可能是一个选项。
显然,对于SQL Server的可扩展性,假设您没有扩展(这是典型的SQL Server路由),您将面临分片的困难,因为现在每个数据库实际上都是两个数据库或其他任何数据库。或者多个数据库通过链接服务器加入一个中央数据库。除非您具有特别轻的受控访问,否则这不能很好地扩展。或者,可以选择在每个实例中连接到复制数据库的多个数据库。这完全取决于您的域名和数据问题;有很多可能性。
因此,在预期需要扩展时,整合可能是一种选择,并且在数据库中使用单独的模式可能是一种选择。您可以立即从视图开始,然后当数据移动到单个数据库中时,您的视图将不再跨数据库。
此外,您无法保证基于其他数据库中的对象对对象进行SCHEMABINDING。