所以我们在设计数据库以及实体模型时,一定要确保数据在可掌控范围内,决不能允许出现错误数据。比如购买了一个订单,数据是100个,用户可随意使用,使用一个就在订单上记录一个已使用的数据,最终到已使用数据=原订单数量,其中用户如果做退款下线,那么这个已使用数据还需要回补回来。判断是否还有未使用时的逻辑不严谨。
能够确认的问题可通过一些工具实现数据的自动修改,比如某些服务临时调用失败,我们就可以自动的重新调用直到成功为止。去掉无用于业务的鸡肋功能。列表页有一个批量的订单,它会包含多个订单,但列表为了显示的统一,给这个批量的订单也会显示它的价格以及状态,它的价格是下面所有子订单的价格总和,订单的状态是下面所有子订单的状态中最小的状态,所以应用了一个递归来查询,非常消耗时间。
去掉无用于业务的鸡肋功能。列表页有一个批量的订单,它会包含多个订单,但列表为了显示的统一,给这个批量的订单也会显示它的价格以及状态,它的价格是下面所有子订单的价格总和,订单的状态是下面所有子订单的状态中最小的状态,所以应用了一个递归来查询,非常消耗时间。经常与业务方沟通后,确认这两个我们花了大量去计算的数据对业务方其实并没有什么实质的作用,果断去掉,性能提升感觉是从地狱到了天堂。
判断是否还有未使用时的逻辑不严谨。应该在更新的前一步骤做校验或者将之前的已使用数据做为条件来更新。更新已使用数量的逻辑不严谨,缺少服务端的校验导致用户可以在多个页面同时打开一个订单来操作退款。我个人并不推荐采用这种利用一个数据库字段来记录核心数据的方案,因为它总是基于一个中间状态在做运算,其中只要出现一个错误,后面的运算都会出错,最起码我们应该有数据监控,以确保这个结果值是正常的。
所以我们在设计数据库以及实体模型时,一定要确保数据在可掌控范围内,决不能允许出现错误数据。比如购买了一个订单,数据是100个,用户可随意使用,使用一个就在订单上记录一个已使用的数据,最终到已使用数据=原订单数量,其中用户如果做退款下线,那么这个已使用数据还需要回补回来。判断是否还有未使用时的逻辑不严谨。应该在更新的前一步骤做校验或者将之前的已使用数据做为条件来更新。更新已使用数量的逻辑不严谨,缺少服务端的校验导致用户可以在多个页面同时打开一个订单来操作退款。我个人并不推荐采用这种利用一个数据库字段来记录核心数据的方案,因为它总是基于一个中间状态在做运算,其中只要出现一个错误,后面的运算都会出错,最起码我们应该有数据监控,以确保这个结果值是正常的。