【问题标题】:How to isolate SQL Data from different customers?如何隔离不同客户的 SQL 数据?
【发布时间】:2013-03-15 11:21:33
【问题描述】:

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

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

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

第二种方法速度慢,隔离效果差。但它易于实施且成本更低。

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

【问题讨论】:

  • This SO answer 总结了问题和大多数选项。包括对有关多租户架构的 MS 文章的引用,但并不特定于 azure。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多