Help us learn about your current experience with the documentation. Take the survey.
功能开发的数据保留指南
概述
数据保留是 GitLab 功能开发中的一个关键方面。在构建和维护功能时,我们必须考虑所收集和存储数据的生命周期。本文档概述了从一开始就将数据保留考虑因素纳入功能开发的指导原则。
为什么数据保留很重要
- 系统性能:基于时间的数据组织能够实现更好的查询优化和高效的数据访问模式,从而加快响应时间并提高系统可扩展性。
- 基础设施成本:通过数据生命周期策略进行战略性存储管理,可以降低主存储、备份和灾难恢复系统的基础设施成本。
- 工程效率:从一开始就考虑数据保留来设计功能,通过建立明确的数据生命周期,可以加快开发速度并提高可靠性,减少技术债务并加快数据迁移。
功能开发指导原则
1. 早期规划
在设计新功能时,应在初始规划阶段考虑数据保留需求:
- 记录持久化的数据类型。这是面向用户的数据吗? 是为提高处理效率而在内部生成的吗? 是派生/缓存数据吗?
- 确定每种数据类型的业务目的和所需的保留期限。
- 定义旧数据的产品理由和客户使用模式。 人们如何与旧数据与新数据进行交互? 价值如何随时间变化?
- 考虑可能影响数据保留的监管要求(如个人身份信息)。
- 规划数据删除或归档机制。
2. 为数据生命周期而设计
功能设计应基于数据并非永久存在的理解:
- 避免对无限数据可用性的假设。
- 实现对缺失或已归档数据的优雅处理。
- 设计用户界面以明确传达数据可用期限。
- 设计针对长期存储的数据结构,优化以便在长期上下文中查看。
- 考虑在适当的地方实现"生存时间"(TTL)机制,特别是对于可以按需优雅重现的派生/缓存数据。
3. 文档建议
每个功能实现必须包括:
- 清晰的数据保留期限文档(在 GitLab.com 上的值和默认值,如果有) 以及业务理由/证明
- 数据删除/归档机制的描述。
- 数据删除对依赖功能的影响分析。
实施清单
在提交新功能的合并请求之前:
- 记录数据保留需求。
- 设计考虑数据删除的数据模型。
- 实施数据删除/归档机制。
- 测试缺失/已归档数据下的功能行为。
- 在用户文档中包含保留期限。
- 考虑对依赖功能的影响。
- 考虑对备份/恢复和导入/导出的影响。
- 考虑对复制(例如 Geo)的影响。