使用多个数据库,共享资源和EF查找SaaS的最佳方法

时间:2012-02-26 13:03:27

标签: database entity-framework asp.net-mvc-4 multi-tenant saas

首先请原谅我的语法错误。

好的,这是我已经知道的:-), 我想使用EF和MVC 4,带有angularJs的UI,我需要每个用户\用户组的数据库, 我的应用程序增长可能来自5000多个用户,他们都有一个单独的共享资源 数据库,当用户搜索某些内容时,结果将来自共享资源 并从用户自己的数据库。 表现非常重要。

在我的研究中,我发现EF可以连接到不同的数据库但是在没有编写大量代码的情况下我找不到任何正确的方法。 场景:

  1. 新用户注册,系统为他建立一个新的数据库。
  2. 新用户登录后,系统将从其数据库和共享数据库返回数据。
  3. 新用户登录,但是,系统数据库升级,用户数据库也应该升级。
  4. 现在我知道没有简单的方法来实现我的所有目标, 但是,请你指点我最适合自己的东西吗?

    再次抱歉我的英语! 谢谢! : - )

1 个答案:

答案 0 :(得分:2)

恕我直言,我们已经在几个SaaS应用程序中工作,这些应用程序一直使用共享数据库[中央存储库],它将包含所有用户[租户]数据,并且每个用户组都有一个应用程序数据库[基于租户]。

这将在EF中轻松工作,并且不会有性能开销。您不应该使用跨数据库查询,而是专注于您在数据访问层中可能具有的EF代码的优化,然后您可以拥有单独的服务来处理合并来自共享和单独数据库的用户数据的任务

您可能应该分析应用程序,然后找到可能不经常更新的数据并缓存它们并使用像Appfabric这样的分布式缓存来呈现它们。

关于User db和集中式数据库的同步,在服务层中,您可以通过将这些调用包装在.Net Transaction范围内来完成此工作,然后保留原子性。

请在我的回复中张贴您的理解和任何进一步的说明。