2012-11-02 3 views
3

GPS 추적 응용 프로그램에 대한 데이터 모델 질문이 있습니다. 누군가가 우리의 응용 프로그램을 사용하면 위도, 경도, 현재 속도, 타임 스탬프 및 burned_calories가 매 5 초마다 저장됩니다. 운동이 완료되면 운동의 평균 속도, 총 시간/거리 및 연소 칼로리가 데이터베이스에 저장됩니다. 지금까지 너무 좋아 ..mysql 데이터베이스에 추적 응용 프로그램의 GPS 데이터를 저장하는 모범 사례

우리가 원하는 것은 또한 그 5 초마다 저장되어있는 데이터를 저장하는 것입니다, 그래서 우리는 예를 들어 운동의 그래프/차트를 플롯 나중에이를 활용할 수 있습니다.

데이터 량을 데이터베이스에 어떻게 저장해야합니까? 한 운동을 누군가가 한 시간 동안 실행하면 720 행을 포함 할 수 있습니다. 아마도 직렬화 된/gz 압축 된 데이터 배열을 단일 행에 넣었을 것입니다. 나는 많은 모델에 많은

관계형 하나가/취소 할 것입니다 ..이 나쁜 관행이라고하지만 알고 있어요? MySQL이 많은 양의 데이터를 쉽게 처리 할 수 ​​있다는 것을 알고 있지만, 720 * 운동에 대해 말하고 있습니다. 주당 7000 명의 사용자 = 일주일에 천만 행 이상. (Ofcourse는 행 수 또는 20 초 등을 반으로 줄이기 위해 매 10 초의 데이터 만 저장할 수 있지만 시간이 지남에 따라 여전히 많은 양의 데이터가 될 것이고 그래프의 정확성이 떨어질 것입니다)

어떻게 하시겠습니까? 미리 감사드립니다.

+0

질문은 가장 확실히, Programmers.se에 요청해야합니다. 사실상 "_Best pratice_"로 시작하는 모든 질문은이 사이트의 주제와 관련이없는 것으로 간주 될 수 있습니다. [내 예제 질문] (http://programmers.stackexchange.com/q/284637/57759)을 살펴보십시오.또한 [주어진 응답] (http://programmers.stackexchange.com/a/285239/57759)은 여기에서 묻는 자신 만의 문제에 대한 흥미로운 견해입니다. – trejder

+2

@trejder 다른 사이트를 언급 할 때 종종 [cross-posting이 싫어하는 곳]이라고 지적 할 가치가 있습니다. (http://meta.stackexchange.com/tags/cross-posting/info) – gnat

+0

@gnat 물론, 권리. 나를 위해 "거기 묻는다"는 너무나 분명하고 좁은 편이어서 "여기에서 물어 보아라, 여기에서 지워라."이렇게 쉽게 잊어 버린다. 감사합니다, 이것을 지적하십시오. – trejder

답변

6

그냥 몇 가지 아이디어 :

  1. 당신의 위도/경도 데이터를 퀀 타이즈. 기술적 인 이유로 데이터가 이미 양자화 될 가능성이 높습니다. 따라서 양자화를 감지 할 수 있다면이를 사용할 수 있습니다. 여기서 생각하는 것은 더블 숫자를 합리적인 정수로 변환하는 것입니다. 최악의 경우 64 비트 정수를 사용한다는 의미 인 정밀 더블 숫자로 퀀 타이즈 할 수도 있지만 데이터가 그 정도의 해상도에 가까운 지 의심 스럽습니다. 아마도 약 1 미터 길이의 간단한 그리드로 충분할 것입니까?
  2. 차이점을 계산하십시오. 대부분의 수치는 절대 값의 측면에서 상당히 클 것이지만, 서로 아주 가깝습니다 (회원이 세계 반 정도를 달리지 않는 한 ...). 그래서 이것은 약간의 숫자가 될 것입니다. 또한 사람들이 일정한 속도로 일정한 방향으로 달리는 한, 당신은 종종 동일한 차이점을 보게 될 것입니다. 1 단계에서 공간 격자가 더 거칠수록 더 많은 차이를 얻을 수 있습니다.
  3. 이러한 차이는 Huffman code입니다. 위도와 경도를 별도로 인코딩하거나 잎에서 2 차원 변위 벡터를 사용하여 단일 코드를 계산할 수 있습니다. 둘 다 시도하고 결과를 비교하십시오.
  4. 사전을 사용하여 BLOB에 결과를 저장하여 허프만 코드를 디코딩하고 데이터를 절대 좌표로 반환 할 수 있도록 초기 위치를 저장합니다.

결과는 각 데이터 세트에 대해 매우 작은 데이터 세트 여야하며 전체적으로 검색하고 압축을 풀 수 있습니다. 데이터베이스에서 개별 부품을 가져 오는 것은 불가능하지만 필요하지 않은 것처럼 들립니다.

허프만 gzip을 통해 코딩의 장점은 인위적으로 중간 바이트 스트림을 도입 할 필요가 없습니다 것입니다. 직면 한 실제 차이점을 직접적으로 인코딩하는 것은 개별 속성을 통해 훨씬 잘 작동합니다. 그들이 의견을 기반 SO 형식을 서에 너무 광범위하고 방법이기 때문에 그런

관련 문제