2012-08-28 18 views
0

對於數量巨大的數據,您推薦使用什麼樣的存儲? (≈每天約5000萬條記錄)。對於像Hadoop或RDBMS這樣的系統來說,這種情況是否適合這種情況呢?適用於海量數據的存儲方法

+0

您計劃保留數據多長時間?模式有多複雜?它是一個具有單個大型事實表和一堆小型(-ish)維度表的星型模式嗎?您將對數據執行什麼類型的查詢?它們會涉及整個表格還是僅涉及日期範圍特定的數據(每日,每週,每月等)? – Olaf

+0

原始數據需要預處理,解析並彙總到報告數據中。報告不會被刪除,原始數據將在處理後被刪除。報告將保存爲數字數據。查詢 - 主要有特定數據範圍的統計查詢(平均,總和,最小,最大)。 – Artegon

回答

1

隨着您描述的數據量的增加,您可能確實在推動大數據領域的發展。根據您提供的詳細信息數量,我會建議將原始數據加載到Hadoop集羣中,運行map/reduce作業來解析它並加載到基於日期的目錄中。然後,您可以定義一個按日期分區的外部Hive表(每天?每週?)映射到您的地圖/縮減作業的結果。

下一步將取決於報告的複雜程度和所需的響應時間。如果您可以在SQL中輕鬆表達它們,則可以在Hive表上運行查詢。如果它們更詳細,則可能需要編寫自定義的地圖/縮減作業。許多人認爲它是豬,但我個人更直觀的Java。

如果您不關心報告的響應時間,可以按需運行它們。如果你關心,但打開等待幾十秒或幾分鐘的結果,則可以將報告結果存儲在Hive中。如果您希望報告快速顯示,請在基於Web或移動的用戶界面中進行,例如,您可能希望將報告數據存儲在關係數據庫中。

+0

現在,當我們在原型上工作時,並沒有如此龐大的數據量,數據存儲在關係數據庫中。在生產中它是不可能的,現在我正在考慮生產使用中的未來數據流 - 如果報告應該通過基於Web的UI提供並且速度將很重要,那麼您建議如何?我有一個想法將原始數據存儲在Hadoop中,並將數據存儲在關係數據庫中。感謝您的建議。 – Artegon

+0

「在Hadoop中存儲原始數據並在關係數據庫中存儲處理的數據存儲」 - 幾乎總結了我的答案。如果您可以將彙總表示爲SQL查詢,請考慮使用Hive在Hadoop中查詢數據。我喜歡在Java中編寫map/reduce,但是如果我可以在單個SQL語句中表達摘要,那麼沒有任何問題要走。 – Olaf

相關問題