【问题标题】:What is the best approach to archiving operational data?归档运营数据的最佳方法是什么?
【发布时间】:2013-12-22 01:51:04
【问题描述】:

我有一个 sql server 2012 数据库,它是 asp.net MVC 应用程序的后端,用于存储客户和订单信息。此数据库在高负载和高使用率下访问。

我知道需要能够从数据库中生成临时报告,以访问与 MVC 应用程序所使用的数据相同的数据。我担心这会对数据库服务器和数据库本身产生什么影响,围绕锁定等。因此,它们是数据之间的区别,对于应用程序来说,它是可操作的,但对于报告来说,它更面向数据仓库。

因此,我正在考虑避免这种情况的最佳方法。

我正在考虑在不同的服务器上创建另一个数据库,并在白天定期使用 sql 作业将数据归档到它。唯一担心的是,它需要维护和依赖关系,以确保在源数据库更改时对目标数据库进行任何必要的更改。

在这种情况下,我还有哪些其他选择?可以就此提供什么建议?最好的方法是什么?

【问题讨论】:

    标签: sql asp.net sql-server asp.net-mvc database


    【解决方案1】:

    您不必想出自己的解决方案来保持数据库同步。 SQL Server 已经构建了实现这一目标的方法。

    Database Mirroring

    Replication

    Always On Availability Groups

    如果您使用的是 SQL Server 2012 企业版,那么我会研究 Always On 可用性组,如果不是,那么(事务)复制。这两种解决方案都可以保留数据库的第二个只读且接近实时的副本。

    【讨论】:

      【解决方案2】:

      作为 Steve McConell suggests,您不应该对性能做出任何假设。您应该在做出任何决定之前对其进行衡量。在不知道实际性能开销的情况下做出设计选择不是明智的选择。所以我建议在考虑使用复杂架构之前测量或模拟性能开销,因为你不知道这是否值得。

      无论如何,我认为您的方法是正确的。我将创建一个 Windows 服务,它会定期从我的数据库中检索我需要的数据并将它们存储在我的仓库(新数据库)中。我认为您永远不会找到一种工具来保持两种模式之间的一致性,除非您希望一个模式是另一个模式的精确副本。

      我不知道您的确切需求,也许我的建议有点矫枉过正,但我​​鼓励您考虑在您的报告数据将来自的数据仓库中使用OLAP 方法。我必须警告您,这些系统面向真正的大数据和高级报告需求,但也许您可以从中汲取一些想法。由于您熟悉 Microsoft 生态系统,我建议您使用 Business Intelligence Studio。您可以在那里使用普通数据库作为数据源构建 OLAP 多维数据集并集成高级报告。

      希望我能帮上忙。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-21
        • 1970-01-01
        • 2010-09-05
        相关资源
        最近更新 更多