一出上云大戲,一曲數據倉庫的悲歌?
對于一家自身組織運行歷史數十年的公司來說,數據倉庫會是一種有效幫助其報告和理解相關操作的方式。
在數據倉庫出現之前,對來自不同系統的數據進行報告與收集是一項昂貴、耗時而且常常徒勞無功的嘗試,而數據倉庫保證了來自單個存儲庫數據的干凈與集成性。
將多種報表工具連接到單個數據模型的能力催生了一個我們目前很數據的行業: 商業智能(BI)。然而,由于復雜的方法和設計、不適當的工具以及高的開發、維護和基礎設施成本所拖累,傳統數據倉庫體系結構和方法的原始概念應用在今天也變得不再那么易于接受。
可以說,不久前,計算依然是一個非常昂貴的資源,數據倉庫還受到“稀缺性管理(managing from scarcity)”觀念的限制。相反,各類方案數據設計也在盡量減少數據庫的規模,比如通過聚合數據、創建復雜的子數據庫設計和密切監測資源的使用等。
數據倉庫,已涼?
隨著大數據,尤其是Hadoop的崛起,我們經常會聽到供應商、分析師和大咖們說數據倉庫已經死了。畢竟,它們昂貴、僵硬、緩慢。一切都如老鷹樂隊(譯者注:知名美國搖滾樂隊,代表作加州旅館)主唱格列·弗雷(Glenn Frey)在一首歌中寫到的歌詞:“這是簡單資源的誘惑,有很強的吸引力。”
人們常說,大數據是游戲規則改變者和數據倉庫的繼承者。但它其實不是,如果說有什么區別的話,那就是大數據為數據倉庫提供了一個實現(或者至少是將其延伸到更接近其原始目地的地方)的機會:成為有用的、可操作的分析數據來源。
但數據倉庫的思考者必須放棄對物理結構的執著才能做到這一點。相反,未來的數據倉庫將不得不與許多不同的數據源合作。它將充當一種虛擬結構,運行一種“安靜的”歷史數據倉庫,不受約束的分析數據庫以提供實時更新和實時響應,此外它還將運行其他非關系型大數據集群(如Hadoop)的包圍策略。這樣,大數據會迫使組織擴大其分析業務的規模,無論是在數量上還是在投入的種類上,而同樣重要的是,要擴展其關于如何在組織內外擴展和加強技術使用的愿景。
本地部署?云?混合?
以下是目前部分(但不完整)的數據倉庫平臺列表:
傳統數據倉庫“幸存者”,他們最初是本地部署,現在是混合模式:
- IBM
- Microsoft
- Teradata
- Pivotal/Greeenplum
- Oracle
純云:
- Redshift
- Snowflake
- Incorta
一般來說,關系型數據庫(RDB)的數據倉庫繼承了上述這些模式的所有優點和缺點,特別是對于那些專為事務處理而設計的RDB而言,但是后者的設計初衷是為了數據倉庫和它們用以支持分析的特別處理需求。
對于微軟,IBM和Oracle來說都是如此。在數據倉庫的早期階段,這三種產品的性能非常差,這促使客戶尋求了那些專為數據倉庫運營而設計的產品,例如Teradata,Red Brick,Pivotal / Greemplum,Vertica以及Paraccel,后者的來源代碼由亞馬遜授權并重新命名為Redshift。
廠商們在改進他們數據倉庫產品方面取得了一定的進展。如微軟授權Sybase為SQLServer提供代碼,IBM和Oracle也不斷改進和改進他們的產品。
就目前而言,所有五個“幸存者”都擁有完整的云,本地部署和混合云解決方案。問題是,“純云計算”產品和“幸存者”的云產品真的有什么不同嗎?
每個產品都有一系列重疊的功能,但核心問題是:
- 基于云的數據倉庫有哪些優勢?
- 與純云產品相比,“幸存者”是否提供了足夠的優勢?
大數據服務公司Alooma 指出:
- “每個云倉庫都有自己的結構,而不是遵循特定的結構。例如,Amazon Redshift模仿傳統數據倉庫的結構,而谷歌BigQuery根本不使用服務器,它允許用戶查詢和共享數據,而無需設置和支付存儲費用。”
那么,云數據倉庫會帶來些什么?
規模/擴展性: 通常,計算資源是數據倉庫中比數據存儲更昂貴的組件。通過將計算資源從存儲中分離出來,數據倉庫可以存儲大量數據,并按要求處理信息。在本地方案中,所有這些數據都需要以高得多的成本進行本地存儲。
靈活性:通過將數據從計算流程中分離出來,用戶可以創建所需的任意數量的虛擬數據倉庫。
性能: 這仍然是一個一目了然的事情,在數據倉庫/分析查詢中,僅僅多運行幾個服務器并不意味著性能的提升。讓Teradata這樣專門的廠商如此成功的原因是,幾十年的工程設計,大規模的并行處理優化和工作負載的管理技術,或許最重要的是,Teradata提供軟件引擎與用戶所運行的專有硬件之間的鏈接,并且性能還在不斷改善。
成本: 每個人都在說云改變了定價模式,但是沒人確定實施的成本是多少。廉價存儲的誘惑可能會導致事情失控,因為它可能是相對便宜的,但終歸不是免費的。所有的傳統廠商都轉向了訂閱定價方案,但每個合同都非常復雜。這里建議是聘請一位合同和定價細節方面的專家(我們在ERP領域中經常看到這一點)。
安全性:這是一個棘手的問題,因為有太多的接入點,尤其是在混合解決方案中。大多數數據庫產品會實施針對內部威脅的安全性,但是近些年來自外部威脅的激增。
一個數據倉庫應具有哪些能力?
- 支持任何數據局部性(本地磁盤、Hadoop、私有和公有云數據)。
- 數據庫內高級分析。
- 能夠處理本地各類型數據,如空間、時間序列和/或文本。
- 能夠運行新的分析工作負載,包括機器學習、地理空間、圖形和文本分析。
- 靈活部署,包括在本地、私有和公有云上。
- 大數據查詢優化。
- 復雜的查詢形式。
- 基于模型的大規模并行處理,而不僅僅是分片處理。
- 工作負載管理。
- 負載平衡。
- 可擴展到數千個并發查詢。
- 完整的ANSI SQL及更多。
寫在最后
原生云數據倉庫數據庫可能提供以前的“幸存者”數據庫所沒有的功能和優勢,但是它們有多健壯呢? 我們目前不好妄下評論,但是,一些純云產品在滿足用戶的許多需求方面都相對較差。它們是數據倉庫產品,還是現有模塊的集合,并將其綁定在PowerPoint幻燈片上?例如,Cloudera的數據倉庫中沒有任何在他們開始稱之為數據倉庫之前不存在的東西。就像把不同物種的不同細胞系扔進培養皿里,就稱其為有機體。
這里,或許還是那句老話“不管黑貓白貓,抓到老鼠就是好貓”。大數據吹們總是試圖拋棄掉傳統數據倉庫,只是強調它實施和技術問題,而沒有理會它對于組織的價值。所謂的“數據湖”可能并不是一個好方案。