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

Jan*_*mes 3 sql sql-server wcf azure multi-tenant

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

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

第一种方法具有非常好的速度和隔离性,但它在 Windows azure 上非常广泛(或者我对azure 定价的理解有误吗?)。另外,我不知道如何以这种方式配置 WCF 服务,它总是使用另一个数据库。

第二种方法速度慢且隔离性差。但它很容易实施并且更便宜。

现在我的问题是:是否有其他方法可以实现数据的高度隔离并使用 azure 轻松集成到 WCF 服务中?我应该使用什么设计以及为什么?

Her*_*ero 5

您还有两个附加选项:在数据库中构建多个架构容器(请参阅我关于此技术的博客文章),或者更好地使用 SQL 数据库联合(您可以使用我的名为Enzo SQL Shard的开源项目来访问联合)。我提供的链接还可以让您访问其他选项。

最终,这是一个相当复杂的决定,涉及性能、安全性和可管理性的权衡。我通常推荐联合,即使它有自己的一组限制,因为它是云的灵活多租户选项,可以选择自动过滤数据。查看开源项目 - 您将看到如何独立于物理存储实现数据客户的良好分离。