數據倉庫技術包括哪三方面,【簡介】數據倉庫技術實現

 2023-12-25 阅读 42 评论 0

摘要:數據倉庫建設方案有兩種,一種是傳統架構的數據倉庫,一種是大數據架構的數據倉庫。 傳統數據倉庫 傳統數據倉庫是由單機數據庫發展而來的。業務數據庫一般是關系型數據庫(RDBMS),那數據倉庫在建設初期,也會選用關系型數據庫,

數據倉庫建設方案有兩種,一種是傳統架構的數據倉庫,一種是大數據架構的數據倉庫。

傳統數據倉庫

傳統數據倉庫是由單機數據庫發展而來的。業務數據庫一般是關系型數據庫(RDBMS),那數據倉庫在建設初期,也會選用關系型數據庫,因為數據遷移起來方便,而且業務系統的改造成本也較小。

但歷史數據較為龐大,單個 RDBMS 節點即使增加了大容量硬盤,也無法滿足存儲需求怎么辦?那就多個 RDBMS 節點組成 MPP(大規模并行處理)集群進行存儲。每個節點負責一部分數據的存儲、計算任務,數據通過提前調度,分配到各個節點中進行存儲;各個節點產生的部分結果,也會匯總成最終結果進行返回。

數據倉庫技術包括哪三方面,

傳統數倉的優點

傳統數倉的優點在于 SQL 支持率高;且在一定數據規模下,性能很出色。

因為是單機關系型數據庫改造而來,所以完全兼容原有的 SQL 語法,這樣的話,業務遷移起來比較方便。在之后的使用上,也不需要增加很多額外的學習成本。

傳統數據倉庫在數據量沒有達到某個量級時,是很優秀的解決方案,且繼承了單機數據庫優異的性能。但數據量一旦超過某個數量級時,它的問題就暴露出來了。

存在的問題

數據倉庫的四個特點,傳統數據倉庫存在的問題如下。

1. 擴展性有限

因為傳統數據倉庫的架構是由單機發展來的,在單機數據庫上進行功能的擴展,或者增加中間件,從而形成 MPP(大規模并行處理)集群。

但這種 MPP 數據倉庫,每個節點本質上還是一個數據庫,需要考慮精細的內存管理;且獨立進行計算,如果需要交換數據,則通過高速網絡連接其它所有節點進行。這種連接所有節點的高速網絡拓撲,直接限制了它節點的上限。

什么是數據倉庫技術,其次,它在數據存儲時,采用的是分庫分表策略(架構所限),將一個數據庫中的表拆分到各個節點中進行存儲,每張表存儲的數據如果足夠多的話,再將表進行拆分。

但分庫分表也存在上限,因為分庫分表的粒度越細,數據倉庫在處理數據時,性能越差。所以為了保證性能,分庫分表也不能無限進行。

2. 熱點問題

傳統數據倉庫因為在存儲時,會進行分庫分表,所以一張表的會被拆分成多份,交由不同數據庫節點進行保存。假設一張表有 100W 行數據,它在存儲時被拆分成 10 份,一份有 10W 行。但恰巧,前 10W 行的數據是熱點數據,在數據處理時被訪問的頻率是其它數據的兩倍,且這一份數據被存儲到了某個節點中。

數據倉庫設計、那可想而知,這個節點承受的壓力也是其它節點的兩倍。那這個節點就容易出現宕機,或者超時的情況。而單節點瓶頸會導致整個系統短板。節點越多,節點出錯頻率就越高,整個集群的可用性就越低;這也限制了它的擴展性。

當然熱點問題,可以通過數據加鹽的方式進行解決,將表中的數據通過增加前綴打散,從而隨機分布到各個節點中。但數據加鹽本身會增加一些額外操作,并帶來一些額外的問題。這個需要留意。

大數據數據倉庫

大數據數據倉庫是依托于大數據技術的一種新型數據倉庫技術。

它是基于大數據天然的分布式存儲、計算,并添加了 SQL 的支持而形成的一種架構。與傳統數據倉庫的架構是截然不同的。

spark數據倉庫實現、

大數據技術是為海量數據的存儲、計算服務的,所以它有天生的分布式架構來解決數據存儲問題,且有極強的擴展性。在數據處理方面,為了避免海量數據的移動造成的 IO、網絡開銷,使用了移動計算而非移動數據的架構,將計算任務分發到數據節點進行計算;因為一份數據是被拆分,并存放在多個節點的,所以每個節點的收到計算任務后,是并發執行的,計算得到的結果一定是部分結果。最后再將部分結果進行匯總,得到最終結果。

但大數據初期存在一個問題,易用性差。因為大數據處理,是有自己的特定語法的。而企業中大部分數據都是存儲在數據庫中的結構化數據,使用 SQL 進行處理。所以要使用大數據平臺,就必須要做大量的業務遷移工作,即將 SQL 轉化成大數據處理語法。

之后,基于大數據的數據倉庫產品應運而生,這些產品完成了 SQL 對大數據處理語法的轉化,且借助大數據分布式架構帶來的天然的海量數據存儲、處理能力,解決了傳統數據倉庫的痛點,成為將來數據倉庫的一個發展趨勢。

優勢

1. 解決了擴展性問題

大數據平臺的分布式架構的擴展性極強,海量數據的存儲、運算,不再成為問題。

大數據平臺負責存儲的分布式文件系統,將數據庫中的結構化數據統一視為文件進行存儲,將文件自動進行拆分,分發到各節點進行存儲。不用再顧慮分庫分表的問題。在進行數據處理時,才在上層引擎中使用元數據對文件還原成表結構。

2. 解決了熱點問題

底層分布式文件系統進行數據存儲時,為了保證數據的安全性,會將數據進行備份,默認為 3 份。在進行計算時,會將任務分發到數據節點,因為 3 個副本的數據時一致的,所以可以選擇一個最空閑的數據節點,將任務分發過去。在任務執行時,是可選擇節點的,所以極大的降低了出現熱點的可能性。

存在的問題

1. SQL 支持率低

因為大數據數據倉庫架構是將 SQL 轉換為大數據分布式處理語法,不是原生的 SQL 處理邏輯,所以 SQL 支持率沒有傳統數倉那么高。但隨著技術的發展,現有大數據產品的 SQL 支持率也越來越高。

2. 缺少事務支持

當前大數據數據倉庫因為是分布式架構,所以相對于單機數據庫來說,事務的實現較難;大多數產品事務支持不全。但因為數據倉庫主要是面向數據分析,對事務的要求并沒有那么嚴格,所以也不存在什么問題。

3. 數據量較少時,計算速度慢

因為大數據架構是完全分布式的,為海量數據運算而設計的;在運行時,會對任務進行拆分、調度,最后對結果進行合并;所以在數據沒有達到一定規模的時候,調度過程會花費大量的時間。但一旦數據量超過某個量級,調度時間遠遠小于計算時間,大數據架構的優勢就體現出來了。

小結

總的來說,在數據量沒有達到一定量級時,使用傳統數據倉庫方案是最優的,它性能好、SQL 支持率高、易用性好。但一旦企業數據達到某個量級,傳統數據倉庫運行效率就會變差,只能尋求大數據數據倉庫的解決方案。

雖然大數據數據倉庫的 SQL 支持庫低、缺少事務支持,但綜合它的使用場景,且隨著技術的發展,這些問題都會被解決。長遠來看,大數據數據倉庫,一定會是將來的趨勢所在。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196813.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息