2

我们目前正在开发代号为 FinAcuity 的 SAAS 应用程序,它将托管在 Windows Azure 平台上,主数据库将是 SQL Azure。

以下是我们产品的一些技术规格:

  • 开发环境 - 带有 MVC 3 (Razor) 的 Asp.Net 4.0,实体框架
  • 数据库 - SQL Azure

这是我们的商业案例:

  • 我们的产品是 SAAS 产品,由于它包含客户的财务数据,我们将为每个客户提供单独的数据库,以实现更高级别的多租户、数据隔离和安全性。
  • 现在客户可以在他们的帐户下创建多个公司,这些公司将由特定客户数据库下的架构分开。

注意:每个模式的表结构都是相同的。

以下是一些场景,可以让您更深入地了解我们的应用程序流程。

场景一:

  • 为了在客户端注册时配置新数据库,我们将运行存储过程,该过程将创建具有基本结构的数据库。
  • 我们的疑问:这是在 SQL Azure 上执行此操作的正确方法还是有其他方法?

场景二:

  • 为了访问客户端数据库下的多个模式,我们为单个模式动态生成 SSDL 文件并使用该文件进行连接。
  • 我们的疑问:还有其他方法吗,例如使用相同的 SSDL 文件实例进行多个连接并传递元数据进行连接?

场景 3:

  • 由于我们的应用程序支持从 Excel 文件进行临时查询和动态表创建,我们将提供将在后端运行存储过程的向导,并在客户端数据库的特定模式下从向导中选择标头后从 Excel 文件动态创建该表.
  • 我们的疑问:如果有的话,给我们建议一个更好的方法吗?

场景四:

  • 现在,将新表添加到模式中,我们必须更新 EDMX 文件以从新创建的表中获取数据。为此,我们将运行将从新创建的表中获取数据的存储过程。
  • 我们的疑问:有没有办法更新 EDMX 文件运行时和获取数据?

需要针对上面列出的每个场景的最佳解决方案的建议。

先感谢您。

最好的问候 - 萨希尔

4

1 回答 1

1

我认为这对于一个单一的问题来说有点太多了。

我个人认为你从错误的角度看待它。为什么选择 Entity Framework 和 SQL Azure?您真的认为这些是解决您的问题的最佳技术吗?

我建议您退后一步,研究一下可以使用哪些其他技术。因为你在这里问的看起来像是一个无模式的解决方案,而 SQL Azure / SQL Server 并不是为那个恕我直言而构建的。

您可以从查看可能在 Windows Azure 中的 NoSQL(无模式、键值存储)解决方案开始。有一份白皮书可以帮助您入门:NoSQL 和 Windows Azure 平台——对不太可能的组合的调查

Windows Azure 表存储是一个键值存储,可以解决您的一些问题:

  • 客户隔离/多种模式:WAZ 表存储支持分区,您可以按客户对数据进行分区,而不是将所有数据放在一起。
  • 供应:无需供应任何东西。获取一个存储帐户,您就可以开始使用了。然后,您可以简单地编写一些代码,为该客户在特定分区中写入数据。
  • 成本(问题中未提及):表存储比 SQL Azure 便宜得多
  • ...
于 2012-07-30T09:46:57.140 回答