문제

나가려고 결정하는 가장 좋은 방법에 대한 감사 기록에서 내 응용 프로그램이 있습니다.에 대한 주요 이유로 로그를 보고하는 이벤트의 시퀀스(변화).

나의 계층 구조,객체를 작성해야합 보고서에 변화가 일어났을 때 어떤 부분의 계층 구조,후자의 날짜.

내가 생각하는 세 가지 옵션이 있습니다:

  1. 로그 각 따라서 테이블과 일치하는 개체의 계층 구조 다음을 만들기에 대한 보고서입니다.
  2. 을 평평하게 계층 구조 및 de-프로그램에서는 테이블 보고 만들기 쉬운 선택한 문입니다.
  3. 한 로그 테이블 레코드를 위해 각 변경을 만들기보고 어렵지만 더 유연하게 변경합니다.

나는 현재 기울어져 옵션 1 을 선택합니다.

도움이 되었습니까?

해결책

감사 로그는 기본적으로 연대기적으로 발생한 이벤트 목록을 수행 하는 이러한 이벤트,그리고 무엇 이벤트이었다.

나는 생각한 평가를 더 나은 것으로 쉽게 할 수있는 주문과 조회됩니다.그래서 나는 기대를 향해 더 많은 옵션#2/#3.

것을 포함한 거래 유형,시간,사용자 id 를 설명의 변화,및 다른 관련된 정보 관련하여 확인하시기 바랍니다.

할 수도 있습니다 추가한 것을 귀하의 제품이 시간이 필요하지 않습을 지속적으로 수정의 감사 로그인 모듈입니다.

다른 팁

이 주제는 나이가 들었지만이 주제와 이야기해야합니다.

모든 것이 해당 테이블에 닿으므로 데이터베이스에서 잠금 문제를 일으키기 때문에 일반적으로 하나의 감사 테이블을 갖는 것은 일반적으로 잘못된 아이디어입니다. 각 테이블에 대해 별도의 감사 테이블을 사용하십시오.

또한 응용 프로그램이 감사를 수행하도록하는 것도 좋지 않습니다. 감사는 데이터베이스 수준에서 수행하거나 정보 중 일부를 잃을 위험이 있습니다. 데이터는 대부분의 데이터베이스의 응용 프로그램에서만 변경되지 않습니다. 아무도 10,000,000 명 모두에서 10% 증가가 필요할 때 사용자 인터페이스에서 한 번에 하나씩 모든 제품의 가격을 변경하지 않을 것입니다. 감사는 일부 변경 사항이 아닌 모든 변경 사항을 캡처해야합니다. 이는 대부분의 데이터베이스에서 트리거에서 수행해야합니다 (SQL Server 2008에는 내장 감사 기능이 있습니다). 최악의 잠재적 변경 사항 (사기를 저지르거나 데이터를 악의적으로 파괴하려는 직원) 중 일부는 특히 사용자에게 테이블 레벨에 액세스 할 수있는 경우 응용 프로그램 이외의 장소에서 자주 발생합니다 (금융 데이터베이스 또는 포함하는 것이 포함되지 않아야합니다. 개인 정보). 응용 프로그램의 감사는 이것을 포착하지 않습니다. 개발자는 종종 데이터를 보호 할 때 외부 소스만이 유일한 위협이 아니라는 것을 잊어 버립니다.

감사 목적이라면 동일한 DB의 테이블/테이블 대신 진정한 부록 전용 매체를 사용합니다.

변경 기록 목적을위한 것이 좋습니다. 즉, 현재 상태가 아닌 실제 이벤트를 처음으로 기록하기 위해 응용 프로그램/DB를 재구성합니다.

나는 (2)와 (3)과 함께 갈 것이다 : 모든 감사 항목에 대한 단일 테이블을 만듭니다.

추가 작업 평평이 성능에 영향을 미치지 않는 경우 평평한 전망이 좋습니다.

이를 돕기 위해 AOP 프레임 워크를 조사 할 수 있습니다. 모든 방법의 시작 또는 끝에서 로깅 기능을 주입 할 수 있습니다. 이 도로를 따라 가면 로그 데이터를 저장하는 데 적합한 내용을 정의하는 데 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top