InfoGrab DocsInfoGrab Docs

시간 감쇠 데이터

데이터베이스 확장성 패턴 중 시간 감쇠(time-decay) 데이터의 특성과 GitLab 개발에서의 모범 사례를 설명합니다.

이 문서는 time-decay 패턴 을 설명합니다. 이 패턴은 Database Scalability Working Group 에서 도입했습니다. 여기서는 time-decay 데이터의 특성을 살펴보고, 이 컨텍스트에서 GitLab 개발 시 고려할 모범 사례를 제안합니다. 일부 데이터셋은 강한 time-decay(시간 감쇠) 효과를 받습니다. 즉 최근 데이터가 오래된 데이터보다 훨씬 자주 조회됩니다. time-decay에는 다른 측면도 있습니다. 시간이 지나면서 일부 유형의 데이터는 덜 중요해집니다. 따라서 오래된 데이터를 내구성이 조금 낮은(가용성이 낮은) 스토리지로 옮기거나, 극단적인 경우에는 삭제할 수도 있습니다. 이러한 효과는 대체로 제품이나 애플리케이션의 의미 체계와 맞물려 있습니다. 오래된 데이터가 조회되는 정도, 그리고 오래된 데이터가 사용자나 애플리케이션에 얼마나 유용하거나 필요한지에 따라 달라질 수 있습니다. 먼저 데이터에 시간과 관련된 편향이 본질적으로 없는 엔터티를 생각해 봅니다. 사용자나 프로젝트 레코드는 생성 시점과 관계없이 동일하게 중요하고 자주 조회될 수 있습니다. 사용자의 id 나 created_at 으로는 해당 레코드가 얼마나 자주 조회되거나 업데이트되는지 예측할 수 없습니다. 반면 time-decay 효과가 극단적으로 나타나는 데이터셋의 좋은 예는 로그와 시계열 데이터입니다. 사용자 동작을 기록하는 이벤트가 여기에 해당합니다. 대부분의 경우 이러한 유형의 데이터는 며칠 또는 몇 주가 지나면 업무상 쓰임새가 없어지고, 데이터 분석 관점에서도 빠르게 덜 중요해집니다. 이 데이터는 스냅숏에 해당하므로 애플리케이션의 현재 상태와의 관련성이 빠르게 줄어들고, 어느 시점에는 실질적인 가치가 없어집니다. 두 극단의 중간에는, 보관해 두고 싶은 유용한 정보를 담고 있으면서도 생성 후 초기의 (짧은) 기간이 지나고 나면 오래된 레코드는 거의 조회되지 않는 데이터셋이 있습니다. time-decay 데이터의 특성 # 다음 특성을 보이는 데이터셋을 대상으로 합니다. 데이터셋 크기 : 상당히 큽니다. 접근 방식 : 데이터셋에 접근하는 쿼리의 대부분을 시간 관련 차원이나 time-decay 효과가 있는 범주형 차원으로 필터링할 수 있습니다. 불변성 : time-decay 상태가 바뀌지 않습니다. 보존 : 오래된 데이터를 보관할지 여부, 그리고 오래된 데이터를 애플리케이션을 통해 사용자가 계속 조회할 수 있어야 하는지 여부입니다. 데이터셋 크기 # 강한 time-decay 효과를 보이는 데이터셋은 크기가 다양할 수 있지만, 이 블루프린트에서는 데이터셋이 상당히 큰 엔터티에 초점을 맞춥니다. 작은 데이터셋은 데이터베이스 관련 리소스 사용량에 크게 기여하지 않고, 쿼리에 상당한 성능 부담을 주지도 않습니다. 반면 약 5,000만 레코드 또는 100GB를 넘는 큰 데이터셋은, 아주 작은 부분집합에 계속 접근하는 데에도 상당한 오버헤드를 더합니다. 이런 경우에는 time-decay 효과를 활용해 실제로 조회되는 데이터셋을 줄이는 편이 좋습니다