我们的应用程序占用大量数据,其中大部分称为交易,主要是员工的时钟输入和时钟输出信息,其中大部分都被处理并存储在另一个表中。多年来这些数据可能会增长。正在考虑备份数据到文本文件并从那些文本文件导出它们,导出将清除数据库中的数据。现在数据是在文本文件中可以存档等...这是来自其他软件的想法我看到......你的建议怎么样......
几点:
答案 0 :(得分:1)
我认为这取决于您需要如何访问旧数据。
如果您只需要对旧数据运行定期报告,则可以将数据移动到单独的存档数据库中。基本上,只需创建实时生产数据库的副本即可。在副本中,只需删除您要在实时系统中保留的最近的内容。在实时生产数据库中,删除将保留在存档数据库中的数据。您基本上定期修剪数据库并将旧数据移动到存档数据库中。我已经将这种技术用于供应商编写应用程序的时间,该应用程序每隔几年就会慢慢爬行,因为它不是为了保存存储在其中的数据量而设计的。 Fortunatley,我们可以将应用指向我们运行报告所需的任何数据库。
答案 1 :(得分:0)
SQL Server 2008支持对表进行分区。
http://msdn.microsoft.com/en-us/library/dd578580.aspx
这对您来说可能是一个可行的策略。这可能是我最喜欢的SQL2008新功能。
答案 2 :(得分:0)
我会尝试根据您环境的具体情况将我的答案分为两种变体。
根据你如何处理事情,我的直觉反应是你没有DBA。
在第一种情况下(没有DBA的嵌入式数据库),然后导出到文本文件就可以了。您可能会考虑使用XML,因为它几乎包含内联元数据并且是纯文本。这可以在一定程度上证明你的未来,因为一个新人可以很容易地找出存档数据中的内容。您可能希望为要保留数据的时间以及何时销毁数据建立指导。如果您是一家上市公司,可能需要遵守法律。
在第二种情况下(联网的RDBMS),您应该遵循DBA以保留数据。 DBA应该有一个计划。如果您没有DBA,那么您有几个选择。
您可以考虑导出文本文件。您可以对表进行分区并滚动分区段(这取决于RDBMS如何执行 - Oracle将是表空间,SQL Server将是文件组,我不知道MySQL)。您可以将第二个数据库作为存档数据库或实际数据仓库。
另一种选择是引入合同DBA来帮助解决它。
答案 3 :(得分:0)
许多数据库都可以完成这项工作。我可以提到拥有优秀C#提供商的Firebird SQL