前言
做为一名数据库工程师。通常只靠约束自己是远远不能保证数据库稳定性的。
哪怕是10年,20年数据库天花板的人物,仅靠独善其身,也是根本不敢拍胸部说数据库100%稳定。
为什么?,毕竟数据库是给人用的,直接点说,DBA是为研发同学服务的。再强悍的数据库架构可能也顶不住研发同学骚整的代码。
所以任何一个研发团队,都应结合实际情况定制强有力的开发规范,并且坚决落实。
案件
近日,我司由于开发同学未遵守开发规范,差点导致公司损失近千万资产。
情况是这样,我司用Elasticsearch存储用户订单数据,索引按月创建(例如order_202301、order_202302…order_202312)。相关业务增删改查时直接指定单个或多个index即可。
然而还是有开发同学为了省事直接使用了index_+条件的方式查询【开发规范中明确规定:ES禁止使用index_】,而这个操作差点触发了“白手环”级事故,因为当时正好在做线上压测,线上有很多order_202301_test类的副本索引,而索引前缀+*的方式,直接让所有用户订单翻倍!!!
当然由于有各类兜底策略,最终是侥幸避免了该事故。但还是想再次强调,坚决落实开发规范在研发团队中的重要性。包括本次,单针对Elasticsearch我们同样有标准的ES开发规范,每条规范都是确保我们底层数据库稳定的重要一环。
结语
为研发团队定制开发规范并强制落实也是一个DBA必备的技能和素养。近年来总有开发同学在说云时代第一个取代的就是DBA和运维,我想说, 如果每个开发都能按规范好好写SQL,那才是去DBA的重要一步。