我有一个已安排的应用程序并从另一个数据库表获取一些数据并转储到我的主应用程序数据库表中,此表中的记录数每天增加,我认为它将每天增长,因为它是事务事件数据发生这种情况。这个数据用于主应用程序的处理,它接收每个记录并进行所需的分析,并将每个记录标记为已处理。
我可以提供什么样的解决方案,以便将来可以保持数据库的大小?
在这种情况下你会怎么做?
根据我对一些企业应用程序的观察,我们提供了一个用户可以选择的选项 将记录“早于60天”等存档到文本文件中。我可以提供将处理过的记录存档到文本文件并从数据库中删除记录的选项,如果需要可以在以后导入文本文件吗?这是一个解决方案吗?
答案 0 :(得分:1)
贵公司有哪些过去的数据报告需求?将存档数据删除到文本文件中是很好的,假设您不需要在将来报告该数据。但是,将它放在文本文件中意味着您必须有一个手动过程,以便在需要时将其按需导入数据库。
更好的选择是将归档数据移动到不用于事务处理(OLTP)的数据仓库数据库中,而是用作分析处理数据库(OLAP)的基础。当有时间报告此存档数据时,它已准备就绪。如果您对如何构建此归档数据库中的数据非常谨慎,那么将所有数据聚合到OLAP多维数据集中应该非常容易,这样可以更快,更灵活地报告该数据。
但是,再次......取决于您是否报告数据,以及报告可能会在多长时间内报告。
答案 1 :(得分:1)
如果您需要偶尔访问较旧的数据,那么构建一个将其存档为文本然后从文本加载的过程可能不是一个很好的解决方案。硬盘很便宜。
您可以汇总旧数据。例如,如果交易数据现在处于毫秒级,但是当您报告旧数据时,您会在当天获得该数据,然后考虑将数据汇总到“每日”作为您的归档过程。您可以将每天数十万行折叠成几行。
还要考虑一个好的分区方案,您可以将一组磁盘上的最新事务和归档数据保存到其他磁盘,希望在这个过程中您可以轻松地添加新磁盘并为这些磁盘创建表。
答案 2 :(得分:1)
这取决于将对过去的数据进行多少分析,但有一种方法可以将所有内容保存在数据库中而不会使性能成为问题。
想到的解决方案是对有问题的表进行分区。我的公司有一个数据库表,其中包含按月分区的数据,每个数据包含大约2000万行。分区使得使用这些数据比存储在单个表中更加实用。现在唯一真正的限制是磁盘空间,考虑到目前这种情况有多便宜,这是一个非问题。
但是,我知道有些数据库不支持分区。如果是这种情况,我认为将数据存储在分隔文件中将是一个合适的解决方案。答案 3 :(得分:0)
如果不是,则将其丢弃到TXT。它发生的时间当然必须是可配置的。