为什么强烈建议使用软删除
删数据是一个非常有风险的事情,也许你会认为一些无效数据没有保留的必要,却很容易给后续的数据分析带来糟糕的事情。
本篇所说的删除数据,是指提供给用户删除操作的权限,并在数据库中实际删除了数据。
用户不是删除数据,是取消行为
当用户进行一个数据删除时,应该解读为,用户取消了过去的某个行为。用户在某个服务上进行各种各样的操作,在业务设计上,取消,也是操作的组成部分。
数据库要记录的,是用户行为产生的数据,这当中当然包括了,用户取消行为的数据记录。
无效数据也有很大价值
无效的数据,是指,用户行为在数据库创建了记录,而用户行为本身只是一个简单的尝试操作,或是用户完成操作后认为是一个错误的操作,为避免造成干扰进行删除。
比如,很多平台在做活动的时候,提供了某种注册操作,包括注册新账号,注册VIP等。部分用户会在发现实际使用率不高等情况后,主动注销账号。一个被注销的账号几乎不会重新创建,而留在数据库会占用空间,如果一个应用恰好出现一堆僵尸账户,那这些记录留在数据库只会给数据查询带来坏处。
但是一旦删除这些记录,在做数据分析时,会失去很多统计信息,会造成统计结果失真,会让分析者误以为僵尸用户没有那么多,从而忽视产品优化以留住用户。
如果是开放测试,则应该专用的测试环境,不应该让这样的环境与实际发布的环境混在一起。
同样的道理,如果是误操作的记录的删除,那么分两种情况看,如果很少,那只需要在数据分析的时候进行数据清洗即可,这是数据分析的常规操作,不需要考虑提供所谓的干净的数据;如果很多,那么,一个需求点又诞生了,即,为什么用户会有那么多误操作,怎么样去优化产品以减少误操作。
总之,所谓的无效数据却是用户的真实行为,其暴露的都是产品的使用情况,不该不保留。
正确的做法,应该是定时将这部分软删除的数据
以归档的形式放入数据仓库。