2016-07-15 81 views
0

我有一個網絡抓取應用程序。用戶發起「報告」 - 他們想要抓取哪些數據點。數據點可以少至1個或100K個數據點。有很多用戶啓動這些報告。有多個爬網服務器爬取數據點。這些數據點然後被髮送到中央服務器。中央服務器收集所有數據點,並在收集報告的所有(足夠)數據點時,生成報告(excel)並將其發送給客戶端。臨時數據存儲設計

現在我們需要一個數據存儲來存儲抓取的各個數據點。然後,當抓取完成後,我們需要查詢所有這些數據點並構建報告。該報告是最終產品,一旦生成報告,我們不需要存儲抓取的數據;至少不是爲了滿足客戶的需求。附註:抓取的數據被存檔到數據倉庫中。

當前我們使用SQL來存儲抓取過程中的這些抓取數據點。處理過程是:將所有破壞性數據轉儲到SQL中 - >當抓取完成後,可能需要幾小時時間,從SQL讀回屬於報告的抓取數據 - >定期清除SQL,比如清除x之前的清除數據的日子。 SQL服務器遇到可伸縮性問題 - 抓取數據點過多。我們每天獲得約1億個數據點;每KB的紀錄。所以這是每天大約400 GB的數據。在本地CSV文件

  1. 商店抓取數據:

    所以我們正在探索多種選擇,這將是有幫助的得到這些的一些意見。抓取完成後,請讀取 備份CSV文件以生成報告。缺點是 會造成單點故障;數據存儲在其上的服務器可能會關閉,並使用 它已經抓取的數據。

  2. 將SQL替換爲其中一種大數據技術;將數據抓取到以下其中一箇中
    • AWS RedShift:生成報告時查詢報告數據非常簡單。我傾向於此。
    • 大表格:插入很容易;但假設它是一個關鍵值存儲, 在生成報告的時候,從DB獲取100K左右的單個記錄到 有多容易?
    • DynamoDB
  3. 存儲的數據抓取到一些文件服務器

回答

0

可以存儲在卡珊德拉的數據,然後ETL的數據紅移和建立對紅移報告應用程序中的文件。這樣,您可以確保在攝取數據時不會出現單點故障,並且還可以靈活地通過ETL格式化或轉置數據。

謝謝, Jayadeep