数据访问与业务层构建:LINQ to SQL 与 Windows Workflow Foundation 应用
1. 生产环境下的门户项目数据清理挑战
在运行门户项目的生产环境中,Ajax 网络门户面临着清理未使用数据的独特挑战。每次新用户首次访问时,会创建匿名用户、页面设置、小部件等信息。若用户不再返回,这些信息将永久保留在数据库中。通常,粘性用户(频繁返回网站的用户)仅占 Ajax 网络门户总用户的 30% - 50%,这意味着有 50% - 70% 的数据是未使用的。为了控制数据库大小,需要进行日常数据清理,因为用户账户会过期、RSS 订阅会过时、匿名会话会失效,用户也可能不再回来。
当门户变得流行并每天接收数千用户时,数据清理操作会变得非常庞大。需要从 20 或 30 个表中逐个删除数百万行数据,同时还要维护外键约束。而且,清理操作需要在网站运行时进行,不能影响其整体性能。整个操作会导致 MDF 文件中的索引和空间严重碎片化,日志文件也会变得非常大,以跟踪大量事务。
数据清理流程
- 查找可删除的匿名用户 :通过
aspnet_users表中的LastActivityDate和IsAnonymous字段,找出超过 30 天未活动的匿名用户。 - 查找用户的页面 :根据可删除用户的
UserID,找出他们拥有的页面。 - 删除页面上的所有小部件实例 :删除这些
超级会员免费看
订阅专栏 解锁全文
4881

被折叠的 条评论
为什么被折叠?



