同一数据库中的事务表和报告表

时间:2012-05-16 04:44:51

标签: database

我确实阅读了有关交易和报告数据库的帖子。 我们有单表,用于报告(历史)目的和交易 例如:带字段的订单
orderid,ordername,orderdesc,datereceived,dateupdated,confirmOrder

将此表拆分为neworder和orderhistrory是一个好主意 新的ordertable记录当天的交易(当天收到的订单每隔ms选择,插入和更新活动。后来我们将此表与订单历史合并

这是推荐的方法吗? 您认为这会最大限度地减少数据库的负载和处理时间吗?

2 个答案:

答案 0 :(得分:0)

PostgreSQL支持基本的表分区,它允许将逻辑上一个大表分成更小的物理块。 More info provided here

答案 1 :(得分:0)

回答你的第二个问题:没有。将数据从一个地方移动到另一个地方是一个额外的负担,如果你使用转换表进行报告,你将无法拥有。但在做出这个决定之前,还需要提出一些其他问题。

  1. 这些报告多久运行一次? 如果您每小时运行一次这些报告,则将它们保存在同一个表中可能是有意义的。但是,如果此报告需要一段时间才能运行,则您需要注意不要为其他客户端使用它作为事务表来占用资源。
  2. 这些报告必须是最新的? 如果报告的运行时间少于每天或每周,则报告中的最新数据可能并不重要。
  3. 这就是报告表的用武之地。我见过的方法通常涉及拥有“数据仓库”,无论是作为单个表还是整个数据库实现。该仓库按时间表填充来自事务表的数据,该数据随后触发生成报告。这似乎是您建议的方法,并且是完全有效的方法。最终,您需要回答的一个问题是何时您希望服务器处理负载。如果这可以在非高峰时段按计划完成,我会说去吧。如果需要在任何给定时间运行,那么您可能希望保持单表方法。

    当然,没有什么可以说你做不到两者。我见过一些系统,这些系统在事务表上运行了小型按需报告,计划了历史数据的存储,然后是针对该历史数据的长期运行报告。这真的只是你想要数据的实时性。