【问题标题】:Publish SQL Server data to clients from saas website with multi-tenant database?使用多租户数据库从 saas 网站向客户端发布 SQL Server 数据?
【发布时间】:2012-11-14 22:38:53
【问题描述】:

我们维护一个位于多租户 SQL Server 数据库之上的软件即服务 (SaaS) Web 应用程序。系统中有大约 200 个表,其中最大的只有 100 多列,最后看看数据库的大小约为 10 GB。我们有大约 25 家客户公司使用该应用程序,每个都输入他们的数据并运行报告。

单实例架构对我们来说非常有效 - 我们能够设计和开发每月发布给所有客户的新功能。每个客户端体验都可以通过使用功能切换、数据字典定制、CSS 皮肤等进行配置。

我们的典型客户是一家拥有多个分支机构、一个总部,有时还拥有自己的内部 IT 软件开发团队的公司。

我们现在面临的问题是,一些客户正在开展他们自己的内部项目,以基于目前存储在我们多租户数据库中的数据开发报告、数据仓库和仪表板。我们认为这些项目的数量和复杂程度可能会随着时间的推移而增加,我们希望有效地满足它。

目前,我们有一个“精简”解决方案,通过该解决方案,我们公开了一个安全的 XML Web 服务,客户端可以调用该 Web 服务来从表中获取其记录的完整下载。他们指定表,我们将其映射到一个专门构建的存储过程,该过程返回固定数量的列。目前,客户在一夜之间将大约 20 个表提取到他们管理的本地 SQL 数据库中。一些客户在其中几个表中有数万条记录。

这种“精简”方法有几个缺点: 1)每个客户端都需要开发和维护自己的数据拉取机制,处理所有的日志记录、错误处理等。 2)我们的数据库模式在不断扩展和变化。他们调用的存储过程具有固定数量的列,但有时当我们扩展现有列(例如,将 varchar(50) 转换为 varchar(100))时,它们的 pull 会失败,因为它突然超过了本地的列大小数据库。 3) 我们开始为每个客户及其特定的下载期望积累数百个不同的存储过程,这是管理上的麻烦。 4) 我们正在努力满足客户对更多数据的要求。我们提供一个“shell”模式(即我们的数据库副本,其中没有数据)并要求他们选择他们需要提取的表。他们总是说“所有这些”,这加剧了不断变化的架构问题,并且严重消耗了我们的资源。

很抱歉这个冗长的问题,但我正在寻找其他团队已经成功解决这个问题的方法。我们希望以他们最容易使用的方式安全地向他们公开所有数据,但又不会陷入不断协商数据交换和架构更改后清理的过程中。

什么对你有用?

谢谢,

迈克尔

【问题讨论】:

    标签: sql-server saas


    【解决方案1】:

    我曾在一家 SaaS 公司工作,几年前该公司也经历过类似的工作,而 Web 服务可能是这里最好的解决方案。顺便说一句,您的“缺点”之一实际上是一种好处。应鼓励客户进行自己的数据拉取,因为每个客户对时间和数据量的需求会有所不同。

    现在,您应该考虑构建一个 WSDL,而不是 LITE 解决方案,为每个表调用单独的 CRUD 和良好的过滤功能。此外,请确保每个表上的记录都有更改时间。这样,客户可以点击每个表并立即仅提取自上次提取以来已更新的记录。

    会不会很容易。没有机会,但如果您想要可扩展性,这是唯一的选择。

    祝你好运。

    【讨论】:

    • 感谢您的意见,这真的很有用。巧合的是,编写一个完整的 REST API 在我们的待办事项列表中,所以我们最终可能会同时解决这两个问题! :-) 与此同时,我们正在考虑编写我们自己的“数据提取器”,安装在他们的服务器上,但自己配置检索数据的频率和数量。从历史上看,他们倾向于在他们的版本中投入最少的资源,因此他们往往会经常遇到日志记录不佳、错误处理等问题,我们不希望这反映在我们的产品上。
    • 只是一个后续想法 - 您是如何解决记录时间戳仅代表插入和更新但不代表删除的问题?
    • 我们使用“已删除”标志而不是实际删除记录。
    • 嗨数据按摩师,经过多次讨论和权衡选择,我们决定按照您的建议继续我们目前的道路。这一决定最近得到了加强。我们目前正在引进另一位客户,他们的要求和工具与我们迄今为止处理的再次不同。从长远来看,开放和适应能力似乎更好。
    • 祝迈克尔好运。处理所有不同的客户时间表和要求绝对是一项挑战,所以是的,适应性还有很长的路要走。
    猜你喜欢
    • 2011-12-06
    • 2021-07-10
    • 2012-09-24
    • 2012-08-07
    • 2018-01-31
    • 2014-07-15
    • 2022-01-11
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多