2009-06-05 137 views
0

我有一个计划的应用程序,从另一个数据库表中获取一些数据并转储到我的主应用程序数据库表中,此表中的记录数量每天都在增加,并且我认为它会每天增长,因为它是交易事件数据这些数据用于由主应用程序进行处理,主应用程序将每个记录进行处理并进行所需的分析并将每个记录标记为已处理。管理庞大的交易记录?

我可以提供什么样的解决方案,以便将来可以保持数据库的大小?

在这种情况下你会怎么做?

从我对一些企业应用程序的观察中,可以看到一个选项,用户可以将 存档记录的“60天以前”等等归档到文本文件中。我可以提供一个选项来归档处理过的记录到一个文本文件并从数据库中删除记录,文本文件可以稍后导入,如果有必要?这是一个解决方案吗?

回答

1

如果您需要偶尔访问旧数据,那么构建一个将其存档为文本然后从文本加载回来的过程可能不是一个好的解决方案。硬盘很便宜。

您可以聚合较旧的数据。例如,如果交易数据现在处于毫秒级谷物,但是当您报告较早的数据时,您可以在当天获得,然后考虑将数据汇总为“每日”作为归档过程。您可能可以将数十万行记录到每天的几行中。

另外考虑一个很好的分区方案,您可以将最新事务保留在一组磁盘上,并将归档数据保留到其他磁盘上,希望在您可以轻松添加新磁盘并为这些磁盘创建表的过程中。

0

恕我直言,它取决于用户需要分析过去数据的可能性。如果可能,只需创建好的索引并将所有数据保存在主数据库中。

如果不是,则将其放入TXT。发生的时间必须是可配置的。

1

贵公司有什么样的过往数据报告需求?将存档数据丢弃到文本文件中是非常好的,假设您不需要将来能够报告该数据。但是,将其存储在文本文件中意味着您需要手动过程,以便在需要时将其按需导入到数据库中。

更好的选择是将档案数据移入不用于事务处理(OLTP)的数据仓库数据库,而是用作分析处理数据库(OLAP)的基础。当需要报告这一存档数据时,它就准备好了。如果您仔细考虑如何在此归档数据库中构建数据,应该很容易将所有数据聚合到一个OLAP Cube中,从而使数据的报告更快更灵活。

但同样......取决于您是否报告数据,以及报告可能走多远。

1

这取决于对过去的数据进行多少分析,但是有一种方法可以将所有数据保留在数据库中,而不会影响性能。

想到的解决方案是对有问题的表进行分区。我的公司有一个数据库表,按月分割数据,每个数据表包含大约2000万行。分区使得使用这些数据比存储在单个表中更加实用。现在唯一真正的约束是磁盘空间,这是一个非问题,因为现在它有多便宜。

但是,我知道有些数据库不支持分区。如果是这种情况,我想将数据存储在分隔文件中将是一个合适的解决方案。