2012-05-10 43 views
19

我喜歡立體主義的用戶體驗,並希望在我們擁有的後端之上使用它。使用其他數據源cubism.js

我讀過的API文檔的一些代碼,這個最好像被提取了。我怎樣才能開始準確地使用其他數據源?

我有5分鐘精度約6K單個機器上大約100個左右的統計信息的數據存儲。

我想查詢一些網絡應用程序與該機器的特定標識符和然後渲染通過查詢特定蒙戈數據存儲類似於立體派的儀表板。

將webapp或查詢寫入mongo不是問題。

的問題更多的是與立體主義似乎需要查詢您使用任何數據存儲爲每個數據點的事實線(說你有整個一個星期的窗口100個統計...昂貴)。

有另一種方式,我可以利用這個工具來看看那個被使用類似於下面的代碼加載一些數據?

var data = []; 
d3.json("/initial", function(json) { data.concat(json); }); 
d3.json("/update", function(json) { data.push(json); }); 

回答

19

立體派負責初始化,更新你:初始請求是完全可見的窗口(啓動,停止,通常1,440個數據點),而隨後的請求只有少數最近的指標(7數據點)。

看看context.metric如何實施新的數據源。最簡單的實現方法是這樣的:

var foo = context.metric(function(start, stop, step, callback) { 
    d3.json("/data", function(data) { 
    if (!data) return callback(new Error("unable to load data")); 
    callback(null, data); 
    }); 
}); 

你會擴展這個改變適當的「/數據」 URL,傳入啓動,停止和步驟時間,並且要使用來識別任何其他度量。例如,多維數據集和Graphite都使用度量表達式作爲附加查詢參數。

+0

只是確保,這是針對每個新的指標。因此,連接到此的每個客戶端都將對您的數據庫執行x個查詢以查找x個指標。有沒有簡單的方法,使用立體派減少這種情況?例如調用圖表,然後有訪問函數? –

+1

當然,您可以編寫一個替代的度量標準實現,以批量方式獲取多個度量標準,但通常不值得。我們的儀表板通常會向Graphite發出數百個併發請求(由於它不會爲每個主機發出超過4或8個併發請求,所以它會被瀏覽器部分序列化),並且沒有性能問題。要合併併發請求,您需要將多個請求放入一個隊列中,並使用超時來發出合併請求。 – mbostock

+0

只要有人在這方面有經驗的人來運行它,告訴我你是否認爲這是值得的:我有大約500GB的關於n臺機器的數據。數據庫通過時間戳,機器ID和兩者的組合進行索引。爲了執行一個查詢(這是MongoDB),需要大約12秒才能獲得1臺機器的1440個結果的排序列表。所以x * 12秒=加載時間,其中x是度量的數量。 –

相關問題