2012-01-27 35 views
2

我的代碼從Web服務捕獲數值。捕獲的值通常會增加,但有時會減少。現在,我只是在做什麼,我在一個特定的時間觀察到一個愚蠢的捕捉...這是我的表結構是什麼樣子現在:分析不斷增加的數據的最佳途徑?

id date_collected  value1_observed value2_observed 
1 2012-01-26 1:00am 500    12 
2 2012-01-26 1:01am 90000   NULL 
3 2012-01-26 1:02am 100    50 
1 2012-01-26 7:23am 502    12 
2 2012-01-26 7:24am 90105   NULL 
3 2012-01-26 8:09am 97    55 

你可以看到...

  • ID = 1個VALUE1在6小時6小時增加23分鐘
  • ID = 2值1增加了105 23分鐘
  • ID = 3 VALUE1在7小時下降8分鐘

難點:

  • 收集時間不一致(I收集每天多次隨着時間的變化的長度集合之間)
  • 該值可以增加或減少或爲空

我已經捕獲了數千萬行這些記錄,我希望能夠更容易地查詢它們,所以我想我需要將這些數據轉換成更適合我想要的問題的模式回答。我希望能夠找到如下模式:

  • 「在凌晨1點到上午5點之間,這些ID的值變化最大」。
  • 「在過去的30天裏,哪些ID有價值增長最多(絕對和相對)?」

對我該如何構建架構有任何建議嗎?將這些數據轉換爲傳統的星型模式是否可能?

UPDATE回答問題:

  • 我目前使用Microsoft SQL Server,但願意接受使用MySQL或其他開源選項。
  • 如果id 1從50變成100到52,我想知道它是+50,然後是-48。這樣我可以看到波動和淨收益/損失隨着時間的推移。例如,如果我在一個網站上跟蹤註冊用戶......通常這些數字總是在增加,但如果人們刪除他們的賬戶,我想要確定這一趨勢。但是,如果我的應用程序沒有觀察到從50到100的變化,並且只記錄了50和52,則它不知道該數字是否達到100。

感謝任何見解/方向,

- 保羅

+1

請指定您正在使用的數據庫 – 2012-01-27 09:16:36

+1

關於「值1中的最大變化」,如果值1在您的間隔期間從50變爲100,然後返回52,那麼變化爲2或a 98的變化? – 2012-01-27 12:21:40

+0

我已更新發布回答Lukas Eder和Catcall的問題。 – PaulMest 2012-01-27 21:59:20

回答

0

這似乎是你的選擇可能是去一個基於列的數據存儲你的數據看到這個線程What is the best way of storing trend data?

這些是MySQL兼容的引擎,所以我懷疑對您的基礎架構所做的更改可能並不重要。