Tôi đang phát triển một ứng dụng web sử dụng MS SQL cho nhiều dữ liệu khác nhau: bao gồm người dùng, tài khoản người dùng, giấy phép người dùng, giá giấy phép, hóa đơn.
Tôi cần ghi nhật ký sử dụng hệ thống theo thời gian thực của người dùng và sử dụng hệ thống đó để thanh toán hàng tháng: ví dụ: đăng nhập bất cứ khi nào người dùng nhận được một trang / URL cụ thể và lập hóa đơn cho người dùng vào cuối tháng dựa trên số trang họ đã tìm nạp.
Tôi có nên viết các sự kiện nhật ký này vào một bảng trong cơ sở dữ liệu MS SQL của mình không?
Tôi có nên viết các sự kiện nhật ký này vào một tệp nhật ký không chỉ SQL không?
Tôi có nên viết các sự kiện nhật ký này vào một tệp nhật ký khác nhau cho mỗi người dùng không?
Đây không phải là một trang web có khối lượng đặc biệt cao: ví dụ: tối đa 10.000 người dùng, mỗi người thực hiện trung bình 5 sự kiện có thể đăng nhập / ngày => 50.000 sự kiện / ngày = 30 sự kiện / phút = 18.000.000 sự kiện / năm.
Tôi đang hỏi bởi vì một trong hai lựa chọn có vẻ khả thi và tôi không biết liệu ai có lợi thế rõ ràng hay không.
Dữ liệu liên quan đến một sự kiện có thể xuất hóa đơn rất đơn giản, ví dụ:
- ID người dùng (mối quan hệ khóa ngoài với bảng Người dùng trong SQL)
- Ngày và giờ
- URL của trang có thể xuất hóa đơn
Câu trả lời của riêng tôi cho câu hỏi này như sau:
Một số lợi ích của việc ghi nhật ký vào bảng cơ sở dữ liệu:
- Tính toàn vẹn quan hệ: ví dụ: các sự kiện đã ghi được liên kết với ID người dùng hợp lệ (bằng cách xác định ID người dùng là khóa ngoại giữa các bảng)
- Dễ đọc để thanh toán: ví dụ:
SELECT COUNT GROUP BY
để có được số lượng sự kiện nhật ký trên mỗi người dùng
Một số lợi ích của việc ghi vào tệp nhật ký:
- Hiệu suất dễ dàng hơn: SQL được sử dụng ít thường xuyên hơn, ví dụ: chỉ dành cho các sự kiện đăng nhập của người dùng và chủ yếu chỉ được sử dụng để đọc
- Quản lý dễ dàng hơn: dễ dàng hơn để lưu trữ dữ liệu cũ, ví dụ vào cuối năm, bằng cách di chuyển các tệp nhật ký cũ thay vì xóa / lưu trữ khỏi cơ sở dữ liệu
Xin vui lòng cho tôi biết nếu câu trả lời của tôi là sai; hoặc phóng đại tầm quan trọng của một cái gì đó; hoặc đã quên một số xem xét quan trọng.
Và / hoặc xin vui lòng cho tôi biết câu trả lời của bạn là gì, nếu nó khác với tôi.