Sql 创造;档案馆;“要卸载应用程序的数据库”;“主要”;数据库

Sql 创造;档案馆;“要卸载应用程序的数据库”;“主要”;数据库,sql,database,database-design,web-applications,Sql,Database,Database Design,Web Applications,我想创建一个应该包含大量数据的web应用程序。我想问一下,你们中是否有人见过一个包含两个数据库(主数据库和存档数据库)的系统。我想创建一种机制,将旧数据从主数据库移动到存档数据库,以便卸载它。例如,当我有一个用户帐户表时,我想将那些超过三个月没有使用的帐户移动到存档数据库中。完成此操作后,主数据库可能会显著卸载,因此我希望它工作得更快。然而,这种机制必须在两个方向上工作——不仅要从主数据库迁移到存档数据库,还要从存档数据库迁移到主数据库,以允许用户“刷新”他们的帐户。当然,在这种情况下,我将使用

我想创建一个应该包含大量数据的web应用程序。我想问一下,你们中是否有人见过一个包含两个数据库(主数据库和存档数据库)的系统。我想创建一种机制,将旧数据从主数据库移动到存档数据库,以便卸载它。例如,当我有一个用户帐户表时,我想将那些超过三个月没有使用的帐户移动到存档数据库中。完成此操作后,主数据库可能会显著卸载,因此我希望它工作得更快。然而,这种机制必须在两个方向上工作——不仅要从主数据库迁移到存档数据库,还要从存档数据库迁移到主数据库,以允许用户“刷新”他们的帐户。当然,在这种情况下,我将使用GUID而不是BIGINT作为主键。你觉得怎么样?这样的概念正确吗?或者我不应该为它操心,假设应该只有一个数据库?提前感谢。

拥有存档数据库不会有什么坏处,但通常用于恢复或报告。我认为在大多数情况下,分区将更好地服务于您的目的。此外,许多RDMS系统提出了不同的现成解决方案,如数据库群集、镜像等。

好的,所以您说最好添加“IsArchive”这样的列,并且存在一些方法/工具,允许以这样的方式对数据库进行群集,以便它对具有不同(“IsArchive”==false)的记录进行操作(我的意思是优化所有SELECT、UPDATE和INSERT查询)而不是在“IsArchive”标志设置为true的记录上?在这种情况下,我考虑的是SQL Azure。例如,您可以只按“IsArchive”列对表进行分区;因此,yu将有2个分区(这意味着每个分区可以存储在不同的物理位置);然后,如果您的查询在
中有“IsArchive”,其中
db引擎将只扫描/查找所需的分区。谢谢-我想我会选择它!