2011-12-14 3 views
0

A) 할아버지 - 아버지 - 아들 보관이 가능합니까? 예를 들어 우리는 모든 시간에 미리 계산 다음하고 싶은, 아무것도 다른 미리 계산하지 : 지난 주SQL 서버 : 할아버지 - 아버지 - 아들 보관

  • 매일 합계 이전 5~6주의
  • 주간 합계를 모두 이전 달의
  • 월 합계 우리가

주 예를 들어 개월 전이었다 하루의 일상 합계를하지. 우리는 일별 합계가 삭제되기를 원합니다.

색인 생성 된보기가이 용도로 충분할 것입니까? 모든 필드를 미리 계산하여 저장해야합니다.

B) 우리는 StackExchanges (및 일반적으로 Wikis) 버전 관리와 같은 몇 가지 기능을 원합니다. 어떻게하면 프로덕션 환경에서 이전 버전을 보관하고 최신 버전의 자료를 더 쉽게 사용할 수 있습니까? 우리는 Partitioning을 조사해 왔지만 복잡하지 않은 시나리오를 처리하는 것처럼 보이지 않습니다. (최신 버전보다 오래된 모든 버전이 필요하기보다는 X 날짜 이전에 모든 게시물이 분할되기를 원하지 않습니다)

이 문제에 대한 모범 사례는 무엇입니까?

+1

정의가 현재 날짜 (즉, 비 결정적 값)에 의존하므로 –

답변

1

A : SQL Server가 기본적으로 제공하지 않는 기능인 다양한 보존 기간/구형을 사용하여 시계열 데이터의 저장소를 설명합니다. 당신은 물론 비교적 쉽게이 전략 자신을 구축 할 수 있으며, 운이 좋게 당신은 인도를 오픈 소스 프로젝트에 몇 가지 좋은 사례가 있습니다

  1. RRD Tool - 시계열 데이터베이스 및 그래프 라이브러리를. 이러한 일반적인 용어로 말을 하드,하지만 아마 당신은 0 항상 최신 버전을 반영 테이블,상의 버전 컬럼을 유지할 수 있습니다 : -
  2. Graphite
  3. RRD 도구에서 영감을,

B에 의해 만들어. 때마다 새 버전을 승진 이 값을 증가시켜 다른 모든 버전을 내리십시오. 나이가 들수록 버전이 늘어나 결정적인 값 (버전 = 0)으로 필터링 된 인덱스를 만들 수 있으므로 현재 버전을 얻는 데 매우 효과적입니다.
그런 다음 날짜가 아닌 이전 버전의 버전을 기준으로 제거 할 수 있습니다. 그냥 delete yourTable where Version > 5입니다. 파티셔닝 스키마는이 방법을 사용해도 작동 할 수 있습니다.

+0

보다 늦은 것이 더 좋을 것입니다. :) –