Khi ứng dụng hoặc cơ sở dữ liệu đột ngột gặp sự cố giữa việc áp dụng giao dịch cho A và áp dụng giao dịch cho B, sẽ vẫn có một giao dịch có state:"pending"
trong bộ sưu tập giao dịch toàn cầu. Tập lệnh khôi phục mà bạn chạy sau sự cố sẽ nhận thấy điều này, hãy kiểm tra hai tài khoản và thấy rằng có một giao dịch đang chờ xử lý trong một tài khoản, nhưng không phải tài khoản kia. Bây giờ nó biết mọi thứ nó cần biết để khôi phục giao dịch hoặc cố gắng hoàn thành nó.
Vâng, viết một tập lệnh khôi phục thông minh không hề đơn giản. Nhưng các giao dịch trong một hệ thống cơ sở dữ liệu không được thiết kế cho chúng luôn khó khăn. Đôi khi bạn có thể giải quyết việc yêu cầu các giao dịch trong MongoDB bằng cách thiết kế tài liệu của mình theo cách mà các trường cần được cập nhật cùng nhau luôn nằm trong cùng một tài liệu, nhưng không phải lúc nào cũng có cách tốt để thực hiện điều này. Khi trường hợp sử dụng của bạn thực sự cần các giao dịch, hãy bảo vệ sự tỉnh táo của bạn và sử dụng cơ sở dữ liệu quan hệ.