2009-04-26 3 views
3

저는 중소 기업을위한 인트라넷 시스템을 설계하고 있습니다. 모든 모듈에 대해 하나의 로그 테이블을 유지해야합니까, 아니면 별도로 구성해야합니까?모듈에 대한 단일 집중식 로그 테이블 또는 분리형 로그 테이블?

감사 로그는 모든 관리/직원 작업 (생성, 업데이트, 삭제 개체)을 유지하며 로그 구조는 모든 종류의 모듈에 대해 보편적입니다.

또한 로그 레코드를 기반으로 보고서를 가져 오는 것이 좋습니다. 내 로그 테이블은 개체 유형과 개체 ID를 유지하므로 모든 개체에 대한 데이터를 가져올 수 있으며 이벤트, 개체 이름 및 개체 ID를 기반으로 언제든지 가져올 수 있습니다.

그런 경우 가장 효과적인 접근 방법은 무엇입니까?

답변

2

글쎄, 로그를 검토 할 때, 모든 것을 볼 수 있거나 여러 개의 다른 장소를 확인해야하는 곳을 살펴보십시오. 각각의 시스템은 하나의 시스템만을 보여줍니다.

단일 표를 사용하면 관련없는 항목이나 사용자가 볼 수있는 권한이없는 항목을 걸러내는 것이 쉽습니다. 하나의 포괄적 인보기로 여러 개의 개별 로그를 결합하는 것은 약간 까다 롭습니다. 또한 대부분의 설계에서 새로운 로그 테이블이 추가 될 때마다 결합을 수행하는 코드를 재검토해야한다는 단점이 있습니다.

확실히 단일 로그가 바람직하다고 말합니다. 여러 개의 분리 된 로그가 어디에 적합한 지 생각할 수있는 유일한 상황은 보안 문제가 서로 다른 가시성을 가진 로그 항목을 물리적으로 분리해야한다고 요구할 수있는 경우입니다. 그런 경우에는 별도의 로그 서버, 별도의 테이블이 아닙니다.

3

log4php을 참조하십시오. log4j은 로그 계층과 수준을 도입하여 많은 로깅 문제를 해결했습니다. log4php가 얼마나 좋은지는 모르겠지만 초보자 여야합니다.

3

하나의 테이블을 말하고 싶습니다.

모든 모듈에서 사용자 활동을 찾을 수 있습니다 (예 : 제대로 이해 한 경우). 어느 것이 하나의 테이블에 적합합니다.

로그 테이블을보고하는 것이 좋습니다. 별도의 보고서 데이터베이스로 오프로드하여 로깅 테이블의 경합 및로드를 줄입니다.

마지막으로 개체 이름과 형식을 명시 적으로 저장합니다 (데이터베이스 개체). DROP 및 CREATE를 실행하면 ID가 변경됩니다. 또는 테이블이 예를 들어보기가 될 수 있으므로 type 및 objectid가 모두 변경됩니다.

1

우리는 단일 테이블을 사용하고 특히 성능면에서 최상의 솔루션임을 입증했습니다. 특히 대규모 데이터 세트의 경우. 기성품 솔루션에 관심이 있으시면 this을 사용해보십시오.

관련 문제