Eine der von mir verwalteten Anwendungen hat eine ähnliche Struktur, ergänzt sie jedoch durch eine application_event_type-Tabelle
ID,VALUE
0,CREATE
1,ASSIGN
3,UPDATE
2,DELETE
4,UNASSIGN
5,APPROVE
6,MARK_AS_DUPLICATE
und der Mastertisch sieht so aus
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
)
Ich fand, dass die Protokollierung etwas ist, an dem mehr Menschen interessiert sind, als ich erwartet hätte. Manager wollen wissen, wer was getan hat. Für sie reichte ein kryptischer Protokolleintrag nicht aus. Message und Message_parameters waren lange Textzeichenfolgen mit zu vielen Informationen. Ich musste eine Verknüpfungstabelle erstellen, die die Nachricht und die Nachrichtenparameter auf Englisch oder Französisch verdichtete
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
)
Eine andere Datenbank, mit der ich arbeite, verfügt über eine umfangreiche Protokollierung. Jedes Mal, wenn Sie sich etwas "ansehen", wird eine Einfügung durchgeführt. Dies schien eine großartige Funktion zu sein, aber die Protokollierungstabelle ist jetzt dreimal so groß wie die fünf größten Tabellen. Das Abfragen und Einfügen dieser Tabelle wirkt sich eindeutig auf die Leistung aus.
Protokollierung ist eine gute Kunst: Zu viel und Sie können die Leistung beeinträchtigen, nicht genug und Sie können keine vernünftige Frage beantworten. Es lohnt sich, die Zeit zu investieren, um das richtige Gleichgewicht zu finden.