5
ความล้มเหลวเดียวควรล้มเหลวในการดำเนินการเป็นกลุ่ม?
ใน API ฉันทำงานอยู่มีการดำเนินการลบจำนวนมากซึ่งยอมรับอาร์เรย์ของ ID: ["1000", ..., "2000"] ฉันมีอิสระที่จะใช้การดำเนินการลบตามที่ฉันเห็นสมควรดังนั้นฉันตัดสินใจที่จะทำธุรกรรมทั้งหมด: นั่นคือถ้า ID เดียวไม่ถูกต้องคำขอทั้งหมดล้มเหลว ฉันจะเรียกสิ่งนี้ว่าโหมดเข้มงวด try{ savepoint = conn.setSavepoint(); for(id : IDs) if( !deleteItem(id) ){ conn.rollback(savepoint); sendHttp400AndBeDoneWithIt(); return; } conn.commit(); } ทางเลือก (นำไปใช้ที่อื่นในชุดซอฟต์แวร์ของเรา) คือทำสิ่งที่เราทำได้ในแบ็กเอนด์และรายงานความล้มเหลวในอาเรย์ ส่วนหนึ่งของซอฟต์แวร์นั้นเกี่ยวข้องกับคำขอที่น้อยลงดังนั้นการตอบสนองจึงไม่ได้กลายเป็นอาร์เรย์ขนาดใหญ่ ... ในทางทฤษฎี ข้อผิดพลาดล่าสุดที่เกิดขึ้นในเซิร์ฟเวอร์ที่มีทรัพยากรต่ำทำให้ฉันดูรหัสอีกครั้งและตอนนี้ฉันตั้งคำถามกับการตัดสินใจเดิมของฉัน - แต่คราวนี้ฉันมีแรงจูงใจมากขึ้นตามความต้องการทางธุรกิจมากกว่าแนวทางปฏิบัติที่ดีที่สุด ตัวอย่างเช่นถ้าฉันล้มเหลวในการร้องขอทั้งหมดผู้ใช้จะต้องลองอีกครั้งในขณะที่หากมีการลบรายการจำนวนหนึ่งผู้ใช้สามารถดำเนินการให้เสร็จสิ้นแล้วขอให้ผู้ดูแลระบบทำส่วนที่เหลือ (ในขณะที่ฉันแก้ไขข้อผิดพลาด !) นี่จะเป็นโหมดที่ได้รับอนุญาต ฉันพยายามหาคำแนะนำเกี่ยวกับเรื่องนี้ทางออนไลน์ แต่ฉันกลับมามือเปล่า ดังนั้นฉันมาหาคุณ: สิ่งที่คาดหวังมากที่สุดจากการดำเนินการเป็นจำนวนมากในลักษณะนี้? ฉันควรจะเข้มงวดมากขึ้นหรือฉันควรจะได้รับอนุญาตมากขึ้น?