在 SQL 服务器中归档数据库表:相同的数据库还是不同的数据库?
Archiving DB tables in SQL Server: same DB or a different database?
我们的 DBA 团队正在为一些较大的数据库开发归档流程。对于将数据保存在同一个数据库还是不同的数据库中存在不同意见。
我做了一些研究并提出了以下几点。有最佳实践吗?一种方式比另一种方式更好。
选项 A:相同的数据库
- 更容易实施 (+)
- 可以查看加入活动数据和存档数据 (+)
- 单一数据库(+)
- 更容易移动到不同的服务器,如果你必须 (++)
选项 B:不同的数据库
- 较小的操作数据库 (+++)
- 操作数据库 (++) 的较小维护 window
- 在非生产环境中恢复操作数据库的时间较短 (++)
- 数据库计数(两次)(-)
- 视图需要跨越数据库边界(-)
绝对是选项 B(即单独的数据库)。事实上,根据所有存档数据的大小,您甚至可以考虑将其移动到完全不同的 SQL 服务器实例。
至于利弊,我不同意B选项中的一些:
- 实际上,需要跨数据库的视图根本不是问题。
- 拥有 2 个数据库而不是 1 个不是问题。
- 使用单独的数据库,可以对存档数据进行不同的管理/索引等,因此 (+)。
最后,如果数据被认为 "non-transactional" 可以存档,那么它不应该在事务数据库中。您在关于 "Smaller maintenance window for operational DB" 的那一点中提到了这一点。目标是提高事务系统的性能和可管理性。
我们的 DBA 团队正在为一些较大的数据库开发归档流程。对于将数据保存在同一个数据库还是不同的数据库中存在不同意见。
我做了一些研究并提出了以下几点。有最佳实践吗?一种方式比另一种方式更好。
选项 A:相同的数据库
- 更容易实施 (+)
- 可以查看加入活动数据和存档数据 (+)
- 单一数据库(+)
- 更容易移动到不同的服务器,如果你必须 (++)
选项 B:不同的数据库
- 较小的操作数据库 (+++)
- 操作数据库 (++) 的较小维护 window
- 在非生产环境中恢复操作数据库的时间较短 (++)
- 数据库计数(两次)(-)
- 视图需要跨越数据库边界(-)
绝对是选项 B(即单独的数据库)。事实上,根据所有存档数据的大小,您甚至可以考虑将其移动到完全不同的 SQL 服务器实例。
至于利弊,我不同意B选项中的一些:
- 实际上,需要跨数据库的视图根本不是问题。
- 拥有 2 个数据库而不是 1 个不是问题。
- 使用单独的数据库,可以对存档数据进行不同的管理/索引等,因此 (+)。
最后,如果数据被认为 "non-transactional" 可以存档,那么它不应该在事务数据库中。您在关于 "Smaller maintenance window for operational DB" 的那一点中提到了这一点。目标是提高事务系统的性能和可管理性。