假設你有記錄(時間戳,STOCK_PRICE)以每30秒一個SQL數據庫的程序,以及要生成的股票價格在不同時間尺度的情節。如果您在1小時範圍內繪製測量結果,則可以使用在此期間採集的所有120個樣本。但是,如果您想將價格繪製在1年的範圍內,您顯然不希望從數據庫中抽取超過100萬個樣本。最好從數據庫中提取一些有代表性的樣本子集。的地塊
這讓我想起了在計算機圖形詳細技術水平的 - 當你從一個3D模型遠動,模型的低保真版本都可以使用。
是在數據庫中代表的詳細信息水平還有常見的技術,或用於快速查詢數據的均勻間隔的子集(例如,給我從2009年1月100個均勻間隔的樣本)?
我到目前爲止提出的解決方案是在數據庫表中包含一個level_of_detail列。如果level_of_detail = 0,該行保存一個瞬時樣本。如果level_of_detail = n時,該行包含最後(sample_interval *(2^N))秒的數據的平均值,並有1 /(2^N)在這個水平一樣多的行。該表對(level_of_detail,時間戳)的指標,當你想生成一個情節,你計算基於樣本的你想和數量的查詢與約束適當level_of_detail值。缺點是:
- 對於N個樣本,該表需要存儲2 * N行
- 客戶端必須知道指定適當的level_of_detail約束
- 一些過程需要負責建設的平均行作爲將示例添加到表中
是不是有理由讓您看到像高,低,關閉,打開的財務圖表。它向你展示了趨勢(趨勢是你的朋友)和一天中很容易看到的運動。 – u07ch 2011-01-20 18:41:27