2015-01-04 143 views
0

我試着去設計,可以定期從外部API「下載」大量數據的系統..最佳途徑

此用戶可以有大約60萬條我需要的數據記錄,然後每隔一小時左右覈對兩個數據集。

我想最終在後臺任務中使用python或ruby做這件事,但我很好奇如何存儲數據。

是否有可能/好主意將所有內容存儲在一個記錄中散列爲json vs單獨拷貝每個記錄?

這將是很好的能夠索引或搜索數據沒有任何失敗,所以我想知道什麼是最好的實現內存明智。

例如,如果用戶有500,000條推文記錄,並且我想存儲所有這些記錄,這會是更好的實施方式嗎?

一條記錄爲JSON => user_1 = {id:1 twt:「blah」},{id:2 twt:「blah」},..... {id:600,000 twt:「blah」}

VS

多條記錄=>
ID:1 outside_id = 1 TWT: 「嗒嗒」

ID:2 outside_id = 1 TWT: 「嗒嗒」

ID:3 outside_id = 1 twt:「blah」

我是c無論如何我會發現每種方法的內存密集程度如何,或者什麼是最佳解決方案。

記錄很複雜,每個記錄可能有40個屬性,我想存儲。

也可以MySQL或MongoDB更快的複製/存儲解決方案嗎?

回答

0

我認爲這一切都歸結爲該項目最重要的需求。這些是我在選擇技術之前嘗試回答的一些問題:

  1. 在插入數據庫之後,是否需要單獨訪問記錄?
  2. 我讀過數據時是否需要彙總數據(例如用於報告)?
  3. 對於項目目標來說更重要的是讓數據快速寫入還是快速讀取
  4. 我預計數據量會增長多少?我選擇的數據庫技術能夠輕鬆,便宜,可靠地擴展以支持數據量?
  5. 數據的模式會改變嗎?我需要像MongoDB這樣的無模式數據庫解決方案嗎?
  6. 開發時間/成本,維護時間/成本和運行該程序的時間/成本之間的權衡在哪裏?

不知道有關的細節或您的項目或目標,我會說通常不是一個好主意存儲單個JSON對象的整個數據。這可能會使讀取數據並在未來追加數據變得更加困難。您應該多想一些關於如何建模數據並在數據庫中表示的方式,以便在以後真正需要時使用它。

+0

1.是的,探索性分析可能會涉及收集每條記錄的數據。 2.是報告是理想的3.兩者實際上......這使我意識到兩種模式可能是最佳的......一種設計爲快速獲取數據,另一種在內存中快速處理4.理想的基礎設施可輕鬆擴展5。模式將被標準化6.我真的只是尋找最快的解決方案來測試 – ChrisWesAllen