Observable external write là gì?
- ★
- ★
- ★
- ★
- ★
Chúng ta phải thận trọng khi xử lý các thao tác ghi bên ngoài có thể quan sát được (observable external write), chẳng hạn như ghi vào màn hình của người dùng hoặc gửi email. Khi một lần ghi như vậy đã xảy ra, nó không thể bị xóa vì nó có thể đã được nhìn thấy bên ngoài hệ cơ sở dữ liệu (database system). Hầu hết các hệ thống chỉ cho phép ghi như vậy sau khi giao dịch (transaction) đã chuyển sang trạng thái lưu trữ hoàn tất (committed state). Một cách để thực hiện một lược đồ (scheme) như vậy là hệ cơ sở dữ liệu lưu trữ tạm thời bất kỳ giá trị nào được liên kết với các thao tác ghi bên ngoài đó trong một quan hệ (relation) đặc biệt trong cơ sở dữ liệu (database) và chỉ thực hiện việc ghi thực tế sau khi giao dịch đi vào trạng thái đã cam kết. Nếu hệ thống bị lỗi (fail) sau khi giao dịch đã vào trạng thái lưu trữ hoàn tất, nhưng trước khi nó có thể hoàn thành thao tác ghi bên ngoài, hệ cơ sở dữ liệu sẽ thực hiện thao tác ghi bên ngoài (sử dụng dữ liệu trong bộ lưu trữ không bay hơi (non-volatile storage)) khi hệ thống được khởi động lại.
Xử lý các thao tác ghi bên ngoài có thể phức tạp hơn trong một số tình huống. Ví dụ: hãy xem xét một người dùng đặt chỗ qua web. Có thể xảy ra trường hợp hệ cơ sở dữ liệu hoặc máy chủ ứng dụng (application server) gặp sự cố ngay sau khi giao dịch đặt chỗ được thực hiện. Cũng có thể kết nối mạng với người dùng bị mất ngay sau khi thực hiện giao dịch đặt vé. Trong cả hai trường hợp, mặc dù giao dịch đã được commit, thao tác ghi bên ngoài vẫn chưa diễn ra. Để xử lý các tình huống như vậy, ứng dụng phải được thiết kế sao cho khi người dùng kết nối lại với ứng dụng web, họ sẽ có thể biết liệu giao dịch của mình đã thành công hay chưa.
Learning English Everyday