归档运营数据的最佳方法是什么?

时间:2013-12-22 01:51:05

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

您不必考虑自己的解决方案来保持数据库同步。 SQL Server已经构建了实现此目的的方法。

Database Mirroring

Replication

Always On Availability Groups

如果您正在使用SQL Server 2012企业版,那么我会查看Always On Availability Groups(如果不是那么(Transactional)复制)。这两种解决方案都可以保留数据库的第二个只读和近实时副本。

答案 1 :(得分:0)

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

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

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

希望我帮助过。