1. 程式人生 > >大數據相關概念

大數據相關概念

cal 平臺 而且 var 周期 buffer 格式 倉庫管理 用途

1.什麽是大數據?大數據的特點?   大數據(big data),指無法在一定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。   什麽是大數據的特點?在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大數據時代》中大數據指不用隨機分析法(抽樣調查)這樣捷徑,而采用所有數據進行分析處理。大數據的5V特點(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。   下面我們將對大數據這五種特點做簡要的解釋:
  Volume : 指代大型數據集,一般在10TB規模左右,但在實際應用中,很多企業用戶把多個數據集放在一起,已經形成了PB級的數據量。   Velocity : 在數據量非常龐大的情況下,也能夠做到數據的實時處理。     Variety : 數據來自多種數據源,數據種類和格式日漸豐富,已沖破了以前所限定的結構化數據範疇,囊括了半結構化和非結構化數據。   Value : 以視頻為例,連續不間斷監控過程中,可能有用的數據僅僅有一兩秒。   Veracity : 隨著社交數據、企業內容、交易與應用數據等新數據源的興趣,傳統數據源的局限被打破,企業愈發需要有效的信息之力以確保其真實性及安全性。 2.什麽是數據倉庫?   數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策。 下面我就從數據倉庫的4個基本特性來說一下它與傳統的OLTP(on-line transaction processing聯機事務處理)數據庫的區別:
  1. (1)Subject Oriented

傳統的OLTP數據庫是面向應用進行數據組織的,而數據倉庫則側重於數據分析工作,它的數據是面向主題進行組織的。主題是一個抽象的概念,是在較高層次上將企業信息系統中的數據綜合、歸類並進行分析利用的抽象。例如對於一個醫藥連鎖零售企業,其OLTP數據庫所面向的應用可能是采購,銷售,而其數據倉庫所面向的應用可能是供應商、客戶、會員等。

  1. (2)Integrate

在數據倉庫所有特性中,這是最重要的。數據倉庫的數據是從企業中多個OLTP數據庫中抽取出來的,操作型數據與分析型數據之間的差別甚大。首先,數據倉庫的各個主題所對應的源數據在原有的OLTP數據庫中可能存在許多重復的不一致的地方,而且這些源數據中也常常蘊涵了不同的業務處理邏輯;其次數據倉庫中的綜合數據常常無法從OLTP數據庫系統中直接得到,因此在將數據加載到數據倉庫之前,需要經過統一與綜合。

  1. (3)Non-Volatile

數據倉庫主要用來支持企業的分析決策,因此針對這些數據只要會進行查詢操作,一般情況下並不會對數據進行修改和更新。和OLTP數據庫主要存儲當前數據不同,數據倉庫中一般會保存長期的歷史數據,數據的時間跨度可能是三年五年甚至更久,這樣才能夠分析出數據的長期變化趨勢,比較不同時期企業的運營狀況有何不同。

  1. (4)Time Variant

數據倉庫中數據的非易失性是針對應用來說的,但這並不表示從數據集成加載到數據倉庫到最終被刪除的整個數據生存周期中,所有的數據倉庫數據都是永遠不變的,數據倉庫會隨時間變化不斷增加新的數據內容,不斷導出和刪除過期的數據內容,經常按照時間段對數據進行重新綜合。

  • 數據倉庫的組成:
(1)數據倉庫數據庫
  是整個數據倉庫環境的核心,是數據存放的地方和提供對數據檢索的支持。相對於操縱型數據庫來說其突出的特點是對海量數據的支持和快速的檢索技術。
(2)數據抽取工具
  把數據從各種各樣的存儲方式中拿出來,進行必要的轉化、整理,再存放到數據倉庫內。對各種不同數據存儲方式的訪問能力是數據抽取工具的關鍵,應能生成COBOL程序、MVS作業控制語言(JCL)、UNIX腳本、和SQL語句等,以訪問不同的數據。數據轉換都包括,刪除對決策應用沒有意義的數據段;轉換到統一的數據名稱和定義;計算統計和衍生數據;給缺值數據賦給缺省值;把不同的數據定義方式統一。
(3)元數據
  元數據是描述數據倉庫內數據的結構和建立方法的數據。可將其按用途的不同分為兩類,技術元數據和商業元數據。
  a. 技術元數據是數據倉庫的設計和管理人員用於開發和日常管理數據倉庫是用的數據。包括:數據源信息;數據轉換的描述;數據倉庫內對象和數據結構的定義;數據清理和數據更新時用的規則;源數據到目的數據的映射;用戶訪問權限,數據備份歷史記錄,數據導入歷史記錄,信息發布歷史記錄等。
  b. 商業元數據從商業業務的角度描述了數據倉庫中的數據。包括:業務主題的描述,包含的數據、查詢、報表;
  元數據為訪問數據倉庫提供了一個信息目錄(informationdirectory),這個目錄全面描述了數據倉庫中都有什麽數據、這些數據怎麽得到的、和怎麽訪問這些數據。是數據倉庫運行和維護的中心,數據倉庫服務器利用他來存貯和更新數據,用戶通過他來了解和訪問數據。
(4)訪問工具
  為用戶訪問數據倉庫提供手段。有數據查詢和報表工具;應用開發工具;管理信息系統(EIS)工具;在線分析(OLAP)工具;數據挖掘工具。
(5)數據集市(DataMarts)
  為了特定的應用目的或應用範圍,而從數據倉庫中獨立出來的一部分數據,也可稱為部門數據或主題數據(subjectarea)。在數據倉庫的實施過程中往往可以從一個部門的數據集市著手,以後再用幾個數據集市組成一個完整的數據倉庫。需要註意的就是再實施不同的數據集市時,同一含義的字段定義一定要相容,這樣再以後實施數據倉庫時才不會造成大麻煩。
(6)數據倉庫管理:安全和特權管理;跟蹤數據的更新;數據質量檢查;管理和更新元數據;審計和報告數據倉庫的使用和狀態;刪除數據;復制、分割和分發數據;備份和恢復;存儲管理。
(7)信息發布系統:把數據倉庫中的數據或其他相關的數據發送給不同的地點或用戶。基於Web的信息發布系統是對付多用戶訪問的最有效方法。

OLTP與OLAP的介紹

  數據處理大致可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是數據倉庫系統的主要應用,支持復雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。

OLTP 系統強調數據庫內存效率,強調內存各種指標的命令率,強調綁定變量,強調並發操作;
OLAP 系統則強調數據分析,強調SQL執行市場,強調磁盤I/O,強調分區等。
OLTP與OLAP之間的比較:   OLTP,也叫聯機事務處理(Online Transaction Processing),表示事務性非常高的系統,一般都是高可用的在線系統,以小的事務以及小的查詢為主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個數據庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select 語句的執行量每秒幾千甚至幾萬個。典型的OLTP系統有電子商務系統、銀行、證券等,如美國eBay的業務數據庫,就是很典型的OLTP數據庫。 OLTP系統最容易出現瓶頸的地方就是CPU與磁盤子系統: (1)CPU出現瓶頸常表現在邏輯讀總量與計算性函數或者是過程上,邏輯讀總量等於單個語句的邏輯讀乘以執行次數,如果單個語句執行速度雖然很快,但是執行次數非常多,那麽,也可能會導致很大的邏輯讀總量。設計的方法與優化的方法就是減少單個語句的邏輯讀,或者是減少它們的執行次數。另外,一些計算型的函數,如自定義函數、decode等的頻繁使用,也會消耗大量的CPU時間,造成系統的負載升高,正確的設計方法或者是優化方法,需要盡量避免計算過程,如保存計算結果到統計表就是一個好的方法。 (2)磁盤子系統在OLTP環境中,它的承載能力一般取決於它的IOPS處理能力. 因為在OLTP環境中,磁盤物理讀一般都是db file sequential read,也就是單塊讀,但是這個讀的次數非常頻繁。如果頻繁到磁盤子系統都不能承載其IOPS的時候,就會出現大的性能問題。   OLTP比較常用的設計與優化方式為Cache技術與B-tree索引技術,Cache決定了很多語句不需要從磁盤子系統獲得數據,所以,Web cache與Oracle data buffer對OLTP系統是很重要的。另外,在索引使用方面,語句越簡單越好,這樣執行計劃也穩定,而且一定要使用綁定變量,減少語句解析,盡量減少表關聯,盡量減少分布式事務,基本不使用分區技術、MV技術、並行技術及位圖索引。因為並發量很高,批量更新時要分批快速提交,以避免阻塞的發生。   OLTP 系統是一個數據塊變化非常頻繁,SQL 語句提交非常頻繁的系統。 對於數據塊來說,應盡可能讓數據塊保存在內存當中,對於SQL來說,盡可能使用變量綁定技術來達到SQL重用,減少物理I/O 和重復的SQL 解析,從而極大的改善數據庫的性能。   這裏影響性能除了綁定變量,還有可能是熱快(hot block)。 當一個塊被多個用戶同時讀取時,Oracle 為了維護數據的一致性,需要使用Latch來串行化用戶的操作。當一個用戶獲得了latch後,其他用戶就只能等待,獲取這個數據塊的用戶越多,等待就越明顯。這就是熱快的問題。 這種熱快可能是數據塊,也可能是回滾端塊。對於數據塊來講,通常是數據庫的數據分布不均勻導致,如果是索引的數據塊,可以考慮創建反向索引來達到重新分布數據的目的,對於回滾段數據塊,可以適當多增加幾個回滾段來避免這種爭用。
  OLAP,也叫聯機分析處理(Online Analytical Processing)系統,有的時候也叫DSS決策支持系統,就是我們說的數據倉庫。在這樣的系統中,語句的執行量不是考核標準,因為一條語句的執行時間可能會非常長,讀取的數據也非常多。所以,在這樣的系統中,考核的標準往往是磁盤子系統的吞吐量(帶寬),如能達到多少MB/s的流量。
  磁盤子系統的吞吐量則往往取決於磁盤的個數,這個時候,Cache基本是沒有效果的,數據庫的讀寫類型基本上是db file scattered read與direct path read/write。應盡量采用個數比較多的磁盤以及比較大的帶寬,如4Gb的光纖接口。
  在OLAP系統中,常使用分區技術、並行技術。
  分區技術在OLAP系統中的重要性主要體現在數據庫管理上,比如數據庫加載,可以通過分區交換的方式實現,備份可以通過備份分區表空間實現,刪除數據可以通過分區進行刪除,至於分區在性能上的影響,它可以使得一些大表的掃描變得很快(只掃描單個分區)。另外,如果分區結合並行的話,也可以使得整個表的掃描會變得很快。總之,分區主要的功能是管理上的方便性,它並不能絕對保證查詢性能的提高,有時候分區會帶來性能上的提高,有時候會降低。
  並行技術除了與分區技術結合外,在Oracle 10g中,與RAC結合實現多節點的同時掃描,效果也非常不錯,可把一個任務,如select的全表掃描,平均地分派到多個RAC的節點上去。
  在OLAP系統中,不需要使用綁定(BIND)變量,因為整個系統的執行量很小,分析時間對於執行時間來說,可以忽略,而且可避免出現錯誤的執行計劃。但是OLAP中可以大量使用位圖索引,物化視圖,對於大的事務,盡量尋求速度上的優化,沒有必要像OLTP要求快速提交,甚至要刻意減慢執行的速度。   綁定變量真正的用途是在OLTP系統中,這個系統通常有這樣的特點,用戶並發數很大,用戶的請求十分密集,並且這些請求的SQL 大多數是可以重復使用的。 對於OLAP系統來說,絕大多數時候數據庫上運行著的是報表作業,執行基本上是聚合類的SQL 操作,比如group by,這時候,把優化器模式設置為all_rows是恰當的。 而對於一些分頁操作比較多的網站類數據庫,設置為first_rows會更好一些。 但有時候對於OLAP 系統,我們又有分頁的情況下,我們可以考慮在每條SQL 中用hint。 如:    Select a.* from table a;
分開設計與優化 在設計上要特別註意,如在高可用的OLTP環境中,不要盲目地把OLAP的技術拿過來用。   如分區技術,假設不是大範圍地使用分區關鍵字,而采用其它的字段作為where條件,那麽,如果是本地索引,將不得不掃描多個索引,而性能變得更為低下。如果是全局索引,又失去分區的意義。
  並行技術也是如此,一般在完成大型任務時才使用,如在實際生活中,翻譯一本書,可以先安排多個人,每個人翻譯不同的章節,這樣可以提高翻譯速度。如果只是翻譯一頁書,也去分配不同的人翻譯不同的行,再組合起來,就沒必要了,因為在分配工作的時間裏,一個人或許早就翻譯完了。
  位圖索引也是一樣,如果用在OLTP環境中,很容易造成阻塞與死鎖。但是,在OLAP環境中,可能會因為其特有的特性,提高OLAP的查詢速度。MV也是基本一樣,包括觸發器等,在DML頻繁的OLTP系統上,很容易成為瓶頸,甚至是Library
  Cache等待,而在OLAP環境上,則可能會因為使用恰當而提高查詢速度。 對於OLAP系統,在內存上可優化的余地很小,增加CPU 處理速度和磁盤I/O 速度是最直接的提高數據庫性能的方法,當然這也意味著系統成本的增加。
  比如我們要對幾億條或者幾十億條數據進行聚合處理,這種海量的數據,全部放在內存中操作是很難的,同時也沒有必要,因為這些數據快很少重用,緩存起來也沒有實際意義,而且還會造成物理I/O相當大。 所以這種系統的瓶頸往往是磁盤I/O上面的。
  對於OLAP系統,SQL 的優化非常重要,因為它的數據量很大,做全表掃描和索引對性能上來說差異是非常大的。 小結: 聯機分析處理(OLAP,On-line Analytical Processing),數據量大,DML少。使用數據倉庫模板
聯機事務處理(OLTP,On-line Transaction Processing),數據量少,DML頻繁,並行事務處理多,但是一般都很短。使用一般用途或事務處理模板。
3.分析 ExtractTranformLoader 與 挖掘 DataMine 有何區別 ?

                       技術分享圖片

  首先,介紹一下ETL 和 DM:     ETL/Extraction-Transformation-Loading——用於完成DB到DW的數據轉存,它將DB中的某一個時間點的狀態,“抽取”出來,根據DW的存儲模型要求,“轉換”一下數據格式,然後再“加載”到DW的一個過程,這裏需要強調的是,DB的模型是ER模型,遵從範式化設計原則,而DW的數據模型是雪花型結構或者星型結構,用的是面向主題,面向問題的設計思路,所以DB和DW的模型結構不同,需要進行轉換。   DM/Data Mining/數據挖掘——這個挖掘,不是簡單的統計了,他是根據概率論的或者其他的統計學原理,將DW中的大數據量進行分析,找出我們不能直觀發現的規律,比如,如果我們每天早上照相,量身材的時候,還記錄下頭一天吃的東西,黃瓜,豬腿,烤鴨,以及心情,如果記錄上10年,形成了3650天的相貌和飲食心情的數據,我們每個人都記錄,有20萬人記錄了,那麽,我們也許通過這些記錄,可以分析出,身材相貌和飲食的客觀規律;再說一個典型的實例,就是英國的超市,在積累了大量數據之後,對數據分析挖掘之後,得到了一個規律:將小孩的尿布和啤酒放在一起,銷量會更好——業務專家在得到該結論之後,仔細分析,知道了原因,因為英國男人喜歡看足球的多,老婆把小孩介紹男人看管,小孩尿尿需要尿布,而男人看足球喜歡喝酒,所以兩樣商品有密切的關系,放在一起銷售會更好   數據分析只是在已定的假設,先驗約束上處理原有計算方法,統計方法,將數據分析轉化為信息,而這些信息需要進一步的獲得認知,轉化為有效的預測和決策,這時就需要數據挖掘,也就是我們數據分析師系統成長之路的更上一樓”。
數據挖掘與數據分析兩者緊密相連,具有循環遞歸的關系,數據分析結果需要進一步進行數據挖掘才能指導決策,而數據挖掘進行價值評估的過程也需要調整先驗約束而再次進行數據分析。
而兩者的具體區別在於:
(其實數據分析的範圍廣,包含了數據挖掘,在這裏區別主要是指統計分析)     數據量上:數據分析的數據量可能並不大,而數據挖掘的數據量極大。     約束上:數據分析是從一個假設出發,需要自行建立方程或模型來與假設吻合,而數據挖掘不需要假設,可以自動建立方程。     對象上:數據分析往往是針對數字化的數據,而數據挖掘能夠采用不同類型的數據,比如聲音,文本等。     結果上:數據分析對結果進行解釋,呈現出有效信息,數據挖掘的結果不容易解釋,對信息進行價值評估,著眼於預測未來,並提出決策性建議。 數據分析是把數據變成信息的工具,數據挖掘是把信息變成認知的工具,如果我們想要從數據中提取一定的規律(即認知)往往需要數據分析和數據挖掘結合使用。 4.hadoop是什麽? 處理分布式數據的批處理模型平臺的特點? 什麽是hadoop?

  Apache Hadoop是一款支持數據密集型分布式應用並以Apache 2.0許可協議發布的開源軟件框架。它支持在商品硬件構建的大型集群上運行的應用程序。Hadoop是根據Google公司發表的MapReduce和Google檔案系統的論文自行實作而成。
  Hadoop框架透明地為應用提供可靠性和數據移動。它實現了名為MapReduce的編程範式:應用程序被分割成許多小部分,而每個部分都能在集群中的任意節點上執行或重新執行。此外,Hadoop還提供了分布式文件系統,用以存儲所有計算節點的數據,這為整個集群帶來了非常高的帶寬。MapReduce和分布式文件系統的設計,使得整個框架能夠自動處理節點故障。它使應用程序與成千上萬的獨立計算的電腦和PB級的數據。

特點:     在運行時不需要配置很高,是通過所有的機器來計算的     高效率:通過分發數據,可以在數據所有的結點上進行並發的處理,這使得處理的速度非常快     可靠性:能搞自身的維護數據的多個成本,並且在任務失敗是自動的重新部署計算任務     可擴容性:能可靠的儲存和處理PB級的數據

大數據相關概念