Tôi có một ứng dụng máy chủ được thực hiện trong Erlang. Trong đó tôi có một bảng miaia lưu trữ một số thông tin về ảnh. Theo tinh thần "tất cả mọi thứ là một quá trình " Tôi quyết định bọc bảng đó trong mô-đun gen_server
, để mô-đun gen_server
là mô-đun duy nhất truy cập trực tiếp vào bảng. Truy vấn và thêm thông tin vào bảng đó được thực hiện bằng cách gửi thư đến quá trình đó (có tên đã đăng ký). Ý tưởng là sẽ có một số khách hàng xử lý thông tin truy vấn từ bảng đó.Sử dụng gen_server để đóng gói bảng mnesia?
Điều này chỉ hoạt động tốt, nhưng mô-đun gen_server
không có trạng thái. Mọi thứ cần có yêu cầu được lưu trữ trong bảng mnesia. Vì vậy, tôi tự hỏi nếu một gen_server
có lẽ là không phải là mô hình tốt nhất để đóng gói bảng đó?
Tôi có nên đơn giản là không làm cho nó trở thành một quá trình, và thay vào đó chỉ đóng gói bảng thông qua các chức năng trong mô-đun đó? Trong trường hợp xảy ra lỗi trong mô-đun đó, sẽ khiến quá trình gọi bị lỗi, điều tôi nghĩ có thể tốt hơn, vì nó sẽ chỉ ảnh hưởng đến một khách hàng, trái ngược với bây giờ, khi nó gây ra quy trình gen_server
sự cố, để mọi người không có quyền truy cập vào bảng (cho đến khi người giám sát khởi động lại nó).
Bất kỳ đầu vào nào được đánh giá cao.