Categories
程式開發

你真的需要數據湖嗎?


數據湖已經成為許多大數據項目的基石,就因為它們在處理高速生成的大量數據(如web、傳感器或應用程序活動數據)時,提供了更容易、更靈活的選擇。由於這類數據源越來越普遍,大家對數據湖的興趣也在快速增長。然而,數據湖真的適合你嗎?本文將帶你一起來看四個指標,幫助你理解是該加入數據湖的潮流,還是應該堅持傳統的數據倉庫。

數據湖已經成為許多大數據項目的基石,就因為它們在處理高速生成的大量數據(如web、傳感器或應用程序活動數據)時,提供了更容易、更靈活的選擇。由於這類數據源越來越普遍,大家對數據湖的興趣也在快速增長。

然而,與任何新興技術一樣,不存在放之四海而皆準的解決方案:數據湖可能非常適合某些場景,但在其他情況下,堅持使用經實踐檢驗過的數據庫架構將是更好的解決方案。在本文中,我們將研究四個指標,它們應該有助於你理解是應該加入數據湖的潮流,還是應該堅持傳統的數據倉庫。但首先,讓我們通過定義術語“數據湖”來設定討論的範疇。

數據湖:基本定義

數據湖是一種通常被定義為大數據架構的方法,它側重於將非結構化或半結構化數據以其原始格式存儲在一個服務於多個分析用例或服務的存儲庫中。在此,存儲和計算資源是解耦的,因此數據駐留在廉價的對象存儲中,如Hadoop on-premise或Amazon S3,而各種工具和服務(如Apache Presto、Elasticsearch和Amazon Athena)可以用來查詢這些數據。

這與傳統的數據庫或數據倉庫架構不同,在傳統的架構中,計算和存儲是耦合的,為了實施一系列模式,數據是根據攝入進行結構化的。數據湖使採用“現在存儲,以後分析”的方法變得更容易,因為幾乎不需要付出什麼努力即可將數據輸入到這個湖中;然而,在分析數據時,可能會出現一些傳統的數據準備挑戰

現在定義有了,接下來的問題是,你的組織需要數據湖嗎?讓我們從這5個關鍵指標開始。

1. 數據的結構是怎樣的?

數據湖非常適合存儲大量的非結構化和半結構化數據。將這類數據存儲在數據庫中需要做大量的數據準備,因為數據庫是圍繞結構化表構建的,而不是JSON / XML格式的原始事件。

如果你的大部分數據是由結構化的表格組成的——例如,預先處理過的CRM記錄或財務資產負債表——那麼堅持使用數據庫會更容易。但是,如果你正在處理大量基於事件的數據,比如服務器日誌或點擊流,那麼以原始形式存儲這些數據並根據你的用例構建特定的ETL流可能會更容易一些。

2. 你的ETL過程有多複雜?

ETL (extract-transform-load,抽取-轉換-加載)通常是實際使用數據的前提條件;但是,在處理大數據或流數據時,由於使用Spark/Hadoop等代碼密集型框架編寫ETL作業的複雜性,它會成為一個主要的障礙。

為了最小化花費在ETL上的資源數量,請嘗試確定主要瓶頸發生在哪裡。如果你在嘗試將半結構化和非結構化數據“調整適應”到關係數據庫方面遇到了很大的困難,那麼現在是時候考慮轉換到數據湖了。然而,創建從湖中向你將用於分析、機器學習的各種目標服務的ETL流仍然可能遇到很多挑戰。在這種情況下,你可能想要使用一個數據湖ETL工具來自動化這些過程。

3.數據保持是問題嗎?

由於數據庫將存儲與計算結合在一起,在數據庫中存儲非常大的數據量就變得非常昂貴。這就導致了很多數據保留方面的問題——為了控製成本,要么刪除數據中的某些字段,要么限制保存歷史數據的時間。

如果你的組織在不斷努力尋找為了分析而保持數據和為了控製成本而刪除數據之間的平衡點,數據湖解決方案可能是為了——數據湖架構建立在廉價的對象存儲之上,允許你持有“嗅”到的tb甚至海量歷史數據而不必花費多少成本。

4. 你的用例是可預測的還是實驗性的?

你應該問的最後一個問題是,你打算如何處理這些數據。如果你只是試圖建立一個報告(或一組報告,或儀表板),基本上是針對定期更新的表運行一組預先確定的查詢,那麼數據倉庫可能會是一個很好的解決方案,你可以使用SQL和可用的數據倉庫和業務智能工具簡單地實現此類解決方案。

然而,對於更多的實驗性用例(比如機器學習和預測分析),提前知道你需要什麼數據以及你想要如何查詢它是比較困難的。在這些情況下,數據倉庫的效率可能非常低,因為預定義的模式將限制你研究數據的能力。在這些情況下,數據湖可能是更好的選擇。

結論:數據湖適合你嗎?

以“視情況而定”結尾的文章總是讓人感覺像是在逃避,但事實是,大多數技術問題並沒有一個唯一解。當你的數據達到一定的規模和復雜性時,數據湖無疑是最佳選擇。你的組織在處於這些的情況嗎?你可以用以上四個問題來回答這個問題。

作者介紹:

Eran Levy是Upsolver的市場總監。 Upsolver是雲原生平台,你可以使用一個簡單的、可視化的UI和SQL來配置它。世界上大多數創新型的公司都使用Upsolver來自動化所有數據湖操作:攝取、存儲管理、模式管理和ETL流(包括聚合和連接)。

原文鏈接:

Do You Actually Need a Data Lake?