Oracle database change notification feature gửi hàng rào (địa chỉ hàng thực) trên chèn, cập nhật và xóa hàng. Như được chỉ ra trong tài liệu của oracle, ứng dụng này có thể được ứng dụng sử dụng để xây dựng một cache tầng giữa. Nhưng điều này dường như mâu thuẫn khi chúng ta có một cái nhìn chi tiết về cách id hàng hoạt động.Thông báo thay đổi cơ sở dữ liệu Oracle và ROWID
ROWID (địa chỉ hàng thực) có thể thay đổi khi các hoạt động cơ sở dữ liệu khác nhau được thực hiện như được chỉ ra bởi this stackoverflow thread. Ngoài ra, như tom đề cập đến trong bảng thread cụm này có thể có cùng một rowid.
Dựa trên nghiên cứu trên, có vẻ như không an toàn khi sử dụng hàng được gửi trong khi thông báo thay đổi cơ sở dữ liệu là khóa trong bộ nhớ cache của ứng dụng phải không? Điều này cũng đặt ra một câu hỏi - Tính năng thông báo thay đổi cơ sở dữ liệu có nên được sử dụng để xây dựng bộ nhớ cache của máy chủ ứng dụng không? hoặc là một khuyến nghị được thực hiện để khởi động lại tất cả các cụm máy chủ ứng dụng (để tải lại/làm mới bộ nhớ đệm) khi các bảng của các đối tượng được lưu trong bộ nhớ cache trải qua bất kỳ hoạt động nào dẫn đến thay đổi của rowid? Đó có phải là một giả thiết tốt cho môi trường sản xuất không?
Tại sao bạn không dựa vào các thực thể nghiệp vụ/thuộc tính miền? – zerkms
Tôi không hoàn toàn hiểu đề xuất của bạn. Với thông báo thay đổi cơ sở dữ liệu, oracle chỉ gửi rowid cho các hàng được chèn/cập nhật. Nó không thể được cấu hình để cung cấp bất kỳ thông tin cột nào khác trong bảng đó. –
có, và tại sao bạn không tạo lớp lưu trữ trong Lớp Truy cập Dữ liệu của bạn, dựa vào dữ liệu nghiệp vụ, không liên quan đến lưu trữ. Bạn có nghĩ rằng bạn có thể cache dữ liệu tốt hơn oracle không? – zerkms