2016-11-23 1 views
0

데이터 작업에 익숙하지 않습니다.MangoDB를 이용한 데이터 모델링?

그래서 시간이 많은 데이터가 있습니다.

15 분마다 데이터 행. 데이터베이스에서 1 시간, 1 일, 1 개월마다 데이터를 계산하고 데이터를 저장해야합니까?

이 스키마를 사용하면 좋습니다.

{ 
    _id: "joe", 
    name: "Joe Bookreader", 
    time min: [ 
       { 
        time: "1", 
        steps: "10" 
       }, 
       { 
        time: "2", 
        steps: "4" 
       } 
       ] 
    time day: [ 
       { 
        time: "1", 
        steps: "30" 
       }, 
       { 
        time: "2", 
        steps: "30" 
       } 
       ] 

} 

noSQL을 사용하여 데이터 모델링 지식을 향상시킬 수있는 방법에 대한 조언이 있으면 정말 감사 할 것입니다.

답변

0

프로그래밍 방식으로 문제를 해결하고 잠시 기다려주십시오.

데이터를 저장 한 후 어떻게 사용 하시겠습니까? 데이터를 사용할 때 특정 사용자의 정확한 단계 수를 알고 있거나 특정 샘플 시점을 기준으로 큰 그림을보고 싶다면 데이터를 사용해야합니다.

사용자 관점을 고려하는 경우 위의 계획이 효과적입니다. 반면에 특정 시간 동안 평균 (또는 전체) 사용자의 전체 위치와 같은 글로벌 보고서를 실행하려면 문서가 시간 (특정 시점 또는 특정 시간대) 인 스키마를 선택하고, 사용자와 단계가 귀하의 속성입니다.

데이터베이스의 또 다른 중요한 개념은 즉석에서 계산할 수있는 데이터를 정적으로 저장하는 것이 아닙니다. 모든 규칙과 마찬가지로 여기에는 몇 가지 예외가 있습니다. 수명이 짧고 올바르지 않은 응용 프로그램에 큰 영향을 미치지 않는 캐시 된 값과 같습니다. 또 다른 하나는 보고서이며 현재 값을 기반으로 사용자에 대한 보고서를 작성하고 저장했습니다. 사용자가 새로운 데이터를 가져 오는 것처럼 느껴지면 사용자는 보고서를 다시 실행합니다. (나는 다른 것들이 거의 없다.)

그러나 대부분의 경우 부적절한/잘못된 데이터를 제공하는 데 따르는 위험으로 인해 해당 데이터를 기반으로 잘못된 결정이 내려지면 추가 계산을 피하는 성능상의 이점보다 중요한 것입니다.

내가 이것을 언급하는 이유는 time mintime day을 저장하기 때문입니다. time daytime min을 기준으로 계산할 수 있다면 데이터베이스에 저장하지 말고 즉시 계산하십시오. 응용 프로그램 노드에서 추가 계산 능력을 사용하지 않고 time day의 실제 결과를 생성하는 쿼리를 작성할 수 있습니다. 모든 계산은 데이터 노드에서 계산 노드보다 훨씬 효율적이며 네트워크 페널티없이 수행됩니다.

나는이 게시물이 조금 오래되었음을 알고 있지만 내 대답이 도움이되기를 바랍니다.