能不能直接加字段,取决于旧数据是否需要保留、新字段是否参与筛选排序,以及页面模板是否依赖固定结构。若旧记录可以重新录入,扩展通常只是改表结构并重发布;若旧记录必须保留且新字段要参与查询,就要先做兼容迁移,再调整写入和读取逻辑。判断依据不是“字段少”,而是字段的用途和旧数据的约束条件。
上线后字段不够用,常见矛盾是页面看起来能显示内容,但后台无法按业务需要组织内容。这里有两种解释。
区分这两种解释的证据很直接:在后台找一条真实记录,看该信息是否已存在于某个字段中。若存在且只是未输出,属于第一种;若不存在,或存在但被塞进一段自由文本里无法单独筛选,属于第二种。第二种才是真正需要扩展字段结构的场景。
字段能否顺利扩展,不取决于加字段这个动作本身,而取决于下面三个条件。
一个假设例子:某服务列表原本只有“城市”一个筛选维度,后来业务要求按“服务类型”筛选。若旧记录的服务类型只写在描述文本里,直接加一个字段并留空,筛选结果会漏掉全部旧记录。合理做法是先加字段,再对旧记录做一次归类补值,确认旧记录能被新条件命中后,才把筛选入口放给用户。这个动作的结果会直接影响下一步:补值不完整时,不应开放新筛选,否则用户看到的结果集不完整。
明确前提后,扩展通常落在两条路线上。
在原有结构中增加字段,允许为空,先写入新数据,再分批补旧数据。适合字段数量少、查询逻辑简单、业务能接受一段时间内新旧记录表现不一致的情况。执行时要先确认写入端和读取端都已认识新字段,再补数据,最后才调整页面展示。顺序颠倒会出现“页面已展示新字段、数据却还没补”的空窗。
当新需求是“一条记录对应多个标签或多个属性”时,继续在原结构上加列会越来越难维护。此时更适合把这类信息拆到独立结构里,通过关联关系读取。代价是查询和写入逻辑都要改,适合旧数据量大、维度还会继续增加的情况。若业务只增加一个固定字段,拆结构反而增加复杂度。
选择依据可以归纳为:新信息是“每条记录一个值”还是“每条记录多个值”。前者原地加字段,后者考虑拆结构。这个判断不需要等到字段多到无法维护才做,在第二个多值需求出现时就应重新评估。
字段加完不等于扩展完成。至少验证以下三点,才能判断是否进入下一步。
需要说明的是,抓取量或某类请求量在扩展后短暂波动,不能单独证明扩展正确或错误。模板调整、URL 参数变化、缓存刷新都可能造成类似现象。要判断扩展是否生效,应回到数据本身:旧记录能否读出、新条件能否命中、写入是否完整。这三点通过后,再处理展示层和索引层的优化,顺序更稳妥。