普法律己
法治论坛

踩过300万赔偿的坑才懂:数据库结构优化根本不是纯技术问题

上周在事务所见了个做垂直电商的老板,坐下来先灌了半杯冰美式,说刚从网信办出来。

他说技术部上个月提了个数据库结构优化方案,说要把查询速度提30%,他当时觉得好事啊,批了预算就让人干了。结果改完没俩礼拜,有用户反馈说自己点进个人中心,能看到同省另一个陌生用户的完整收货地址和手机号。

一下子炸了锅。

光用户集体投诉就收了两百多份,还有三个用户直接把他告到了法院,算下来赔的钱,比他三年在数据库优化上花的预算加起来还多。

他说我真冤啊,不就是改个数据库结构吗?怎么就惹这么大麻烦?

你以为的优化,可能正在踩合规红线

太多人对数据库结构优化的认知,还停留在技术部门的KPI层面——无非是加几个索引,拆几张大表,把查询速度压下来,省点服务器成本。

根本没人想过,你改的每一次表结构,都可能碰合规的高压线。

之前碰到个做中小商家SaaS的客户,技术团队为了把单条查询的响应时间从180ms压到15ms,做了个特别“聪明”的改动:把原来按租户ID做分区隔离的表,拆成了一张全量的公共大表,去掉了跨表关联的步骤。他们算过,这样能省40%的数据库存储空间,查询速度直接翻三倍。

上线才一周,就出了事。平台上做服装的李老板,查自己店铺的客户联系方式的时候,翻了两页就看到了隔壁做食品的张老板,全店1200多个客户的手机号、收货地址,甚至还有之前的售后聊天记录。

为啥?因为去掉了租户隔离的结构限制,查询的时候根本没做权限过滤。他当时跟我哭,说技术算的性能账是对的,可谁知道这账背后藏着这么大的窟窿。

把非必要关联的个人信息集中存储、去掉必要的权限隔离,本质上都是在放大数据泄露的风险敞口。按照《个人信息保护法》的要求,处理个人信息得遵循最小必要原则,你本来查个订单状态,根本不需要拉取用户的完整身份证号,结果为了查询快,把所有字段全堆在一张表里,一次查询全带出来——这要是系统被恶意攻击,泄露的信息量级直接翻好几倍,到时候的罚款额度,真的够你养整个技术团队一整年。

个人信息最小必要存储数据库结构示意图
个人信息最小必要存储数据库结构示意图

说个真事,去年有个本地的连锁健身房,做数据库优化的时候,把原来分开存的会员健身记录、消费记录、人脸门禁信息全合并到了一张表里,觉得这样前台查会员信息方便,不用来回切系统。结果前台的一个兼职员工,趁着值班的功夫,把表里所有会员的人脸照片和手机号导出来,卖给了旁边的健身培训机构。

最后健身房因为没有做好个人信息的分类隔离存储,被监管部门罚了快50万,还得给所有会员赔礼道歉,退卡的用户排了半条街。那个老板跟我说,他本来想靠这个优化省点前台的人力成本,结果倒好,赔出去的钱够请十个前台。

你说这优化做的,到底是省钱还是造钱?

优化前没做这步,后面全是白忙活

我见过至少七成的团队,做数据库结构优化的时候,上来就改表、删字段、拆索引,连个正式的变更方案都没有,更别说留痕了。

总觉得改完能跑就行,留日志占空间,还影响查询速度。

等真的出事了,才知道哭。

之前有个做在线教育的客户,改完数据库结构之后,为了省空间,把原来存了五年的老学员消费记录字段全删了,说这些老学员早就不续费了,占地方。结果过了半年,有个2019年报名的学员找过来,说当时交了两万多的一对一课程费,没上完就联系不上老师了,现在要求退费。

客户拿不出当时的缴费记录,也调不出来当时的课程消耗明细,因为字段都被删了。法院直接判他全额退费,还得赔学员的利息,前前后后花了快三万块。

还有更离谱的,有个团队做优化的时候,把专门存操作审计日志的表也给拆了,说这表每天涨几个G,太占存储。结果三个月后监管上门检查,问他半年前谁导出过平台的用户数据,他翻遍了系统,啥记录都拿不出来。

数据库结构调整的全流程留痕,是发生数据纠纷、监管核查时,你能拿得出手的核心免责证据。你改了什么字段、什么时候改的、谁操作的、旧的数据存在哪,这些东西要是没记,不管是用户找过来索赔,还是监管上门查,你连自证清白的依据都没有。

数据库结构变更全流程审计留痕流程图
数据库结构变更全流程审计留痕流程图

真的,别觉得这是小题大做。我之前帮一个客户处理过劳动仲裁的案子,员工说自己在公司的时候,被老板扣了三个月的工资,结果公司拿出了当时的数据库工资表结构变更记录,证明那个员工说的工资基数,早在他入职前就已经调整过了,根本不存在扣工资的情况。最后仲裁直接驳回了员工的诉求。你看,这数据库的结构记录,还能当劳动纠纷的证据用,哪是占地方的没用文件啊。

我见过最细致的团队,每次做结构调整,哪怕只是加一个索引,都会专门把变更内容、操作人、备份位置记在独立的文档里,存在离线的存储介质上。之前他们碰到个恶意投诉的用户,说自己的个人信息被泄露了,结果他们直接调出当时的结构变更记录,证明用户说的那个泄露的字段,早在半年前就因为合规要求,从公网查询的字段表里去掉了,根本没有对外暴露的路径。

最后那个投诉的用户自己撤了案,连监管的上门核查都没触发。

你看,多花俩小时记的东西,关键时刻能挡多少麻烦。

真要做优化,先把这几个底线划清楚

真要做优化,先把这几个底线划清楚
真要做优化,先把这几个底线划清楚

我从来不反对数据库结构优化。毕竟查询慢、系统卡,用户跑了,生意也做不下去。

但优化不是瞎改,有些底线碰都不能碰。

涉及个人信息的表,改结构之前先做个风险筛查。哪些字段是核心敏感信息,比如身份证号、支付密码、人脸特征,单独放到加密的专用表里,别跟用户的浏览记录、商品收藏这种非敏感信息堆在一块。哪怕真的出了安全问题,影响范围也能控住,不至于把所有信息全赔进去。

不管改什么结构,先把全量数据备份好。操作的人、时间、具体改了什么内容,全记在专门的审计表里,别嫌这表占地方。真到了要举证的时候,这东西比你找多少关系都好用。

优化完别着急直接全量上线。尤其是多租户的系统,千万别为了查询快,把租户之间的隔离给拆了。我知道技术团队有时候会觉得隔离增加了查询的复杂度,影响性能,但这层隔离真的不是技术洁癖——是你作为平台方,必须尽到的安全保障义务。你要是拆了,等着用户告你侵权的时候,别再说自己只是做了个技术优化。

说实话,我真的见过太多老板,一提数据库优化,第一反应就是问“能提多少速度?一年要花多少钱?”,从来不问“这么改会不会留合规漏洞?会不会有证据风险?”。

等真的收到法院传票,或者监管的整改通知书,才拍大腿后悔。

真的没必要。

本文为普法参考,不构成个案法律意见。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:踩过300万赔偿的坑才懂:数据库结构优化根本不是纯技术问题
文章链接:https://www.zhoupulvshi.com/hunyin/4788.html