2009-04-26 5 views
3

Ich entwerfe ein Intranet-System für mittlere Unternehmen. Soll ich eine einzelne Protokolltabelle für alle Module aufbewahren oder separat machen?Einzelne zentrale oder getrennte Protokolltabelle für Module?

Audit-Protokoll behält alle Admin-/Mitarbeiteraktivitäten (erstellen, aktualisieren, löschen von Objekten) und die Protokollstruktur ist universell für jede Art von Modul.

Und ist es auch eine gute Idee, wenn ich Bericht basierend auf Protokolldatensätzen ziehen? Meine Protokolltabelle enthält den Objekttyp und die Objekt-ID, sodass ich Daten für jedes Objekt und jederzeit basierend auf dem Ereignis, dem Objektnamen und der Objekt-ID abrufen kann.

Was ist der beste Ansatz für die Berichterstattung in solchen Fällen?

Antwort

2

Nun, wenn Sie Ihre Protokolle überprüfen, was würden Sie lieber tun, suchen Sie an einem Ort, wo Sie alles sehen können oder müssen Sie mehrere verschiedene Orte überprüfen, von denen jeder nur ein Stück des Systems isoliert zeigt?

Denken Sie daran, dass es bei einer einzelnen Tabelle trivial ist, Einträge herauszufiltern, die irrelevant sind oder für die der Benutzer keine Berechtigung zum Anzeigen hat. Die Kombination mehrerer einzelner Protokolle in einer einzigen, umfassenden Ansicht ist ein wenig komplizierter und hat außerdem den zusätzlichen Nachteil, dass Sie bei den meisten Entwürfen jedes Mal, wenn eine neue Protokolltabelle hinzugefügt wird, den Code erneut aufrufen müssen, der die Kombination durchführt.

Ich sage definitiv ein einzelnes Protokoll ist vorzuziehen. Die einzige Situation, die mir einfällt, wenn mehrere getrennte Protokolle geeignet wären, wäre, wenn die Sicherheitsbedenken stark genug wären, um Protokolleinträge mit unterschiedlicher Sichtbarkeit physisch voneinander trennen zu müssen - und in einem solchen Fall würden Sie wahrscheinlich getrennt suchen Log-Server, nicht nur separate Tabellen.

3

Siehe log4php. log4j löste einen Großteil der Protokollierungsprobleme, indem Protokollhierarchie und -ebenen eingeführt wurden. Ich weiß nicht, wie gut log4php ist, aber es sollte ein Starter sein.

3

Ich würde sagen, eine Tabelle.

Vielleicht möchten Sie Benutzeraktivität über alle Module zum Beispiel finden (wenn ich das richtig verstehe). Das eignet sich für einen Tisch.

Berichterstattung von Ihrer Protokolltabelle wäre in Ordnung. Sie werden in eine separate Berichtsdatenbank ausgelagert, um Konflikte zu vermeiden und die Protokolltabelle zu laden.

Schließlich würde ich Objektname und -typ explizit speichern (Datenbankobjekte). Wenn Sie DROP und CREATE dann ändert sich die ID. Oder eine Tabelle kann zum Beispiel zu einer Ansicht werden, so dass sich sowohl der Typ als auch die Objekt-ID ändern.

1

Wir verwenden Single Table und es erwies sich als die beste Lösung, besonders in der Leistung. Und besonders bei großen Datenmengen. Wenn Sie an einer Lösung von der Stange interessiert sind, versuchen Sie es mit this.

Verwandte Themen