파일 또는 데이터베이스 테이블에 로그 하시겠습니까? 하나의 확실한 이점이 있는지

사용자, 사용자 계정, 사용자 라이센스, 라이센스 가격, 송장 등 다양한 데이터에 MS SQL을 사용하는 웹 응용 프로그램을 개발 중입니다.

사용자의 실시간 시스템 사용량을 기록하고이를 월별 청구에 사용해야합니다. 예를 들어 사용자가 특정 페이지 / URL을받을 때마다 기록하고 월말에 가져온 페이지 수를 기준으로 사용자에게 청구합니다.

  • 이 로그 이벤트를 MS SQL 데이터베이스의 테이블에 작성해야합니까?

  • 이러한 로그 이벤트를 SQL이 아닌 추가 전용 로그 파일에 작성해야합니까?

  • 이 로그 이벤트를 각 사용자마다 다른 로그 파일에 작성해야합니까?

이 사이트는 특히 대용량 웹 사이트가 아닙니다. 예를 들어, 각각 최대 5 개의 기록 가능한 이벤트 / 일 => 50,000 개의 이벤트 / 일 = 30 개의 이벤트 / 분 = 18,000,000 개의 이벤트 / 년을 수행하는 최대 10,000 명의 사용자.

두 옵션 중 하나가 실행 가능한 것으로 보이며 하나의 확실한 이점이 있는지 알 수 없기 때문에 묻습니다.

청구 가능 이벤트와 관련된 데이터는 간단합니다. 예 :

  • 사용자 ID (SQL의 Users 테이블에 대한 외래 키 관계)
  • 날짜와 시간
  • 청구 가능 페이지의 URL

이 질문에 대한 나의 대답은 다음과 같습니다.

  • 데이터베이스 테이블에 로그를 작성하면 다음과 같은 이점이 있습니다.

    • 관계 무결성 : 예 : 로그 된 이벤트는 유효한 사용자 ID와 연관됩니다 (테이블 사이의 외부 키로 사용자 ID를 정의하여)
    • 청구를 쉽게 읽을 수 있습니다. 예 : SELECT COUNT GROUP BY사용자 당 로그 이벤트 수 계산
  • 로그 파일에 기록하면 다음과 같은 이점이 있습니다.

    • 더 쉬운 성능 : SQL은 덜 자주 사용됩니다 (예 : 사용자 로그인 이벤트에만 사용)
    • 손쉬운 관리 : 데이터베이스에서 삭제 / 아카이브하는 대신 기존 로그 파일을 이동하여 연말과 같은 오래된 데이터를보다 쉽게 ​​보관

내 대답이 틀렸다면 알려주십시오. 또는 무언가의 중요성을 과장하거나; 또는 중요한 고려 사항을 잊어 버렸습니다.

그리고 / 또는 귀하의 답변이 저와 다른 경우 알려주십시오.



답변

청구 목적으로이 정보를 사용하고 있기 때문에 데이터베이스에서 쉽게 쿼리, 집계,보고 및 다른 데이터를 결합 할 수없는 이유를 알 수 없습니다.

또한 별도의 로그 파일보다 로그 정보가 포함 된 단일 데이터베이스 테이블을 유지 관리하는 것이 훨씬 쉽다고 생각합니다. 서버의로드에 대한 우려와 동일합니다. 플랫 파일에 데이터를 유지하는 것보다 처리 방법이 훨씬 좋습니다.

세 번째 옵션은 두 가지를 모두 수행하는 것입니다. 대부분의 요구에 데이터베이스를 사용하지만 감사 목적으로 로그 파일을 사용하십시오.