API에서 작업 중이며 일련의 ID를 허용하는 대량 삭제 작업이 있습니다.
["1000", ..., "2000"]
필자는 적합하다고 생각되는 삭제 작업을 자유롭게 구현할 수 있었기 때문에 모든 것을 트랜잭션 처리하기로 결정했습니다. 즉, 단일 ID가 유효하지 않으면 전체 요청이 실패합니다. 이 모드를 엄격 모드 라고 합니다.
try{
savepoint = conn.setSavepoint();
for(id : IDs)
if( !deleteItem(id) ){
conn.rollback(savepoint);
sendHttp400AndBeDoneWithIt();
return;
}
conn.commit();
}
대안 (소프트웨어 스위트의 다른 곳에서 구현)은 백엔드에서 수행 할 수있는 작업을 수행하고 어레이에서 오류를보고하는 것입니다. 소프트웨어의 해당 부분은 더 적은 요청을 처리하므로 응답은 이론적으로 거대한 배열이 아닙니다.
리소스가 부족한 서버에서 최근에 발생한 버그로 인해 코드를 다시 살펴 보았으므로 이제 원래 결정에 의문을 제기하고 있습니다. 그러나 이번에는 모범 사례가 아닌 비즈니스 요구에 더 많은 동기를 부여 받았습니다. 예를 들어, 전체 요청에 실패하면 사용자는 다시 시도해야하지만 여러 항목이 삭제되면 사용자는 작업을 완료 한 다음 관리자에게 나머지 작업을 수행하도록 요청할 수 있습니다 (버그 수정 작업 중) !). 이것은 허용 모드입니다.
이 문제에 대한 지침을 온라인에서 찾아 보았지만 빈손으로 왔습니다. 그래서 나는 당신에게 왔습니다.이 성격의 대량 작업에서 가장 기대되는 것은 무엇입니까? 더 엄격하게해야합니까, 아니면 더 관대해야합니까?