2009-05-19 1 views
0

설정 속도 (매분, 매 5 초, 매 10ms 등)로 수집 된 데이터의 로그를 유지하는 "최선"(올바른, 표준 등) 방법은 무엇입니까? 오라클 데이터베이스에서?오라클 (또는 임의의 RDBMS)을 통한 데이터 로깅

모든 데이터 포인트에 대해 7 바이트 DATE 값을 저장하는 것은 비효율적입니다 (특히 주파수가 증가함에 따라). 그러나 일부 형식의 원시 형식으로 데이터를 압축하면 데이터에 대한 통계 및 기타 계산이 더 어려워집니다.

이 질문은 모든 RDBMS에 적용하기에는 일반적이지만이 경우 Oracle을 사용하고 있습니다.

답변

2

1 테라 바이트 디스크의 가격은 얼마이며, 정말로 노력할 가치가있는 7 바이트를 압축하고 있습니까? 시간을 기반으로 로그에 대한 통계 및 보고서를 계산하려는 경우 SQL 쿼리에서 사용할 날짜의 압축을 해제하는 것이 매우 어려워 질 것입니다.

오라클은 테이블에 데이터를 기록하기 만하면됩니다. 너무 많이 로그하지 않거나 너무 많은 인덱스를 로그 테이블에 두지 마십시오. 로그 테이블이 1 일부터 관리 가능한 크기로 분할되어 있는지 확인하십시오. 생성되는 데이터의 양에 따라 일별, 주별 또는 월별 파티션이 될 수 있습니다. 1 일째부터 가사 정책을 디자인하십시오.

데이터가 새 파티션으로 들어가기 시작하면 '마침표'끝에 새 파티션을 추가 할 때 'alter partition move compress'를 사용하여 데이터를 압축하여 더 적은 공간에 온라인으로 저장하도록 고려할 수 있습니다 .

다양한 옵션이 있습니다. 최상의 솔루션을 찾으려면 시도해야하는 요구 사항을 고려해야합니다. 현재 진행중인 작업에 따라 파일 로깅도 옵션 일 수 있습니다. 단, 수천, 수천 개의 파일을 단일 디렉토리에 저장하면 문제가 발생할 수 있습니다.

0

수집 된 각 데이터 행은 독자적으로 서 있어야하기 때문에 Unix 타임 스탬프와 같은 것을 사용하기로 선택하지 않는 한 전체 DATE 값을 기록해야합니다 (1970-01-01 00부터 정수 초). 00 : 00Z, 또는 다른 적절한 에포크 또는 기준점). 이것은 신기원의 양면에 68 년의 기간을주기 위해 4 바이트로 맞습니다 (32 비트 정수로 가정). 꽤 편리하지는 않지만 비교적 컴팩트합니다.

+0

왜 귀찮은가요? 그것은 공간 절약의 작은 금액입니다. "상당히 편리하지 않다"는 말은 나에게 삼가면서 말하는 것처럼 보인다. SQL 날짜 기능을 사용하려면 수동 변환이 필요하며 특별한 색인 전략이 필요합니다. – RussellH

+0

나는 어느 쪽도 괴롭히지 않을 것이다. 그러나 나는 질문하는 사람이 아니다. 누가 공간에 대해 염려하는 것 같다. 더 적은 양을 저장하면 디스크 공간이 절약됩니다. 심지어 테라 바이트의 디스크라도 충분한 데이터가 들어 오면 충분히 작은 행 크기에서 3 바이트의 오버 헤드가 합산 될 수 있습니다. 기록 된 정보가 3 바이트 절약을 무시할 수있을만큼 충분히 크고 그렇다면 전체 DATE 유형을 사용하십시오. –

+0

적절한 함수를 사용하여 쿼리를 수행하는 것이 어렵지 않습니다. 어쨌든 오라클이 제공하는 것에 달려 있습니다. 오라클의 날짜/시간 함수에 대한 상세한 설명을하기에 충분하지 않습니다. –