我想知道是否可以将这两个操作和2个独立的数据库隔离开来,使报告可以在一个数据库上运行,而所有交易都可以在另一个数据库上进行。这将提高OLTP SQL数据库的性能。
我已经考虑了一些选项,如镜像、日志传送、复制、快照、群集等,但希望讨论实现期望结果的最佳策略。
请建议最佳解决方案以实施此策略,或者您可能有其他想法/建议。
每小时编译的信息用于插入后端存储库,并方便地使用公共性+区域的复合键构建事件层次结构。
好的,这真的很极端。在某些领域,交易如此频繁,我们必须使用FIFO数据库。我们引入了第四层数据库。为了获得最佳的交易响应,我们必须保持数据库大小低于1GB。存在一个事务管道处理程序,将旧的事务清空到第四层数据库中。我发现创建一组新数据库更容易(并且响应更快),以便每当其大小达到1GB时,就会将其移出并立即从池中替换为新数据库 - 这样留给执行每小时编译的机器加入各个数据库。因此,我们依赖于现有的元数据数据库来存储带有一些元数据表的公共性-键分配器表。
回想起来,人们可能认为公共性-键分配器表和元数据表可以放置在中间层桥接数据库中,但是由于数据库管理过程是自动化的和标准化的,所以创建一个新过程比修改管理中间层桥接数据库的过程更简单。这些管理例程在全球范围内使用,因此您不能轻易更改它们,否则会对公司的财务表现或冒犯维护它们的各个数据层架构师造成混乱。
经理们需要大量组织技能才能将所有这些内容整合在一起。因此,事务数据设计不仅仅是技术技能,而是涉及到计划过程的技能,其中包括许多人之间的头脑风暴,直到达到正确的结果。
您所要求的内容是完全标准的 - 在高负载场景下,OLAP 和 OLTP 不混合使用。
您正在使用 SQL Server。请查看 SSAS(SQL Server 分析处理)以构建立方体(与 SQL 不同的方法),然后可以根据此报告。
如果您不想这样做,那么镜像是下一个最佳解决方案 - 您可以将镜像放置在只读模式下以供报告使用,并且如果主服务器出现故障,则可以激活备份;这总是很好的。
集群是无关紧要的 - 它将允许您将数据库移动到另一个节点,但它根本不解决性能问题。日志文件传送、复制 - 都不错,不过我会选择镜像,只读副本用于报告,将数据加载到 SSAS 中。
我们有一个读写集群,使用事务复制技术复制到“只读”服务器(不是物理上的只读,Web应用程序只在它们上执行读取操作)。我们对报告也是同样的处理方式,这种方式扩展得非常好。
我们有多个站点,32个以上的服务器和几个报告服务器,这种配置具有非常高的插入、更新和读取量。
我们主要使用报告服务进行内部报告。报告不会影响我们的核心业务,我想这是您最关心的问题。