0

我正在重新设计/升级工具。数据库通信使用 C++(非托管 ADO)并连接到 SQL Server 2005。

我对归档和备份/恢复技术有一些疑问。

  1. 通常归档不同于备份/恢复。有人可以提供任何链接来解释我吗?目前该解决方案使用 bcp 工具进行归档。我看到代码中对表名有很多依赖。在选择设计时我必须考虑哪些事情(考虑到我必须在单击按钮时进行备份/存档,数据库大小最大为 100mb)

  2. 将整个通信转移到 .net 会有帮助吗?考虑到很多 ORM 工具。所有的业务逻辑和 UI 都在 C# 中

  3. 验证档案数据的最佳方法是什么?

PS:问题可能太高了,但我没有得到任何适当的链接来理解这一点。如果有人可以回答,那将非常有帮助。我可以提供更多细节!

提前致谢!

4

1 回答 1

1

在 100 MB 时,我会说您可能不应该在存档上花费太多时间,而只需使用传统的备份策略。数据库的大小是如此之小,以至于归档将是一项非常复杂的操作,而且收益很小,因为归档过程通常只在大型数据库的情况下才相关。

一般来说,数据库备份是在发生灾难(意外数据删除、服务器崩溃等)时提供可恢复性的一种方式。归档主要意味着您对数据进行分区。

归档的一个可能目标是保持特定数据可用于查询,但不能更改它。在处理大容量数据库时,这是提高性能的绝佳方式,因为只读数据可以比“热”数据更密集地编入索引。它还允许您将只读数据移动到针对 READ 操作进行了优化的隔离 RAID 分区,而不必为典型的 RDBMS IO 操心。此外,通过从常规数据库中删除非活动数据意味着表中包含的数据大小将减少,这将提高整个系统的性能。

归档通常是出于法律原因进行的。有问题的数据可能对企业不再重要,但 IRS 或银行规则要求它在一定时间内可用。

使用 SQL Server,您可以使用分区策略归档数据。这通常涉及确定拆分数据的标准。这方面的一个例子可能是一个日期(即超过 3 年的数据将被移动到数据库的存档部分)。在大型系统的情况下,根据地理标准(即美洲在一台服务器上,欧洲在另一台服务器上)分割数据也可能是有意义的。

要回答您的问题:

1)看上面写的解释 2)这真的取决于升级的目标是什么。将其移至 .NET 将使代码得到管理,但这对业务来说有多重要?3) 如果您决定进行分区,验证它是否有效可能包括在原始数据库上针对包含您将用于分区的阈值之前和之后的值的数据发出查询,然后拆分数据,并重新发出查询之后验证它仍然返回相同的记录集。如果您将系统配置为使用自动滑动窗口,您还可以密切关注系统以确保数据会自动移动到存档分区。

同样,如果 100MB 不是拼写错误,我认为您的数据库太小而无法真正从归档中受益。如果您的目标是加快速度,请将系统放在能够将整个数据库加载到 RAM 中的服务器上,或者使用 SSD 驱动器。

如果您出于法律或管理原因需要建立数据存档,请查看水平表分区。这是一个非常直接的过程,主要由 SQL Server 自动处理。

希望这可以帮助你!

于 2013-02-20T09:05:45.070 回答