2012-07-30 60 views
2

我们目前正在开发将在Windows Azure平台上托管的SAAS应用程序代码名称FinAcuity,主数据库将为SQL Azure。Windows Azure/SQL Azure实体框架中的动态数据库/架构

下面是我们产品的一些技术参数:

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

这里我们的业务案例:

  • 我们的产品是一个SAAS产品,而且它将包含财务Da我们将为每个客户端提供单独的数据库以实现更高级别的多租户,数据隔离&安全。
  • 现在客户可以在其账户下创建多个公司,这些公司将由Schemas根据特定的客户数据库分隔。

注:表格结构对于每个模式都是相同的。

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

方案1:

  • 要提供在客户端注册新的数据库,我们要运行存储过程,将创建数据库的基本结构。
  • 我们怀疑:在SQL Azure上这样做的正确方法还是有其他方法吗?

方案2:

  • 对于下客户数据库访问多个模式,我们已经动态生成各个模式SSDL文件和用于该文件进行连接。
  • 我们怀疑:有没有其他方式来做到这一点,比如对多个连接使用相同的SSDL文件实例并传递元数据进行连接?

方案3:

  • 随着我们的应用程序支持即席查询和Excel文件的动态创建表,我们将提供将在后台运行存储过程,并创建向导该表从Excel文件动态从头文件选择向导在特定架构下的客户端数据库。
  • 我们的怀疑:如果有的话,建议我们更好的方法吗?

方案4:

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

需要针对上面列出的每种情况的最佳解决方案提供建议。

预先感谢您。

最好的问候 - 萨赫勒

+0

你要分这个分离约EF和SQL Azure的问题。顺便说一句。方案4超出了EF的范围 - 您将不得不直接使用SQL /存储过程来查询动态表而不使用EF。 – 2012-07-30 09:28:48

回答

1

我认为这是一个有点吃不消1点单一的问题。

我个人认为你从错误的角度来看它。你为什么选择实体框架和SQL Azure?你真的认为这些解决你问题的最好的技术吗?

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

您可以从查看NoSQL(无模式,键值存储)解决方案开始,可能在Windows Azure中。还有,将让你对开始的白皮书:NoSQL and the Windows Azure platform -- Investigation of an Unlikely Combination

的Windows Azure表存储是一个key-value存储,可以解决您的一些问题:

  • 客户隔离/多模式:WAZ表存储支持分区,您可以将每个客户的数据分区,而不是将所有数据放在一起。
  • 配置:无需提供任何配置。获取一个存储帐户,你就可以开始了。然后,您可以简单地将一些代码写入该客户的特定分区中。
  • 成本(在这个问题没有提及):表存储比SQL Azure的
  • 便宜得多...