如何从不同客户中隔离SQL数据?

时间:2013-03-15 11:21:34

标签: sql sql-server wcf azure multi-tenant

我目前正在为使用WCF的App开发服务。我想在windows-azure上托管这些数据,它应该托管来自不同用户的数据。我正在寻找合适的数据库设计。在我看来,只有两种不同的可能性:

  • 为每位客户创建一个新数据库
  • 将customer-id存储到每个表(或每个表通过实体连接时的主表)

第一种方法具有非常好的速度和隔离,但它在windows azure上非常广泛(或者我是否理解azure pricing错误的某些内容?)。另外,我不知道如何以这种方式配置WCF-服务,它总是使用另一个数据库。

第二种方法是速度慢,隔离性差。但它易于实施且更便宜。

现在我的问题: 有没有其他方法可以获得高隔离度数据,还可以使用azure轻松集成到WCF服务中? 我应该使用什么样的设计?为什么?

1 个答案:

答案 0 :(得分:4)

您还有两个选择:在数据库中构建多个模式容器(请参阅我的blog post有关此技术),或者甚至更好地使用SQL数据库联合(您可以使用我的名为{{3}的开源项目访问联合会)。我提供的链接也可以让您访问其他选项。

最后,这是一个相当复杂的决策,涉及性能,安全性和可管理性的权衡。我通常建议使用联盟,即使它有Enzo SQL Shard,因为它是云的灵活多租户选项,可以选择自动过滤数据。查看开源项目 - 您将看到如何独立于物理存储实现数据客户的良好分离。