Tôi đang cố gắng triển khai cơ chế lưu trữ tệp chứa một số bản ghi có kích thước khác nhau trong một tệp với bảo đảm rằng tập hợp các bản ghi sẽ luôn có thể phục hồi thành trạng thái nhất quán, ngay cả khi hệ thống không thành công ở phần cứng cấp độ.Dữ liệu trong tệp ánh xạ bộ nhớ có được bảo đảm để tuôn ra tuần tự không?
Cho đến giờ, mọi chương trình tôi đã đưa ra các mưu đồ về ghi dữ liệu tuần tự. Một số mẩu dữ liệu sẽ được nối vào cuối mỗi bản ghi để xác nhận rằng quá trình ghi đã thành công. Tuy nhiên, nếu dữ liệu không nhất thiết được ghi vào đĩa liên tiếp khi được xóa thì có thể ghi dữ liệu xác nhận trước dữ liệu nội dung.
Có hai cách rõ ràng xung quanh này, nhưng cả hai đều không mong muốn:
- Xối ngay nội dung, sau đó viết thư xác nhận và tuôn nó. Thêm tuôn ra thêm có thể làm giảm hiệu suất.
- Bao gồm tổng kiểm tra trong xác nhận (sẽ yêu cầu đọc nội dung để xác nhận rằng nó hợp lệ).
Tôi đang sử dụng C# trên Windows (32 và 64-bit) và Net 4.0 của bộ nhớ ánh xạ tập tin thực hiện
Ý tưởng thứ hai (xác minh dữ liệu , dấu thời gian, số thứ tự và kiểm tra) có vẻ hợp pháp. Tuy nhiên, nói chung, bạn nên xem xét các nhóm khả dụng cao, với các máy riêng biệt trên mạng. Tất cả các bản ghi hoặc ghi nhật ký cần phải được nhân rộng qua mạng đến hai hoặc nhiều máy. Bạn không thể trích xuất bất kỳ bảo đảm nào từ một máy tính, thời gian. – rwong