一、B樹的起源

創(chuàng)新互聯(lián)公司網(wǎng)站設(shè)計,為客戶量身定制各類網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、自適應(yīng)網(wǎng)站建設(shè)、行業(yè)門戶型等各類網(wǎng)站,實戰(zhàn)經(jīng)驗豐富,成功案例眾多。以客戶利益為出發(fā)點,創(chuàng)新互聯(lián)公司網(wǎng)站制作為客戶規(guī)劃、按需求定制網(wǎng)站符合企業(yè)需求、帶有營銷價值的網(wǎng)絡(luò)建站方案認真對待每一個客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,千余家的成功案例見證著我們的成長。
B樹,最早是由德國計算機科學(xué)家Rudolf Bayer等人于1972年在論文 《Organization and Maintenance of Large Ordered Indexes》提出的,不過我去看了看原文,發(fā)現(xiàn)作者也沒有解釋為什么就叫B-trees了,所以把B樹的B,簡單地解釋為Balanced或者Binary都不是特別嚴謹,也許作者就是取其名字Bayer的首字母命名的也說不定啊……
二、B樹長啥樣
還是直接看圖比較清楚,圖中所示,B樹事實上是一種平衡的多叉查找樹,也就是說最多可以開m個叉(m=2),我們稱之為m階b樹,為了體現(xiàn)本博客的良心之處,不同于其他地方都能看到2階B樹,這里特意畫了一棵5階B樹 。
總的來說,m階B樹滿足以下條件:
每個節(jié)點至多可以擁有m棵子樹
根節(jié)點,只有至少有2個節(jié)點(要么極端情況,就是一棵樹就一個根節(jié)點,單細胞生物,即是根,也是葉,也是樹)
非根非葉的節(jié)點至少有的Ceil(m/2)個子樹(Ceil表示向上取整,圖中5階B樹,每個節(jié)點至少有3個子樹,也就是至少有3個叉)
非葉節(jié)點中的信息包括[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n表示該節(jié)點中保存的關(guān)鍵字個數(shù),K為關(guān)鍵字且KiKi+1,A為指向子樹根節(jié)點的指針
從根到葉子的每一條路徑都有相同的長度,也就是說,葉子節(jié)在相同的層,并且這些節(jié)點不帶信息,實際上這些節(jié)點就表示找不到指定的值,也就是指向這些節(jié)點的指針為空
B樹的查詢過程和二叉排序樹比較類似,從根節(jié)點依次比較每個結(jié)點,因為每個節(jié)點中的關(guān)鍵字和左右子樹都是有序的,所以只要比較節(jié)點中的關(guān)鍵字,或者沿著指針就能很快地找到指定的關(guān)鍵字,如果查找失敗,則會返回葉子節(jié)點,即空指針
例如查詢圖中字母表中的K
從根節(jié)點P開始,K的位置在P之前,進入左側(cè)指針
左子樹中,依次比較C、F、J、M,發(fā)現(xiàn)K在J和M之間
沿著J和M之間的指針,繼續(xù)訪問子樹,并依次進行比較,發(fā)現(xiàn)第一個關(guān)鍵字K即為指定查找的值
三、Plus版——B+樹
作為B樹的加強版,B+樹與B樹的差異在于:
有n棵子樹的節(jié)點含有n個關(guān)鍵字(也有認為是n-1個關(guān)鍵字)
所有的葉子節(jié)點包含了全部的關(guān)鍵字,及指向含這些關(guān)鍵字記錄的指針,且葉子節(jié)點本身根據(jù)關(guān)鍵字自小而大順序連接
非葉子節(jié)點可以看成索引部分,節(jié)點中僅含有其子樹(根節(jié)點)中的最大(或最小)關(guān)鍵字
請點擊輸入圖片描述
B+樹的查找過程,與B樹類似,只不過查找時,如果在非葉子節(jié)點上的關(guān)鍵字等于給定值,并不終止,而是繼續(xù)沿著指針直到葉子節(jié)點位置。因此在B+樹,不管查找成功與否,每次查找都是走了一條從根到葉子節(jié)點的路徑
企業(yè)里常用的數(shù)據(jù)庫軟件有Mysql、PostgreSQL、MicrosoftSQLServer、Oracle數(shù)據(jù)庫、MongoDB。
1、Mysql。
MySQL原本是一個開放源碼的關(guān)系數(shù)據(jù)庫管理系統(tǒng),原開發(fā)者為瑞典的MySQLAB公司,該公司于2008年被升陽微系統(tǒng)(SunMicrosystems)收購。2009年,甲骨文公司(Oracle)收購升陽微系統(tǒng)公司,MySQL成為Oracle旗下產(chǎn)品。
MySQL由于性能高、成本低、可靠性好,已經(jīng)成為最流行的開源數(shù)據(jù)庫,因此被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。隨著MySQL的不斷成熟,它也逐漸用于更多大規(guī)模網(wǎng)站和應(yīng)用。
2、PostgreSQL。
PostgreSQL可以說是目前功能最強大、特性最豐富和結(jié)構(gòu)最復(fù)雜的開源數(shù)據(jù)庫管理系統(tǒng),其中有些特性甚至連商業(yè)數(shù)據(jù)庫都不具備。這個起源于加州大學(xué)伯克利分校的數(shù)據(jù)庫,現(xiàn)已成為一項國際開發(fā)項目,并且擁有廣泛的用戶群,尤其是在海外,目前國內(nèi)使用者也越來越多。
PostgreSQL基本上算是見證了整個數(shù)據(jù)庫理論和技術(shù)的發(fā)展歷程,由UCB計算機教授MichaelStonebraker于1986年創(chuàng)建。在此之前,Stonebraker教授主導(dǎo)了關(guān)系數(shù)據(jù)庫Ingres研究項目,88年,提出了Postgres的第一個原型設(shè)計。
MySQL號稱是使用最廣泛的開源數(shù)據(jù)庫,而PG則被稱為功能最強大的開源數(shù)據(jù)庫。
3、MicrosoftSQLServer。
SQLServer是Microsoft開發(fā)的一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),現(xiàn)在是世界上最為常用的數(shù)據(jù)庫。SQLServer?現(xiàn)在是包括內(nèi)置的商務(wù)智能工具,以及一系列的分析和報告工具,可以創(chuàng)建數(shù)據(jù)庫、備份、復(fù)制、安全性更好以及更多。
SQLServer是一個高度可擴展的產(chǎn)品,可以從一個單一的筆記本電腦上運行的任何東西或以高倍云服務(wù)器網(wǎng)絡(luò),或在兩者之間任何東西。雖然說是“任何東西”,但是仍然要滿足相關(guān)的軟件和硬件的要求。
4、Oracle數(shù)據(jù)庫。
Oracle數(shù)據(jù)庫系統(tǒng)是美國Oracle(甲骨文)公司提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務(wù)器(Client/Server,C/S)或瀏覽器/服務(wù)器(Browser/Server,B/S)體系結(jié)構(gòu)的數(shù)據(jù)庫之一。
Oracle數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),作為一個通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個關(guān)系數(shù)據(jù)庫,它是一個完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫它實現(xiàn)了分布式處理功能。
5、MongoDB
mongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的開源產(chǎn)品,是最接近于關(guān)系型數(shù)據(jù)庫的NoSQL數(shù)據(jù)庫。它在輕量級JSON交換基礎(chǔ)之上進行了擴展,即稱為BSON的方式來描述其無結(jié)構(gòu)化的數(shù)據(jù)類型。盡管如此它同樣可以存儲較為復(fù)雜的數(shù)據(jù)類型。
參考資料來源:百度百科——Mysql
參考資料來源:百度百科——PostgreSQL
參考資料來源:百度百科——MicrosoftSQLServer
參考資料來源:百度百科——Oracle數(shù)據(jù)庫
參考資料來源:百度百科——MongoDB
大數(shù)據(jù)解決方案的邏輯層
邏輯層提供了一種組織您的組件的方式。這些層提供了一種方法來組織執(zhí)行特定功能的組件。這些層只是邏輯層;這并不意味著支持每層的功能在獨立的機器或獨立的進程上運行。大數(shù)據(jù)解決方案通常由以下邏輯層組成:
1、大數(shù)據(jù)來源
2、數(shù)據(jù)改動 (massaging) 和存儲層
3、分析層
4、使用層
互聯(lián)網(wǎng)是個神奇的大網(wǎng),大數(shù)據(jù)開發(fā)和軟件定制也是一種模式,這里提供最詳細的報價,如果你真的想做,可以來這里,這個手機的開始數(shù)字是一八七中間的是三兒零最后的是一四二五零,按照順序組合起來就可以找到,我想說的是,除非你想做或者了解這方面的內(nèi)容,如果只是湊熱鬧的話,就不要來了
大數(shù)據(jù)來源:考慮來自所有渠道的,所有可用于分析的數(shù)據(jù)。要求組織中的數(shù)據(jù)科學(xué)家闡明執(zhí)行您需要的分析類型所需的數(shù)據(jù)。數(shù)據(jù)的格式和起源各不相同:
格式— 結(jié)構(gòu)化、半結(jié)構(gòu)化或非結(jié)構(gòu)化。
速度和數(shù)據(jù)量— 數(shù)據(jù)到達的速度和傳送它的速率因數(shù)據(jù)源不同而不同。
收集點— 收集數(shù)據(jù)的位置,直接或通過數(shù)據(jù)提供程序,實時或以批量模式收集數(shù)據(jù)。數(shù)據(jù)可能來自某個主要來源,比如天氣條件,也有可能來自一個輔助來源,比如媒體贊助的天氣頻道。
數(shù)據(jù)源的位置— 數(shù)據(jù)源可能位于企業(yè)內(nèi)或外部。識別您具有有限訪問權(quán)的數(shù)據(jù),因為對數(shù)據(jù)的訪問會影響可用于分析的數(shù)據(jù)范圍。
數(shù)據(jù)改動和存儲層:此層負責(zé)從數(shù)據(jù)源獲取數(shù)據(jù),并在必要時,將它轉(zhuǎn)換為適合數(shù)據(jù)分析方式的格式。例如,可能需要轉(zhuǎn)換一幅圖,才能將它存儲在 Hadoop Distributed File System (HDFS) 存儲或關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 倉庫中,以供進一步處理。合規(guī)性制度和治理策略要求為不同的數(shù)據(jù)類型提供合適的存儲。
分析層:分析層讀取數(shù)據(jù)改動和存儲層整理 (digest) 的數(shù)據(jù)。在某些情況下,分析層直接從數(shù)據(jù)源訪問數(shù)據(jù)。設(shè)計分析層需要認真地進行事先籌劃和規(guī)劃。必須制定如何管理以下任務(wù)的決策:
生成想要的分析
從數(shù)據(jù)中獲取洞察
找到所需的實體
定位可提供這些實體的數(shù)據(jù)的數(shù)據(jù)源
理解執(zhí)行分析需要哪些算法和工具。
使用層:此層使用了分析層所提供的輸出。使用者可以是可視化應(yīng)用程序、人類、業(yè)務(wù)流程或服務(wù)。可視化分析層的結(jié)果可能具有挑戰(zhàn)。有時,看看類似市場中的競爭對手是如何做的會有所幫助。
每一層包含多種組件類型,下面將會介紹這些類型。
大數(shù)據(jù)來源
此層包含所有必要的數(shù)據(jù)源,提供了解決業(yè)務(wù)問題所需的洞察。數(shù)據(jù)是結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),而且來自許多來源:
1、企業(yè)遺留系統(tǒng)—?這些系統(tǒng)是企業(yè)應(yīng)用程序,執(zhí)行業(yè)務(wù)需要的分析并獲取需要的洞察:
客戶關(guān)系管理系統(tǒng)
結(jié)算操作
大型機應(yīng)用程序
企業(yè)資源規(guī)劃
Web 應(yīng)用程序開發(fā)
Web 應(yīng)用程序和其他數(shù)據(jù)來源擴充了企業(yè)擁有的數(shù)據(jù)。這些應(yīng)用程序可使用自定義的協(xié)議和機制來公開數(shù)據(jù)。
2、數(shù)據(jù)管理系統(tǒng) (DMS)— 數(shù)據(jù)管理系統(tǒng)存儲邏輯數(shù)據(jù)、流程、策略和各種其他類型的文檔:
Microsoft? Excel? 電子表格
Microsoft Word 文檔
這些文檔可以轉(zhuǎn)換為可用于分析的結(jié)構(gòu)化數(shù)據(jù)。文檔數(shù)據(jù)可公開為領(lǐng)域?qū)嶓w,或者數(shù)據(jù)改動和存儲層可將它轉(zhuǎn)換為領(lǐng)域?qū)嶓w。
3、數(shù)據(jù)存儲— 數(shù)據(jù)存儲包含企業(yè)數(shù)據(jù)倉庫、操作數(shù)據(jù)庫和事務(wù)數(shù)據(jù)庫。此數(shù)據(jù)通常是結(jié)構(gòu)化數(shù)據(jù),可直接使用或輕松地轉(zhuǎn)換來滿足需求。這些數(shù)據(jù)不一定存儲在分布式文件系統(tǒng)中,具體依賴于所處的上下文。
4、智慧設(shè)備— 智慧設(shè)備能夠捕獲、處理和傳輸使用最廣泛的協(xié)議和格式的信息。這方面的示例包括智能電話、儀表和醫(yī)療設(shè)備。這些設(shè)備可用于執(zhí)行各種類型的分析。絕大多數(shù)智慧設(shè)備都會執(zhí)行實時分析,但從智慧設(shè)備傳來的信息也可批量分析。
5、聚合的數(shù)據(jù)提供程序— 這些提供程序擁有或獲取數(shù)據(jù),并以復(fù)雜的格式和所需的頻率通過特定的過濾器公開它。每天都會產(chǎn)生海量的數(shù)據(jù),它們具有不同的格式,以不同的速度生成,而且通過各種數(shù)據(jù)提供程序、傳感器和現(xiàn)有企業(yè)提供。
其他數(shù)據(jù)源— 有許多數(shù)據(jù)來自自動化的來源:
地理信息:
地圖
地區(qū)詳細信息
位置詳細信息
礦井詳細信息
人類生成的內(nèi)容:
社交媒體
電子郵件
博客
在線信息
傳感器數(shù)據(jù):
環(huán)境:天氣、降雨量、濕度、光線
電氣:電流、能源潛力等
導(dǎo)航裝置
電離輻射、亞原子粒子等
靠近、存在等
位置、角度、位移、距離、速度、加速度
聲音、聲震動等
汽車、運輸?shù)?/p>
熱量、熱度、溫度
光學(xué)、光、成像、見光度
化學(xué)
壓力
流動、流體、速度
力、密度級別等
來自傳感器供應(yīng)商的其他數(shù)據(jù)
數(shù)據(jù)改動和存儲層
因為傳入的數(shù)據(jù)可能具有不同的特征,所以數(shù)據(jù)改動和存儲層中的組件必須能夠以各種頻率、格式、大小和在各種通信渠道上讀取數(shù)據(jù):
數(shù)據(jù)獲取— 從各種數(shù)據(jù)源獲取數(shù)據(jù),并將其發(fā)送到數(shù)據(jù)整理組件或存儲在指定的位置中。此組件必須足夠智能,能夠選擇是否和在何處存儲傳入的數(shù)據(jù)。它必須能夠確定數(shù)據(jù)在存儲前是否應(yīng)改動,或者數(shù)據(jù)是否可直接發(fā)送到業(yè)務(wù)分析層。
數(shù)據(jù)整理— 負責(zé)將數(shù)據(jù)修改為需要的格式,以實現(xiàn)分析用途。此組件可擁有簡單的轉(zhuǎn)換邏輯或復(fù)雜的統(tǒng)計算法來轉(zhuǎn)換源數(shù)據(jù)。分析引擎將會確定所需的特定的數(shù)據(jù)格式。主要的挑戰(zhàn)是容納非結(jié)構(gòu)化數(shù)據(jù)格式,比如圖像、音頻、視頻和其他二進制格式。
分布式數(shù)據(jù)存儲— 負責(zé)存儲來自數(shù)據(jù)源的數(shù)據(jù)。通常,這一層中提供了多個數(shù)據(jù)存儲選項,比如分布式文件存儲 (DFS)、云、結(jié)構(gòu)化數(shù)據(jù)源、NoSQL 等。
分析層
這是從數(shù)據(jù)中提取業(yè)務(wù)洞察的層:
分析層實體識別— 負責(zé)識別和填充上下文實體。這是一個復(fù)雜的任務(wù),需要高效的高性能流程。數(shù)據(jù)整理組件應(yīng)為這個實體識別組件提供補充,將數(shù)據(jù)修改為需要的格式。分析引擎將需要上下文實體來執(zhí)行分析。
分析引擎— 使用其他組件(具體來講,包括實體鑒別、模型管理和分析算法)來處理和執(zhí)行分析。分析引擎可具有支持并行處理的各種不同的工作流、算法和工具。
模型管理— 負責(zé)維護各種統(tǒng)計模型,驗證和檢驗這些模型,通過持續(xù)培訓(xùn)模型來提高準確性。然后,模型管理組件會推廣這些模型,它們可供實體識別或分析引擎組件使用。
使用層
這一層使用了從分析應(yīng)用程序獲取的業(yè)務(wù)洞察。分析的結(jié)果由組織內(nèi)的各個用戶和組織外部的實體(比如客戶、供應(yīng)商、合作伙伴和提供商)使用。此洞察可用于針對客戶提供產(chǎn)品營銷信息。例如,借助從分析中獲取的洞察,公司可以使用客戶偏好數(shù)據(jù)和位置感知,在客戶經(jīng)過通道或店鋪時向他們提供個性化的營銷信息。
該洞察可用于檢測欺詐,實時攔截交易,并將它們與使用已存儲在企業(yè)中的數(shù)據(jù)構(gòu)建的視圖進行關(guān)聯(lián)。在欺詐性交易發(fā)生時,可以告知客戶可能存在欺詐,以便及時采取更正操作。
此外,可以根據(jù)在數(shù)據(jù)改動層完成的分析來觸發(fā)業(yè)務(wù)流程。可以啟動自動化的步驟 — 例如,如果客戶接受了一條可自動觸發(fā)的營銷信息,則需要創(chuàng)建一個新訂單,如果客戶報告了欺詐,那么可以觸發(fā)對信用卡使用的阻止。
分析的輸出也可由推薦引擎使用,該引擎可將客戶與他們喜歡的產(chǎn)品相匹配。推薦引擎分析可用的信息,并提供個性化且實時的推薦。
使用層還為內(nèi)部用戶提供了理解、找到和導(dǎo)航企業(yè)內(nèi)外的鏈鎖信息的能力。對于內(nèi)部使用者,為業(yè)務(wù)用戶構(gòu)建報告和儀表板的能力使得利益相關(guān)者能夠制定精明的決策并設(shè)計恰當(dāng)?shù)膽?zhàn)略。為了提高操作有效性,可以從數(shù)據(jù)中生成實時業(yè)務(wù)警告,而且可以監(jiān)視操作性的關(guān)鍵績效指標(biāo):
交易攔截器— 此組件可實時攔截高容量交易,將它們轉(zhuǎn)換為一種容易被分析層理解的實時格式,以便在傳入數(shù)據(jù)上執(zhí)行實時分析。事務(wù)攔截器應(yīng)能夠集成并處理來自各種來源的數(shù)據(jù),比如傳感器、智能儀表、麥克風(fēng)、攝像頭、GPS 設(shè)備、ATM 和圖像掃描儀。可以使用各種類型的適配器和 API 來連接到數(shù)據(jù)源。也可以使用各種加速器來簡化開發(fā),比如實時優(yōu)化和流分析,視頻分析,銀行、保險、零售、電信和公共運輸領(lǐng)域的加速器,社交媒體分析,以及情緒分析。
業(yè)務(wù)流程管理流程— 來自分析層的洞察可供業(yè)務(wù)流程執(zhí)行語言 (BPEL) 流程、API 或其他業(yè)務(wù)流程使用,通過自動化上游和下游 IT 應(yīng)用程序、人員和流程的功能,進一步獲取業(yè)務(wù)價值。
實時監(jiān)視— 可以使用從分析中得出的數(shù)據(jù)來生成實時警告。可以將警告發(fā)送給感興趣的使用者和設(shè)備,比如智能電話和平板電腦。可以使用從分析組件生成的數(shù)據(jù)洞察,定義并監(jiān)視關(guān)鍵績效指標(biāo),以便確定操作有效性。實時數(shù)據(jù)可從各種來源以儀表板的形式向業(yè)務(wù)用戶公開,以便監(jiān)視系統(tǒng)的健康或度量營銷活動的有效性。
報告引擎— 生成與傳統(tǒng)商業(yè)智能報告類似的報告的能力至關(guān)重要。用戶可基于從分析層中得到的洞察,創(chuàng)建臨時報告、計劃的報告或自助查詢和分析。
推薦引擎— 基于來自分析層的分析結(jié)果,推薦引擎可向購物者提供實時的、相關(guān)的和個性化的推薦,提高電子商務(wù)交易中的轉(zhuǎn)換率和每個訂單的平均價值。該引擎實時處理可用信息并動態(tài)地響應(yīng)每個用戶,響應(yīng)基于用戶的實時活動、存儲在 CRM 系統(tǒng)中的注冊客戶信息,以及非注冊客戶的社交概況。
可視化和發(fā)現(xiàn)— 數(shù)據(jù)可跨企業(yè)內(nèi)外的各種聯(lián)邦的數(shù)據(jù)源進行導(dǎo)航。數(shù)據(jù)可能具有不同的內(nèi)容和格式,所有數(shù)據(jù)(結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化)可組合來進行可視化并提供給用戶。此能力使得組織能夠?qū)⑵鋫鹘y(tǒng)的企業(yè)內(nèi)容(包含在企業(yè)內(nèi)容管理系統(tǒng)和數(shù)據(jù)倉庫中)與新的社交內(nèi)容(例如 tweet 和博客文章)組合到單個用戶界面中。
垂直層
影響邏輯層(大數(shù)據(jù)來源、數(shù)據(jù)改動和存儲、分析和使用層)的所有組件的各方面都包含在垂直層中:
信息集成
大數(shù)據(jù)治理
系統(tǒng)管理
服務(wù)質(zhì)量
信息集成
大數(shù)據(jù)應(yīng)用程序從各種數(shù)據(jù)起源、提供程序和數(shù)據(jù)源獲取數(shù)據(jù),并存儲在 HDFS、NoSQL 和 MongoDB 等數(shù)據(jù)存儲系統(tǒng)中。這個垂直層可供各種組件使用(例如數(shù)據(jù)獲取、數(shù)據(jù)整理、模型管理和交易攔截器),負責(zé)連接到各種數(shù)據(jù)源。集成將具有不同特征(例如協(xié)議和連接性)的數(shù)據(jù)源的信息,需要高質(zhì)量的連接器和適配器。可以使用加速器連接到大多數(shù)已知和廣泛使用的來源。這些加速器包括社交媒體適配器和天氣數(shù)據(jù)適配器。各種組件還可以使用這一層在大數(shù)據(jù)存儲中存儲信息,從大數(shù)據(jù)存儲中檢索信息,以便處理這些信息。大多數(shù)大數(shù)據(jù)存儲都提供了服務(wù)和 API 來存儲和檢索該信息。
大數(shù)據(jù)治理
數(shù)據(jù)治理涉及到定義指南來幫助企業(yè)制定有關(guān)數(shù)據(jù)的正確決策。大數(shù)據(jù)治理有助于處理企業(yè)內(nèi)或從外部來源傳入的數(shù)據(jù)的復(fù)雜性、量和種類。在將數(shù)據(jù)傳入企業(yè)進行處理、存儲、分析和清除或歸檔時,需要強有力的指南和流程來監(jiān)視、構(gòu)建、存儲和保護數(shù)據(jù)。
除了正常的數(shù)據(jù)治理考慮因素之外,大數(shù)據(jù)治理還包含其他因素:
1、管理各種格式的大量數(shù)據(jù)。
2、持續(xù)培訓(xùn)和管理必要的統(tǒng)計模型,以便對非結(jié)構(gòu)化數(shù)據(jù)和分析進行預(yù)處理。請記住,設(shè)置處理非結(jié)構(gòu)化數(shù)據(jù)時的重要一步。
3、為外部數(shù)據(jù)設(shè)置有關(guān)其保留和使用的策略和合規(guī)性制度。
4、定義數(shù)據(jù)歸檔和清除策略。
5、創(chuàng)建如何跨各種系統(tǒng)復(fù)制數(shù)據(jù)的策略。
6、設(shè)置數(shù)據(jù)加密策略。
服務(wù)質(zhì)量層
此層復(fù)雜定義數(shù)據(jù)質(zhì)量、圍繞隱私和安全性的策略、數(shù)據(jù)頻率、每次抓取的數(shù)據(jù)大小和數(shù)據(jù)過濾器:
數(shù)據(jù)質(zhì)量
1、完整地識別所有必要的數(shù)據(jù)元素
2、以可接受的新鮮度提供數(shù)據(jù)的時間軸
3、依照數(shù)據(jù)準確性規(guī)則來驗證數(shù)據(jù)的準確性
4、采用一種通用語言(數(shù)據(jù)元組滿足使用簡單業(yè)務(wù)語言所表達的需求)
5、依據(jù)數(shù)據(jù)一致性規(guī)則驗證來自多個系統(tǒng)的數(shù)據(jù)一致性
6、在滿足數(shù)據(jù)規(guī)范和信息架構(gòu)指南基礎(chǔ)上的技術(shù)符合性
圍繞隱私和安全的策略
需要策略來保護敏感數(shù)據(jù)。從外部機構(gòu)和提供程序獲取的數(shù)據(jù)可能包含敏感數(shù)據(jù)(比如 Facebook 用戶的聯(lián)系信息或產(chǎn)品定價信息)。數(shù)據(jù)可以來源于不同的地區(qū)和國家,但必須進行相應(yīng)的處理。必須制定有關(guān)數(shù)據(jù)屏蔽和這類數(shù)據(jù)的存儲的決策。考慮以下數(shù)據(jù)訪問策略:
A、數(shù)據(jù)可用性
B、數(shù)據(jù)關(guān)鍵性
C、數(shù)據(jù)真實性
D、數(shù)據(jù)共享和發(fā)布
E、數(shù)據(jù)存儲和保留,包括能否存儲外部數(shù)據(jù)等問題。如果能夠存儲數(shù)據(jù),數(shù)據(jù)可存儲多長時間?可存儲何種類型的數(shù)據(jù)?
F、數(shù)據(jù)提供程序約束(政策、技術(shù)和地區(qū))
G、社交媒體使用條款
數(shù)據(jù)頻率
提供新鮮數(shù)據(jù)的頻率是多少?它是按需、連續(xù)還是離線的?
抓取的數(shù)據(jù)大小
此屬性有助于定義可抓取的數(shù)據(jù)以及每次抓取后可使用的數(shù)據(jù)大小。
過濾器
標(biāo)準過濾器會刪除不想要的數(shù)據(jù)和數(shù)據(jù)中的干擾數(shù)據(jù),僅留下分析所需的數(shù)據(jù)。
系統(tǒng)管理
系統(tǒng)管理對大數(shù)據(jù)至關(guān)重要,因為它涉及到跨企業(yè)集群和邊界的許多系統(tǒng)。對整個大數(shù)據(jù)生態(tài)系統(tǒng)的健康的監(jiān)視包括:
A、管理系統(tǒng)日志、虛擬機、應(yīng)用程序和其他設(shè)備
B、關(guān)聯(lián)各種日志,幫助調(diào)查和監(jiān)視具體情形
C、監(jiān)視實時警告和通知
D、使用顯示各種參數(shù)的實時儀表板
E、引用有關(guān)系統(tǒng)的報告和詳細分析
F、設(shè)定和遵守服務(wù)水平協(xié)議
G、管理存儲和容量
G、歸檔和管理歸檔檢索
I、執(zhí)行系統(tǒng)恢復(fù)、集群管理和網(wǎng)絡(luò)管理
J、策略管理
結(jié)束語
對開發(fā)人員而言,層提供了一種對大數(shù)據(jù)解決方案必須執(zhí)行的功能進行分類的途徑,為組織建議必需執(zhí)行這些功能所需的代碼。但是,對于想要從大數(shù)據(jù)獲取洞察的業(yè)務(wù)用戶,考慮大數(shù)據(jù)需求和范圍通常會有所幫助。原子模式解決了訪問、處理、存儲和使用大數(shù)據(jù)的機制,為業(yè)務(wù)用戶提供了一種解決需求和范圍的途徑。下一篇文章將介紹用于此用途的原子模式。
淘寶開源的TDDL和cobar的結(jié)合,放到了阿里云上就是DRDS,是商品,服務(wù),可以購買使用的。可以在阿里云官網(wǎng)上注冊免費試用。
=====================================================
隨著互聯(lián)網(wǎng)時代的到來,計算機要管理的數(shù)據(jù)量呈指數(shù)級別地飛速上漲,而我們卻完全無法對用戶數(shù)做出準確預(yù)估。我們的系統(tǒng)所需要支持的用戶數(shù),很可能在短短的一個月內(nèi)突然爆發(fā)式地增長幾千倍,數(shù)據(jù)也很可能快速地從原來的幾百GB飛速上漲到了幾百個TB。如果在這爆發(fā)的關(guān)鍵時刻,系統(tǒng)不穩(wěn)定或無法訪問,那么對于業(yè)務(wù)將會是毀滅性的打擊。
伴隨著這種對于系統(tǒng)性能、成本以及擴展性的新需要,以HBase、MongoDB為代表的NoSQL數(shù)據(jù)庫和以阿里DRDS、VoltDB、ScaleBase為代表的分布式NewSQL數(shù)據(jù)庫如雨后春筍般不斷涌現(xiàn)出來。
本文將會介紹阿里DRDS的技術(shù)理念、發(fā)展歷程、技術(shù)特性等內(nèi)容。
DRDS設(shè)計理念
從20世紀70年代關(guān)系數(shù)據(jù)庫創(chuàng)立開始,其實大家在數(shù)據(jù)庫上的追求就從未發(fā)生過變化:更快的存取數(shù)據(jù),可以按需擴縮以承載更大的訪問量和更大的數(shù)據(jù)量,開發(fā)容易,硬件成本低,我們可以把這叫做數(shù)據(jù)庫領(lǐng)域的圣杯。
為了支撐更大的訪問量和數(shù)據(jù)量,我們必然需要分布式數(shù)據(jù)庫系統(tǒng),然而分布式系統(tǒng)又必然會面對強一致性所帶來的延遲提高的問題,因為網(wǎng)絡(luò)通信本身比單機內(nèi)通信代價高很多,這種通信的代價就會直接增加系統(tǒng)單次提交的延遲。延遲提高會導(dǎo)致數(shù)據(jù)庫鎖持有時間變長,使得高沖突條件下分布式事務(wù)的性能不升反降(這個具體可以了解一下Amdahl定律),甚至性能距離單機數(shù)據(jù)庫都還有明顯的差距。
從上面的說明,我們可以發(fā)現(xiàn),問題的關(guān)鍵并不是分布式事務(wù)做不出來,而是做出來了卻因為性能太差而沒有什么卵用。數(shù)據(jù)庫領(lǐng)域的高手們努力了40年,但至今仍然沒有人能夠很好地解決這個問題,Google Spanner的開發(fā)負責(zé)人就經(jīng)常在他的Blog上談?wù)撗舆t的問題,相信也是飽受這個問題的困擾。
面對這個難題,傳統(tǒng)的關(guān)系數(shù)據(jù)庫選擇了放棄分布式的方案,因為在20世紀70~80年代,我們的數(shù)據(jù)庫主要被用來處理企業(yè)內(nèi)的各類數(shù)據(jù),面對的用戶不過幾千人,而數(shù)據(jù)量最多也就是TB級別。用單臺機器來處理事務(wù),用個磁盤陣列處理一下磁盤容量不夠的問題,基本上就能解決一切問題了。
然而,信息化和互聯(lián)網(wǎng)的浪潮改變了這一切,我們突然發(fā)現(xiàn),我們服務(wù)的對象發(fā)生了根本性變化,從原來的幾千人,變成了現(xiàn)在的幾億人,數(shù)據(jù)量也從TB級別到了PB級別甚至更多。存在單點的單機系統(tǒng)無論如何努力,都會面對系統(tǒng)處理能力的天花板。原來的這條路,看起來是走不下去了,我們必須想辦法換一條路來走。
可是,分布式數(shù)據(jù)庫所面對的強一致性難題卻像一座高山,人們努力了無數(shù)個日日夜夜,但能翻越這座山的日子看來仍然遙遙無期。
于是,有一群人認為,強一致性這件事看來不怎么靠譜,那徹底繞開這個問題是不是個更好的選擇?他們發(fā)現(xiàn)確實有那么一些場景是不需要強一致事務(wù)的,甚至連SQL都可以不要,最典型的就是日志流水的記錄與分析這類場景。而去掉了事務(wù)和SQL,接口簡單了,性能就更容易得到提升,擴展性也更容易實現(xiàn),這就是NoSQL系統(tǒng)的起源。
雖然NoSQL解決了性能和擴展性問題,但這種繞開問題的方法給用戶帶來了很多困擾,系統(tǒng)的開發(fā)成本也大大提升。這時候就有另外一群人,他們覺得用戶需要SQL,覺得用戶也需要事務(wù),問題的關(guān)鍵在于我們要努力地往圣杯的方向不斷前進。在保持系統(tǒng)的擴展性和性能的前提下,付出盡可能小的代價來滿足業(yè)務(wù)對數(shù)據(jù)庫的需要。這就是NewSQL這個理念的由來。
DRDS也是一個NewSQL的系統(tǒng),它與ScaleBase、VoltDB等系統(tǒng)類似,都希望能夠找到一條既能保持系統(tǒng)的高擴展性和高性能,又能盡可能保持傳統(tǒng)數(shù)據(jù)庫的ACID事務(wù)和SQL特性的分布式數(shù)據(jù)庫系統(tǒng)。
DRDS發(fā)展歷程
在一開始,TDDL的主要功能就是做數(shù)據(jù)庫切分,一個或一組SQL請求提交到TDDL,TDDL進行規(guī)則運算后得知SQL應(yīng)該被分發(fā)到哪個機器,直接將SQL轉(zhuǎn)發(fā)到對應(yīng)機器即可(如圖1)。
圖1 TDDL數(shù)據(jù)庫切分
開始的時候,這種簡單的路由策略能夠滿足用戶的需要,我們開始的那些應(yīng)用,就是通過這樣非常簡單的方式完成了他所有的應(yīng)用請求。我們也認為,這種方案簡單可靠,已經(jīng)足夠好用了。
然而,當(dāng)我們服務(wù)的應(yīng)用從十幾個增長到幾百個的時候,大量的中小應(yīng)用加入,大家紛紛表示,原來的方案限制太大,很多應(yīng)用其實只是希望做個讀寫分離,希望能有更好的SQL兼容性。
于是,我們做了第一次重大升級,在這次升級里,我們提出了一個重要的概念就是三層架構(gòu),Matrix對應(yīng)數(shù)據(jù)庫切分場景,對SQL有一定限制,Group對應(yīng)讀寫分離和高可用場景,對SQL幾乎沒有限制。如圖2所示。
圖2 數(shù)據(jù)庫升級為三層架構(gòu)
這種做法立刻得到了大家的認可,TDDL所提供的讀寫分離、分庫分表等核心功能,也成為了阿里集團內(nèi)數(shù)據(jù)庫領(lǐng)域的標(biāo)配組件,在阿里的幾乎所有應(yīng)用上都有應(yīng)用。最為難得的是,這些功能從上線后,到現(xiàn)在已經(jīng)經(jīng)歷了多年雙11的嚴酷考驗,從未出現(xiàn)過嚴重故障(p0、p1級別故障屬于嚴重故障)。數(shù)據(jù)庫體系作為整個應(yīng)用系統(tǒng)的重中之重,能做到這件事,真是非常不容易。
隨著核心功能的穩(wěn)定,自2010年開始,我們集中全部精力開始關(guān)注TDDL后端運維系統(tǒng)的完善與改進性工作。在DBA團隊的給力配合下,圍繞著TDDL,我們成功做到了在線數(shù)據(jù)動態(tài)擴縮、異步索引等關(guān)鍵特征,同時也比較成功地構(gòu)建了一整套分布式數(shù)據(jù)庫服務(wù)管控體系,用戶基本上可以完全自助地完成整套數(shù)據(jù)庫環(huán)境的搭建與初始化工作。
大概是2012年,我們在阿里云團隊的支持下,開始嘗試將TDDL這套體系輸出到阿里云上,也有了個新的名字:阿里分布式數(shù)據(jù)庫服務(wù)(DRDS),希望能夠用我們的技術(shù)服務(wù)好更多的人。
不過當(dāng)我們滿懷自信地把自己的軟件拿到云上的時候,卻發(fā)現(xiàn)我們的軟件距離用戶的要求差距很大。在內(nèi)部因為有DBA的同學(xué)們幫助進行SQL review,所以SQL的復(fù)雜度都是可控的。然而到了云上,看了各種渠道提過來的兼容性需求,我們經(jīng)常是不自覺地發(fā)出這樣的感嘆:“啊?原來這種語法MySQL也是可以支持的?”
于是,我們又進行了架構(gòu)升級,這次是以兼容性為核心目標(biāo)的系統(tǒng)升級工作,希望能夠在分布式場景下支持各類復(fù)雜的SQL,同時也將阿里這么多年來在分布式事務(wù)上的積累都帶到了DRDS里面。
這次架構(gòu)升級,我們的投入史無前例,用了三年多才將整個系統(tǒng)落地完成。我們先在內(nèi)部以我們自己的業(yè)務(wù)作為首批用戶上線,經(jīng)過了內(nèi)部幾百個應(yīng)用的嚴酷考驗以后,我們才敢拿到云上,給到我們的最終用戶使用。
目前,我們正在將TDDL中更多的積累輸出到云上,同時也努力優(yōu)化我們的用戶界面。PS:其實用戶界面優(yōu)化對我們這種專注于高性能后端技術(shù)的團隊來說,才是最大的技術(shù)挑戰(zhàn),連我也去學(xué)了AngularJS,參與了用戶UI編。
DRDS主要功能介紹
發(fā)展歷史看完了,下面就由我來介紹一下目前我們已經(jīng)輸出到云上的主要功能。
【分布式SQL執(zhí)行引擎】
分布式SQL引擎主要的目的,就是實現(xiàn)與單機數(shù)據(jù)庫SQL引擎的完全兼容。目前我們的SQL引擎能夠做到與MySQL的SQL引擎全兼容,包括各類join和各類復(fù)雜函數(shù)等。他主要包含SQL解析、優(yōu)化、執(zhí)行和合并四個流程,如圖3中綠色部分。
圖3 SQL引擎實現(xiàn)的主要流程
雖然SQL是兼容的,但是分布式SQL執(zhí)行算法與單機SQL的執(zhí)行算法卻完全不同,原因也很簡單,網(wǎng)絡(luò)通信的延遲比單機內(nèi)通信的延遲大得多。舉個例子說明一下,我們有份文件要從一張紙A上謄寫到另外一張紙B上,單機系統(tǒng)就好比兩張紙都在同一個辦公室里,而分布式數(shù)據(jù)庫則就像是一張紙在北京,一張紙在杭州。
自然地,如果兩張紙在同一個辦公室,因為傳輸距離近,逐行謄寫的效率是可以接受的。而如果距離是北京到杭州,用逐行謄寫的方式,就立刻顯得代價太高了,我們總不能看一行,就打個“飛的”去杭州寫下來吧。在這種情況下,還是把紙A上的信息拍個照片,【一整批的】帶到杭州去處理,明顯更簡單一些。這就是分布式數(shù)據(jù)庫特別強調(diào)吞吐調(diào)優(yōu)的原因,只要是涉及到跨機的所有查詢,都必須盡可能的積攢一批后一起發(fā)送,以減少系統(tǒng)延遲提高帶來的不良影響。
【按需數(shù)據(jù)庫集群平滑擴縮】
DRDS允許應(yīng)用按需將新的單機存儲加入或移出集群,DRDS則能夠保證應(yīng)用在遷移流程中實現(xiàn)不停機擴容縮容。
圖4 DRDS按需進行平滑擴縮
在內(nèi)部的數(shù)據(jù)庫使用實踐中,這個功能的一個最重要應(yīng)用場景就是雙11了。在雙11之前,我們會將大批的機器加入到我們的數(shù)據(jù)庫集群中,抗過了雙11,這批機器就會下線。
當(dāng)DRDS來到云上,我們發(fā)現(xiàn)雙11其實不僅僅只影響阿里內(nèi)部的系統(tǒng)。在下游的各類電商輔助性系統(tǒng)其實也面對巨大壓力。在雙11前5天,網(wǎng)聚寶的熊總就找到我說,擔(dān)心撐不過雙11的流量,怕系統(tǒng)掛。于是我們就給他介紹了這個自動擴容的功能怎么用,他買了一個月的數(shù)據(jù)庫,掛接在DRDS上。數(shù)據(jù)庫能力立刻翻倍,輕松抗過了雙11,也算是我印象比較深刻的一個案例了。
因為我們完全無法預(yù)測在什么時間點系統(tǒng)會有爆發(fā)性的增長,而如果在這時候系統(tǒng)因為技術(shù)原因不能使用,就會給整個業(yè)務(wù)帶來毀滅性的影響,風(fēng)口一旦錯過,就追悔莫及了。我想這就是云計算特別強調(diào)可擴展能力的原因吧。
【小表廣播】
小表廣播也是我們在分布式數(shù)據(jù)庫領(lǐng)域內(nèi)最常用的工具之一,他的核心目的其實都是一個——盡可能讓查詢只發(fā)生在單機。
讓我們用一個例子來說明,小表廣播的一般使用場景。
圖5 小表廣播場景
圖5中,如果我想知道買家id等于0的用戶在商城里面買了哪些商品,我們一般會先將這兩個表join起來,然后再用where平臺名=”商城” and buyerID = 0找到符合要求的數(shù)據(jù)。然而這種join的方式,會導(dǎo)致大量的針對左表的網(wǎng)絡(luò)I/O。如果要取出的數(shù)據(jù)量比較大,系統(tǒng)延遲會明顯上升。
這時候,為了提升性能,我們就必須要減少跨機join的網(wǎng)絡(luò)代價。我們比較推薦應(yīng)用做如下處理,將左表復(fù)制到右表的每一個庫上。這樣,join操作就由分布式j(luò)oin一下變回到本地join,系統(tǒng)的性能就有很大的提升了,如圖6所示。
圖6
【分布式事務(wù)套件】
在阿里巴巴的業(yè)務(wù)體系中存在非常多需要事務(wù)類的場景,下單減庫存,賬務(wù),都是事務(wù)場景最集中的部分。
而我們處理事務(wù)的方法卻和傳統(tǒng)應(yīng)用處理事務(wù)的方案不大一樣,我們非常強調(diào)事務(wù)的最終一致性和異步化。利用這種方式,能夠極大地降低分布式系統(tǒng)中鎖持有的時間,從而極大地提升系統(tǒng)性能。
圖7 DRDS分布式事務(wù)解決套件
這種處理機制,是我們分布式事務(wù)能夠以極低成本大量運行的最核心法門。在DRDS平臺內(nèi),我們將這些方案產(chǎn)品化,為了DRDS的分布式事務(wù)解決套件。
利用他們,能夠讓你以比較低的成本,實現(xiàn)低延遲,高吞吐的分布式事務(wù)場景。
DRDS的未來
阿里分布式數(shù)據(jù)庫服務(wù)DRDS上線至今,大家對這款產(chǎn)品的熱情超出了我們的預(yù)期,短短半年內(nèi)已經(jīng)有幾千個申請。
盡管還在公測期,但是大家就已經(jīng)把關(guān)系到身家性命的寶貴在線數(shù)據(jù)業(yè)務(wù)放到了DRDS上,我能夠感受到這份沉甸甸的信賴,也不想辜負這份信賴。
經(jīng)過阿里內(nèi)部幾千個應(yīng)用的不斷歷練,DRDS已經(jīng)積累出一套強大的分布式SQL執(zhí)行引擎和和一整套分布式事務(wù)套件。
我也相信,這些積累能夠讓用戶在基本保持單機數(shù)據(jù)庫的使用習(xí)慣的前提下,享受到分布式數(shù)據(jù)庫高性能可擴展的好處。
在平時的DRDS支持過程中,我面對最多的問題就是,DRDS能不能夠在不改變?nèi)魏卧袠I(yè)務(wù)邏輯和代碼的前提下,實現(xiàn)可自由伸縮和擴展呢?十分可惜的是,關(guān)系數(shù)據(jù)庫發(fā)展至今,還沒有找到既能保留傳統(tǒng)數(shù)據(jù)庫一切特性,又能實現(xiàn)高性能可擴展數(shù)據(jù)庫的方法。
然而,雖不能至,吾心向往之!我們會以“可擴展,高性能”為產(chǎn)品核心,堅定地走在追尋圣杯的路上,并堅信最終我們一定能夠找尋到它神圣的所在。
作者簡介:王晶昱,花名沈詢,阿里巴巴資深技術(shù)專家。目前主要負責(zé)阿里的分布式數(shù)據(jù)庫DRDS(TDDL)和阿里的分布式消息服務(wù)ONS(RocketMQ/Notify)兩個系統(tǒng)。
大數(shù)據(jù)技術(shù)發(fā)展史:大數(shù)據(jù)的前世今生
今天我們常說的大數(shù)據(jù)技術(shù),其實起源于Google在2004年前后發(fā)表的三篇論文,也就是我們經(jīng)常聽到的“三駕馬車”,分別是分布式文件系統(tǒng)GFS、大數(shù)據(jù)分布式計算框架MapReduce和NoSQL數(shù)據(jù)庫系統(tǒng)BigTable。
你知道,搜索引擎主要就做兩件事情,一個是網(wǎng)頁抓取,一個是索引構(gòu)建,而在這個過程中,有大量的數(shù)據(jù)需要存儲和計算。這“三駕馬車”其實就是用來解決這個問題的,你從介紹中也能看出來,一個文件系統(tǒng)、一個計算框架、一個數(shù)據(jù)庫系統(tǒng)。
現(xiàn)在你聽到分布式、大數(shù)據(jù)之類的詞,肯定一點兒也不陌生。但你要知道,在2004年那會兒,整個互聯(lián)網(wǎng)還處于懵懂時代,Google發(fā)布的論文實在是讓業(yè)界為之一振,大家恍然大悟,原來還可以這么玩。
因為那個時間段,大多數(shù)公司的關(guān)注點其實還是聚焦在單機上,在思考如何提升單機的性能,尋找更貴更好的服務(wù)器。而Google的思路是部署一個大規(guī)模的服務(wù)器集群,通過分布式的方式將海量數(shù)據(jù)存儲在這個集群上,然后利用集群上的所有機器進行數(shù)據(jù)計算。 這樣,Google其實不需要買很多很貴的服務(wù)器,它只要把這些普通的機器組織到一起,就非常厲害了。
當(dāng)時的天才程序員,也是Lucene開源項目的創(chuàng)始人Doug Cutting正在開發(fā)開源搜索引擎Nutch,閱讀了Google的論文后,他非常興奮,緊接著就根據(jù)論文原理初步實現(xiàn)了類似GFS和MapReduce的功能。
兩年后的2006年,Doug Cutting將這些大數(shù)據(jù)相關(guān)的功能從Nutch中分離了出來,然后啟動了一個獨立的項目專門開發(fā)維護大數(shù)據(jù)技術(shù),這就是后來赫赫有名的Hadoop,主要包括Hadoop分布式文件系統(tǒng)HDFS和大數(shù)據(jù)計算引擎MapReduce。
當(dāng)我們回顧軟件開發(fā)的歷史,包括我們自己開發(fā)的軟件,你會發(fā)現(xiàn),有的軟件在開發(fā)出來以后無人問津或者寥寥數(shù)人使用,這樣的軟件其實在所有開發(fā)出來的軟件中占大多數(shù)。而有的軟件則可能會開創(chuàng)一個行業(yè),每年創(chuàng)造數(shù)百億美元的價值,創(chuàng)造百萬計的就業(yè)崗位,這些軟件曾經(jīng)是Windows、Linux、Java,而現(xiàn)在這個名單要加上Hadoop的名字。
如果有時間,你可以簡單瀏覽下Hadoop的代碼,這個純用Java編寫的軟件其實并沒有什么高深的技術(shù)難點,使用的也都是一些最基礎(chǔ)的編程技巧,也沒有什么出奇之處,但是它卻給社會帶來巨大的影響,甚至帶動一場深刻的科技革命,推動了人工智能的發(fā)展與進步。
我覺得,我們在做軟件開發(fā)的時候,也可以多思考一下,我們所開發(fā)軟件的價值點在哪里?真正需要使用軟件實現(xiàn)價值的地方在哪里?你應(yīng)該關(guān)注業(yè)務(wù)、理解業(yè)務(wù),有價值導(dǎo)向,用自己的技術(shù)為公司創(chuàng)造真正的價值,進而實現(xiàn)自己的人生價值。而不是整天埋頭在需求說明文檔里,做一個沒有思考的代碼機器人。
Hadoop發(fā)布之后,Yahoo很快就用了起來。大概又過了一年到了2007年,百度和阿里巴巴也開始使用Hadoop進行大數(shù)據(jù)存儲與計算。
2008年,Hadoop正式成為Apache的頂級項目,后來Doug Cutting本人也成為了Apache基金會的主席。自此,Hadoop作為軟件開發(fā)領(lǐng)域的一顆明星冉冉升起。
同年,專門運營Hadoop的商業(yè)公司Cloudera成立,Hadoop得到進一步的商業(yè)支持。
這個時候,Yahoo的一些人覺得用MapReduce進行大數(shù)據(jù)編程太麻煩了,于是便開發(fā)了Pig。Pig是一種腳本語言,使用類SQL的語法,開發(fā)者可以用Pig腳本描述要對大數(shù)據(jù)集上進行的操作,Pig經(jīng)過編譯后會生成MapReduce程序,然后在Hadoop上運行。
編寫Pig腳本雖然比直接MapReduce編程容易,但是依然需要學(xué)習(xí)新的腳本語法。于是Facebook又發(fā)布了Hive。Hive支持使用SQL語法來進行大數(shù)據(jù)計算,比如說你可以寫個Select語句進行數(shù)據(jù)查詢,然后Hive會把SQL語句轉(zhuǎn)化成MapReduce的計算程序。
這樣,熟悉數(shù)據(jù)庫的數(shù)據(jù)分析師和工程師便可以無門檻地使用大數(shù)據(jù)進行數(shù)據(jù)分析和處理了。Hive出現(xiàn)后極大程度地降低了Hadoop的使用難度,迅速得到開發(fā)者和企業(yè)的追捧。據(jù)說,2011年的時候,F(xiàn)acebook大數(shù)據(jù)平臺上運行的作業(yè)90%都來源于Hive。
隨后,眾多Hadoop周邊產(chǎn)品開始出現(xiàn),大數(shù)據(jù)生態(tài)體系逐漸形成,其中包括:專門將關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入導(dǎo)出到Hadoop平臺的Sqoop;針對大規(guī)模日志進行分布式收集、聚合和傳輸?shù)腇lume;MapReduce工作流調(diào)度引擎Oozie等。
在Hadoop早期,MapReduce既是一個執(zhí)行引擎,又是一個資源調(diào)度框架,服務(wù)器集群的資源調(diào)度管理由MapReduce自己完成。但是這樣不利于資源復(fù)用,也使得MapReduce非常臃腫。于是一個新項目啟動了,將MapReduce執(zhí)行引擎和資源調(diào)度分離開來,這就是Yarn。2012年,Yarn成為一個獨立的項目開始運營,隨后被各類大數(shù)據(jù)產(chǎn)品支持,成為大數(shù)據(jù)平臺上最主流的資源調(diào)度系統(tǒng)。
同樣是在2012年,UC伯克利AMP實驗室(Algorithms、Machine和People的縮寫)開發(fā)的Spark開始嶄露頭角。當(dāng)時AMP實驗室的馬鐵博士發(fā)現(xiàn)使用MapReduce進行機器學(xué)習(xí)計算的時候性能非常差,因為機器學(xué)習(xí)算法通常需要進行很多次的迭代計算,而MapReduce每執(zhí)行一次Map和Reduce計算都需要重新啟動一次作業(yè),帶來大量的無謂消耗。還有一點就是MapReduce主要使用磁盤作為存儲介質(zhì),而2012年的時候,內(nèi)存已經(jīng)突破容量和成本限制,成為數(shù)據(jù)運行過程中主要的存儲介質(zhì)。Spark一經(jīng)推出,立即受到業(yè)界的追捧,并逐步替代MapReduce在企業(yè)應(yīng)用中的地位。
一般說來,像MapReduce、Spark這類計算框架處理的業(yè)務(wù)場景都被稱作批處理計算,因為它們通常針對以“天”為單位產(chǎn)生的數(shù)據(jù)進行一次計算,然后得到需要的結(jié)果,這中間計算需要花費的時間大概是幾十分鐘甚至更長的時間。因為計算的數(shù)據(jù)是非在線得到的實時數(shù)據(jù),而是歷史數(shù)據(jù),所以這類計算也被稱為大數(shù)據(jù)離線計算。
而在大數(shù)據(jù)領(lǐng)域,還有另外一類應(yīng)用場景,它們需要對實時產(chǎn)生的大量數(shù)據(jù)進行即時計算,比如對于遍布城市的監(jiān)控攝像頭進行人臉識別和嫌犯追蹤。這類計算稱為大數(shù)據(jù)流計算,相應(yīng)地,有Storm、Flink、Spark Streaming等流計算框架來滿足此類大數(shù)據(jù)應(yīng)用的場景。 流式計算要處理的數(shù)據(jù)是實時在線產(chǎn)生的數(shù)據(jù),所以這類計算也被稱為大數(shù)據(jù)實時計算。
在典型的大數(shù)據(jù)的業(yè)務(wù)場景下,數(shù)據(jù)業(yè)務(wù)最通用的做法是,采用批處理的技術(shù)處理歷史全量數(shù)據(jù),采用流式計算處理實時新增數(shù)據(jù)。而像Flink這樣的計算引擎,可以同時支持流式計算和批處理計算。
除了大數(shù)據(jù)批處理和流處理,NoSQL系統(tǒng)處理的主要也是大規(guī)模海量數(shù)據(jù)的存儲與訪問,所以也被歸為大數(shù)據(jù)技術(shù)。 NoSQL曾經(jīng)在2011年左右非常火爆,涌現(xiàn)出HBase、Cassandra等許多優(yōu)秀的產(chǎn)品,其中HBase是從Hadoop中分離出來的、基于HDFS的NoSQL系統(tǒng)。
我們回顧軟件發(fā)展的歷史會發(fā)現(xiàn),差不多類似功能的軟件,它們出現(xiàn)的時間都非常接近,比如Linux和Windows都是在90年代初出現(xiàn),Java開發(fā)中的各類MVC框架也基本都是同期出現(xiàn),Android和iOS也是前腳后腳問世。2011年前后,各種NoSQL數(shù)據(jù)庫也是層出不群,我也是在那個時候參與開發(fā)了阿里巴巴自己的NoSQL系統(tǒng)。
事物發(fā)展有自己的潮流和規(guī)律,當(dāng)你身處潮流之中的時候,要緊緊抓住潮流的機會,想辦法脫穎而出,即使沒有成功,也會更加洞悉時代的脈搏,收獲珍貴的知識和經(jīng)驗。而如果潮流已經(jīng)退去,這個時候再去往這個方向上努力,只會收獲迷茫與壓抑,對時代、對自己都沒有什么幫助。
但是時代的浪潮猶如海灘上的浪花,總是一浪接著一浪,只要你站在海邊,身處這個行業(yè)之中,下一個浪潮很快又會到來。你需要敏感而又深刻地去觀察,略去那些浮躁的泡沫,抓住真正潮流的機會,奮力一搏,不管成敗,都不會遺憾。
正所謂在歷史前進的邏輯中前進,在時代發(fā)展的潮流中發(fā)展。通俗的說,就是要在風(fēng)口中飛翔。
上面我講的這些基本上都可以歸類為大數(shù)據(jù)引擎或者大數(shù)據(jù)框架。而大數(shù)據(jù)處理的主要應(yīng)用場景包括數(shù)據(jù)分析、數(shù)據(jù)挖掘與機器學(xué)習(xí)。數(shù)據(jù)分析主要使用Hive、Spark SQL等SQL引擎完成;數(shù)據(jù)挖掘與機器學(xué)習(xí)則有專門的機器學(xué)習(xí)框架TensorFlow、Mahout以及MLlib等,內(nèi)置了主要的機器學(xué)習(xí)和數(shù)據(jù)挖掘算法。
此外,大數(shù)據(jù)要存入分布式文件系統(tǒng)(HDFS),要有序調(diào)度MapReduce和Spark作業(yè)執(zhí)行,并能把執(zhí)行結(jié)果寫入到各個應(yīng)用系統(tǒng)的數(shù)據(jù)庫中,還需要有一個大數(shù)據(jù)平臺整合所有這些大數(shù)據(jù)組件和企業(yè)應(yīng)用系統(tǒng)。
圖中的所有這些框架、平臺以及相關(guān)的算法共同構(gòu)成了大數(shù)據(jù)的技術(shù)體系,我將會在專欄后面逐個分析,幫你能夠?qū)Υ髷?shù)據(jù)技術(shù)原理和應(yīng)用算法構(gòu)建起完整的知識體系,進可以專職從事大數(shù)據(jù)開發(fā),退可以在自己的應(yīng)用開發(fā)中更好地和大數(shù)據(jù)集成,掌控自己的項目。
希望對您有所幫助!~
在信息化的現(xiàn)代,網(wǎng)絡(luò)安全產(chǎn)業(yè)成為保障“新基建”安全的重要基石,我國網(wǎng)絡(luò)安全行業(yè)市場規(guī)模一直呈現(xiàn)高速增長態(tài)勢。未來,隨著5G網(wǎng)絡(luò)、人工智能、大數(shù)據(jù)等新型網(wǎng)絡(luò)技術(shù)在各個領(lǐng)域的深入開展,其將為網(wǎng)絡(luò)安全企業(yè)的發(fā)展提供新的機遇。
隨著科技的進步和社會的發(fā)展,網(wǎng)絡(luò)安全的概念和內(nèi)涵不斷演進。其發(fā)展歷程可分為起源期、萌芽期、成長期和加速期四個時期,分別對應(yīng)通信加密時代、計算機安全時代、信息安全時代以及網(wǎng)絡(luò)空間安全時代。
目前網(wǎng)絡(luò)安全正處于網(wǎng)絡(luò)空間安全時代的加速期:2014年中央網(wǎng)絡(luò)安全和信息化領(lǐng)導(dǎo)小組成立后,網(wǎng)絡(luò)安全法、等保2.0等政策不斷出臺,網(wǎng)絡(luò)安全上升為國家戰(zhàn)略。
與信息安全時代的區(qū)別在于網(wǎng)絡(luò)邊界逐漸模糊或消失,僅憑傳統(tǒng)的邊界安全已不能做到有效防護,防護理念和技術(shù)發(fā)生深刻改變,主動安全逐漸興起。安全解決方案和安全服務(wù)也越來越被重視。
從我國網(wǎng)絡(luò)安全市場規(guī)模來看,2013年開始,隨著國家在科技專項上的支持加大、用戶需求擴大、企業(yè)產(chǎn)品逐步成熟和不斷創(chuàng)新,網(wǎng)絡(luò)安全產(chǎn)業(yè)依然處在快速成長階段,近年來,受下游需求及政府政策的推動,我國網(wǎng)絡(luò)安全企業(yè)數(shù)量不斷增加,網(wǎng)絡(luò)安全產(chǎn)業(yè)規(guī)模也不斷發(fā)展。
根據(jù)中國網(wǎng)絡(luò)安全產(chǎn)業(yè)聯(lián)盟(CCIA)披露數(shù)據(jù),2015-2019年,市場規(guī)模增速始終保持在17%以上,2019年我國網(wǎng)絡(luò)安全市場規(guī)模達到478億元,CCIA預(yù)計2020年我國網(wǎng)絡(luò)安全市場規(guī)模為553億元,同比增長15.69%。
按照產(chǎn)品結(jié)構(gòu)劃分,網(wǎng)絡(luò)安全可以劃分為安全硬件、安全軟件及安全服務(wù)三大類,而每一大類產(chǎn)品包含眾多的細分市場,如安全硬件包括防火墻、VPN、入侵檢測與防御等,安全軟件包括防病毒軟件、終端安全軟件、郵件安全軟件等,安全服務(wù)包括咨詢、集成、培訓(xùn)、運維等。
IDC表示,2020年,安全硬件在中國整體網(wǎng)絡(luò)安全支出中將繼續(xù)占據(jù)絕對主導(dǎo)地位,占比高達59.1%,安全軟件和安全服務(wù)支出比例分別為18.4%和22.5%。
網(wǎng)絡(luò)安全行業(yè)的發(fā)展一直是威脅、技術(shù)和監(jiān)管等方面相互博弈的結(jié)果,最終達到一個均衡。新的威脅、技術(shù)以及新的監(jiān)管要求,都會帶來市場需求的增長。而對安全企業(yè)來說,需要密切關(guān)注這些力量的變化,推出適合的產(chǎn)品和服務(wù),這樣才能在市場上處于不敗之地。
隨著國家政策對我國網(wǎng)絡(luò)安全行業(yè)的保駕護航,以及網(wǎng)絡(luò)安全需求日益快速增加,政府、企業(yè)、個人在網(wǎng)絡(luò)安全保障方面的投入都將不斷增加,產(chǎn)業(yè)發(fā)展的驅(qū)動力強勁;多重利好因素促使我國網(wǎng)絡(luò)安全行業(yè)市場規(guī)模保持著較快的增速增長。
結(jié)合IDC、CCIA等的預(yù)測,預(yù)計到2026年我國網(wǎng)絡(luò)安全行業(yè)市場規(guī)模將持續(xù)增長到1444億元,年復(fù)合增長率約為17.6%。
—— 以上數(shù)據(jù)及分析請參考于前瞻產(chǎn)業(yè)研究院《中國網(wǎng)絡(luò)安全行業(yè)發(fā)展前景預(yù)測與投資戰(zhàn)略規(guī)劃分析報告》
當(dāng)前題目:nosql起源,開源nosql數(shù)據(jù)庫
當(dāng)前URL:http://chinadenli.net/article20/dsehgjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、小程序開發(fā)、網(wǎng)站排名、網(wǎng)站策劃、網(wǎng)站改版、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)