5
单个故障是否会使批量操作失败?
我正在使用的API中有一个批量删除操作,该操作接受ID数组: ["1000", ..., "2000"] 我可以按照自己的意愿随意执行删除操作,因此我决定使整个事务具有事务性:也就是说,如果单个ID无效,则整个请求将失败。我将其称为严格模式。 try{ savepoint = conn.setSavepoint(); for(id : IDs) if( !deleteItem(id) ){ conn.rollback(savepoint); sendHttp400AndBeDoneWithIt(); return; } conn.commit(); } 备选方案(在软件套件中的其他位置实现)是尽我们所能在后端进行操作,并报告阵列中的故障。该软件的这一部分处理的请求较少,因此从理论上讲,响应不会成为一个巨大的数组。 资源贫乏的服务器中最近发生的一个错误使我再次查看代码,现在我在质疑最初的决定-但是这次,我更多地是出于业务需求而不是最佳实践的动力。例如,如果我未能通过整个请求,则用户将不得不重试,而如果删除了许多项目,则用户可以完成操作,然后要求管理员执行其余操作(在我修复错误的同时) !)。这将是许可模式。 我尝试在网上寻找有关此事的一些指导,但我空手而归。所以我来找你:这种性质的批量操作最期望什么?我应该坚持更严格,还是应该更宽容?