파일 또는 데이터베이스 테이블에 로그 하시겠습니까?


12

사용자, 사용자 계정, 사용자 라이센스, 라이센스 가격, 송장 등 다양한 데이터에 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은 덜 자주 사용됩니다 (예 : 사용자 로그인 이벤트에만 사용)
    • 손쉬운 관리 : 데이터베이스에서 삭제 / 아카이브하는 대신 기존 로그 파일을 이동하여 연말과 같은 오래된 데이터를보다 쉽게 ​​보관

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

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


3
비즈니스 의사 결정에 사용되는 정보를 일반 로깅 정보와 분리해야합니다. 나중에 응용 프로그램에서 사용할 항목은 데이터베이스에, 다른 것은 로그 파일에 저장하십시오.
tom

1
log4net과 같은 잘 알려진 패키지를 사용하고 있다면 자신의 롤링보다는 좋은 아이디어 일 것입니다. 구성을 바꾸는 것만으로도 문제가 해결되지 않습니다. @tom-분리는 좋지만 라이브 데이터 용 데이터베이스와 로그 보관 용 데이터베이스 등 두 개의 데이터베이스가있는 이유는 무엇입니까?
Julia Hayward

2
OP는 월별 결제를위한 것이라고 말합니다. 따라서 결제 로직을 DB에 적용하는 것이 플랫 파일보다 훨씬 쉬울 것으로 기대 했습니까?
Julia Hayward

1
"데이터베이스"를 의미 할 때 "SQL"이라는 용어를 사용했습니다. 나는 약간의 수정을했다. SQL은 데이터베이스를 읽고 쓰는 데 사용하는 언어입니다. MS SQL Server는 RDBMS의 이름입니다. "SQL"만으로 "MS SQL Server 데이터베이스"를 의미하는 것은 아닙니다.
Tulains Córdova

1
@gnat 이것이 중복이라고 생각하지 않습니다. 다른 하나는 로깅 오류에 관한 것이지만 청구에 대한 사용량 로깅에 관한 것입니다 (이 경우에는 승인되고 승인 된 답변은 RDBMS를 사용하는 것입니다).
ChrisW

답변:


13

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

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

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


3
데이터베이스 사용의 또 다른 보너스는 특정 로깅에 대한 트리거를 이용하는 것입니다. 추가 코드가 필요하지 않습니다. 데이터가 테이블 A에 삽입되면 로그 메시지 X를 삽입하십시오.
Greg Burghardt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.