Một trong những ứng dụng tôi duy trì có cấu trúc tương tự nhưng thêm vào đó bằng cách có bảng application_event_type
ID,VALUE
0,CREATE
1,ASSIGN
3,UPDATE
2,DELETE
4,UNASSIGN
5,APPROVE
6,MARK_AS_DUPLICATE
và bảng tổng thể trông như thế này
CREATE TABLE APPLICATION_LOGGING
(
ID NUMBER(9) NOT NULL,
CURRENT_USER_ID NUMBER(9),
EVENT_ID NUMBER(9) NOT NULL,
ENTRY_DATE DATE NOT NULL,
MESSAGE VARCHAR2(200 CHAR) NOT NULL,
MESSAGE_PARAMETERS VARCHAR2(2000 CHAR) NOT NULL
)
Tôi thấy rằng đăng nhập là một cái gì đó mà nhiều người quan tâm hơn tôi mong đợi. Người quản lý muốn biết ai đã làm gì. Đối với họ, một mục nhật ký khó hiểu là không đủ. Message và Message_parameter là các chuỗi văn bản dài với quá nhiều thông tin. Tôi đã phải tạo một bảng liên kết cô đọng thông điệp và thông điệp tin nhắn sang tiếng Anh hoặc tiếng Pháp
CREATE TABLE APPLICATION_LOGGING_NEW
(
ID NUMBER(10) NOT NULL,
LOG_ID VARCHAR2(50 BYTE) NOT NULL,
EVENT_ID NUMBER(10),
MESSAGE VARCHAR2(500 BYTE) NOT NULL,
LOCALE_ID NUMBER(10) DEFAULT 2 NOT NULL,
LOG_TYPE NUMBER(10) DEFAULT 1 NOT NULL,
DATE_CREATED TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
CREATED_BY_USER_ID NUMBER(9) DEFAULT 355 NOT NULL,
DATE_LAST_MODIFIED TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
LAST_MODIFIED_BY_USER_ID NUMBER(9) DEFAULT 355 NOT NULL
)
Một cơ sở dữ liệu khác mà tôi làm việc có đăng nhập rộng rãi. Bất cứ khi nào bạn "nhìn" vào một cái gì đó chèn là xong. Đây có vẻ là một tính năng tuyệt vời nhưng bảng ghi nhật ký hiện gấp ba lần kích thước của năm bảng lớn nhất. Truy vấn và chèn bảng này có ảnh hưởng nhất định đến hiệu suất.
Ghi nhật ký là một nghệ thuật tốt: quá nhiều và bạn có thể ảnh hưởng đến hiệu suất, không đủ và bạn không thể trả lời một câu hỏi hợp lý. Đó là giá trị đầu tư thời gian để tìm sự cân bằng phù hợp.