随着用户量增加,有很多用户长期不登陆,甚至有的用户已经过世,如何处理他们留下的信息? 处理这些垃圾数据第一是节省空间,储存空间很贵,如果不删掉这些信息会一直消耗储存成本。第二是影响数据库性能,在需要遍历整个表的时候(找回密码,搜索账号),过多数据让搜索速度变慢。 我想的方法是:所有两年不活跃的账号,先发短信 /邮件提醒用户,再过半年到一个月再次提醒,第三年直接删除账号相关数据。 对于违规封禁的用户,给一个注销账号的选项,但是账号绑定的邮箱或手机号不能在 3 年再次注册。 考虑到储存空间的昂贵,所有注销操作全部是真删除而不是标记为删除。 如果未来有检测用户是否过世的 api ,可以在检测到用户死亡后锁定账号并在一年后删除相关数据。
![]() |
1
MoRanjiang 109 天前
用大厂的冷存储?价格便宜,但如果用户要登陆需要时间恢复数据。
|
![]() |
2
LeegoYih 109 天前
按我的理解硬盘是硬件里最便宜的设备了,只存数据基本上不会影响成本吧?而且数据应该是比硬件值钱的,一般都不会物理删除,可以备份到冷库或者打包保存。
如果表结构设计合理,不会影响查询效率,不太清楚你描述的“找回密码”和“搜索账号”在什么场景下会查全表。 我个人非常讨厌服务或软件删除用户信息,过了几年想回去玩游戏 /找历史记录,结果你把我号删了? |
3
whyso 109 天前
@MoRanjiang 我玩的一个游戏应该就是你说的这样,大概两年没玩,登录就是读条恢复数据
|
4
zuixinwenyue 109 天前
用户信息非常宝贵,相关数据也不应该删除,数据过多的话 可以尝试下分表操作。理论上除非用户自己注销,用户都应该可以正常登录,就算用户自己注销 数据也应该是物理删除,方便以后大数据分析 等等,总之数据是非常宝贵的
|
5
wxf666 109 天前
为啥“找回密码”和“搜索账号”会遍历全表??
|
6
foolishcrab 109 天前 via iPhone
你说的性能不够的地方都可以在技术方案上规避掉的,再怎么也轮不到清除数据。
就这么说吧,如果你的业务真的庞大到用户表 mysql 都支撑不住,那个时候你删个数据起码 cto 审批。 没到这规模的话老老实实研究下缓存啥的 |
![]() |
7
iloveMonica OP @wxf666 用手机号匹配 uid ,一个一个去对比,找到 uid 再去把对应的密码修改了。添加好友也是根据昵称匹配 uid ,在用 uid 寻找用户头像这些。
|
8
tongyifan 109 天前 via Android
@iloveMonica 为什么不加索引呢
|
![]() |
9
opengps 109 天前 ![]() 这得多大的系统,需要为这个数据担心?一个人的注册信息占了你多大存储呢?
|
10
ghostwind 109 天前
建议先说下用户规模。。百万,千万还是上亿。。。
|
11
julyclyde 109 天前
出于成本和隐私考虑,是应该删除
但是你得考虑一下删除之后,这个用户和其它人发生过的关系怎么处理 举个例子:我曾经见过某 cmdb 系统,服务器使用数据库外键的方法“属于”人。然后这人离职了…… |
![]() |
12
LeegoYih 109 天前
@iloveMonica 如果这 2 个功能你们是通过扫全表实现的,那么应该考虑换一位 CTO 了。
|
![]() |
13
LaGeNanRen 109 天前
大厂优化成本时考虑冷存,但你这到底是什么体量的服务
|
14
shyangs 109 天前
隨便一部小說,比如《天龍八部》都有 100 萬字,一個人的註冊資訊有小說佔空間?
你公司的儲存空間還不如盜版小說站? |
![]() |
15
iloveMonica OP @opengps 不只是注册的,还有这个人创建的一些东西,头像,发过的图片,文字这些
|
![]() |
16
RiverMud 109 天前
@iloveMonica 你这到底啥服务啊?用户发的图片、文字这些东西,服务不倒闭的情况下都不应该删吧?
|
![]() |
17
zoharSoul 109 天前
不差这点
|
18
nzynzynzy 109 天前
怪不得我用了十多年的 163 邮箱被彻底清空了:)
|
![]() |
19
watzds 109 天前
国外一些服务,倒是收到过要删除账号的提醒
|
20
Maboroshii 109 天前
啥业务这么大数据量? 一般单机 mysql 都随便应付啦
|
![]() |
21
xuanbg 109 天前
不是做网盘的话,用户数据能有多大?现在存储这么便宜,能省几个钱?
|
22
Cormic 109 天前
这两天整理 bitwarden 里的密码,发现很多网站倒闭了,或者转手了(感谢原站没卖用户表),或者因为众所周知的原因封禁了没实名的账户,或者因为他们自己出现过安全问题把老用户全部干掉了。确实大部分网站我是真的好几年都没登陆了。
对于这些网站,我的选择是直接删除 bitwarden 记录和从收藏夹清空,懒得折腾,也不会再用,部分比较重要的类型的网站,我甚至会在脑子里拉个黑名单。 |
![]() |
23
Martens 109 天前
硬盘应该不贵啊,redis 内存可能贵点。
可以做冷热数据分离,对于长时间不登录的直接丢到便宜的存储里,下次登录再读到库里 |
![]() |
24
linvaux 109 天前
数据比硬盘值钱
|
25
nvideo 109 天前
HBase
|
![]() |
26
itechnology 109 天前
用户数据很宝贵的,你信不信问问 CTO/老板,他们绝对不允许真实删除用户数据
|
![]() |
27
vitoaaazzz 109 天前
不说数据能有多少,就一般系统用户能有多少?
|
![]() |
28
paradoxs 109 天前
你根本就没有多少用户。。。
别想这些没用的 |
![]() |
29
ck65 109 天前 via iPhone
说一下哪家产品?我避个雷。
|
![]() |
30
flyqie 108 天前 via Android
#26 +1
#29 +1 OP 的神奇脑回路。。 这玩意还搞删除? 别把你的技术问题用这种奇怪的方式解决,非活跃用户不等于垃圾数据,而且万一遇上监管问题有你好受的。 另外,用户过世不代表账户会被遗弃,各大厂商推出的纪念账户你是看不到吗。。 |
31
koloonps 108 天前
what? 为什么要删除用户,非活跃用户移到其他数据库不就好了?等人家上线的时候再自动导入
|
32
zdt3476 108 天前
不是,你是用 redis 存吗? 如果 mysql ,硬盘能值几个钱,需要删除?表示不是很理解,就算你是十几亿的用户量,硬盘成本也没多少啊,而且反过来说,你有这么大的用户量了,也不差这点存储成本了。
|