真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

包含nosql建立大數(shù)據(jù)系統(tǒng)的詞條

如何建立一個(gè)完整可用的安全大數(shù)據(jù)平臺(tái)

創(chuàng)新互聯(lián)公司是一家做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需策劃設(shè)計(jì),網(wǎng)站開發(fā)公司,從2013年開始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。

要建立一個(gè)大數(shù)據(jù)系統(tǒng),我們需要從數(shù)據(jù)流的源頭跟蹤到最后有價(jià)值的輸出,并在現(xiàn)有的Hadoop和大數(shù)據(jù)生態(tài)圈內(nèi)根據(jù)實(shí)際需求挑選并整合各部分合適的組件來構(gòu)建一個(gè)能夠支撐多種查詢和分析功能的系統(tǒng)平臺(tái)。這其中既包括了對(duì)數(shù)據(jù)存儲(chǔ)的選擇,也涵蓋了數(shù)據(jù)線上和線下處理分離等方面的思考和權(quán)衡。此外,沒有任何一個(gè)引入大數(shù)據(jù)解決方案的商業(yè)應(yīng)用在生產(chǎn)環(huán)境上承擔(dān)的起安全隱患。

1

計(jì)算框架篇

大數(shù)據(jù)的價(jià)值

只有在能指導(dǎo)人們做出有價(jià)值的決定時(shí),數(shù)據(jù)才能體現(xiàn)其自身的價(jià)值。因此,大數(shù)據(jù)技術(shù)要服務(wù)于實(shí)際的用途,才是有意義的。一般來說,大數(shù)據(jù)可以從以下三個(gè)方面指導(dǎo)人們做出有價(jià)值的決定:

報(bào)表生成(比如根據(jù)用戶歷史點(diǎn)擊行為的跟蹤和綜合分析、 應(yīng)用程序活躍程度和用戶粘性計(jì)算等);

診斷分析(例如分析為何用戶粘性下降、根據(jù)日志分析系統(tǒng)為何性能下降、垃圾郵件以及病毒的特征檢測(cè)等);

決策(例如個(gè)性化新聞閱讀或歌曲推薦、預(yù)測(cè)增加哪些功能能增加用戶粘性、幫助廣告主進(jìn)行廣告精準(zhǔn)投放、設(shè)定垃圾郵件和病毒攔截策略等)。

圖 1

進(jìn)一步來看,大數(shù)據(jù)技術(shù)從以下三個(gè)方面解決了傳統(tǒng)技術(shù)難以達(dá)成的目標(biāo)(如圖1):

在歷史數(shù)據(jù)上的低延遲(交互式)查詢,目標(biāo)是加快決策過程和時(shí)間, 例如分析一個(gè)站點(diǎn)為何變緩慢并嘗試修復(fù)它;

在實(shí)時(shí)數(shù)據(jù)上的低延遲查詢,目的是幫助用戶和應(yīng)用程序在實(shí)時(shí)數(shù)據(jù)上做出決策, 例如實(shí)時(shí)檢測(cè)并阻攔病毒蠕蟲(一個(gè)病毒蠕蟲可以在1.3秒內(nèi)攻擊1百萬臺(tái)主機(jī));

更加精細(xì)高級(jí)的數(shù)據(jù)處理算法,這可以幫助用戶做出“更好”的決策, 例如圖數(shù)據(jù)處理、異常點(diǎn)檢測(cè)、趨勢(shì)分析及其他機(jī)器學(xué)習(xí)算法。

蛋糕模式

從將數(shù)據(jù)轉(zhuǎn)換成價(jià)值的角度來說,在Hadoop生態(tài)圈十年蓬勃成長(zhǎng)的過程中,YARN和Spark這二者可以算得上是里程碑事件。Yarn的出現(xiàn)使得集群資源管理和數(shù)據(jù)處理流水線分離,大大革新并推動(dòng)了大數(shù)據(jù)應(yīng)用層面各種框架的發(fā)展(SQL on Hadoop框架, 流數(shù)據(jù),圖數(shù)據(jù),機(jī)器學(xué)習(xí))。

它使得用戶不再受到MapReduce開發(fā)模式的約束,而是可以創(chuàng)建種類更為豐富的分布式應(yīng)用程序,并讓各類應(yīng)用程序運(yùn)行在統(tǒng)一的架構(gòu)上,消除了為其他框架維護(hù)獨(dú)有資源的開銷。就好比一個(gè)多層蛋糕,下面兩層是HDFS和Yarn, 而MapReduce就只是蛋糕上層的一根蠟燭而已,在蛋糕上還能插各式各樣的蠟燭。

在這一架構(gòu)體系中,總體數(shù)據(jù)處理分析作業(yè)分三塊(圖2),在HBase上做交互式查詢(Apache Phoenix, Cloudera Impala等), 在歷史數(shù)據(jù)集上編寫MapReduce程序抑或利用Hive等做批處理業(yè)務(wù), 另外對(duì)于實(shí)時(shí)流數(shù)據(jù)分析Apache Storm則會(huì)是一種標(biāo)準(zhǔn)選擇方案。

雖然Yarn的出現(xiàn)極大地豐富了Hadoop生態(tài)圈的應(yīng)用場(chǎng)景,但仍存有兩個(gè)顯而易見的挑戰(zhàn):一是在一個(gè)平臺(tái)上需要維護(hù)三個(gè)開發(fā)堆棧;二是在不同框架內(nèi)很難共享數(shù)據(jù),比如很難在一個(gè)框架內(nèi)對(duì)流數(shù)據(jù)做交互式查詢。這也意味著我們需要一個(gè)更為統(tǒng)一和支持更好抽象的計(jì)算框架的出現(xiàn)。

圖 2

一統(tǒng)江湖

Spark的出現(xiàn)使得批處理任務(wù),交互式查詢,實(shí)時(shí)流數(shù)據(jù)處理被整合到一個(gè)統(tǒng)一的框架內(nèi)(圖3),同時(shí)Spark和現(xiàn)有的開源生態(tài)系統(tǒng)也能夠很好地兼容(Hadoop, HDFS, Yarn, Hive, Flume)。 通過啟用內(nèi)存分布數(shù)據(jù)集,優(yōu)化迭代工作負(fù)載, 用戶能夠更簡(jiǎn)單地操作數(shù)據(jù),并在此基礎(chǔ)上開發(fā)更為精細(xì)的算法,如機(jī)器學(xué)習(xí)和圖算法等。

有三個(gè)最主要的原因促使Spark目前成為了時(shí)下最火的大數(shù)據(jù)開源社區(qū)(擁有超過來自200多個(gè)公司的800多個(gè)contributors):

Spark可以擴(kuò)展部署到超過8000節(jié)點(diǎn)并處理PB級(jí)別的數(shù)據(jù),同時(shí)也提供了很多不錯(cuò)的工具供應(yīng)用開發(fā)者進(jìn)行管理和部署;

Spark提供了一個(gè)交互式shell供開發(fā)者可以用Scala或者Python即時(shí)性試驗(yàn)不同的功能;

Spark提供了很多內(nèi)置函數(shù)使得開發(fā)者能夠比較容易地寫出低耦合的并且能夠并發(fā)執(zhí)行的代碼,這樣開發(fā)人員就更能集中精力地為用戶提供更多的業(yè)務(wù)功能而不是花費(fèi)時(shí)間在優(yōu)化并行化代碼之上。

當(dāng)然Spark也和當(dāng)年的MapReduce一樣不是萬靈藥,比如對(duì)實(shí)時(shí)性要求很高的流數(shù)據(jù)處理上Apache Storm還是被作為主流選擇, 因?yàn)镾park Streaming實(shí)際上是microbatch(將一個(gè)流數(shù)據(jù)按時(shí)間片切成batch,每個(gè)batch提交一個(gè)job)而不是事件觸發(fā)實(shí)時(shí)系統(tǒng),所以雖然支持者們認(rèn)為microbatch在系統(tǒng)延時(shí)性上貢獻(xiàn)并不多,但在生產(chǎn)環(huán)境中和Apache Storm相比還不是特別能滿足對(duì)低延時(shí)要求很高的應(yīng)用場(chǎng)景。

比如在實(shí)踐過程中, 如果統(tǒng)計(jì)每條消息的平均處理時(shí)間,很容易達(dá)到毫秒級(jí)別,但一旦統(tǒng)計(jì)類似service assurance(確保某條消息在毫秒基本能被處理完成)的指標(biāo), 系統(tǒng)的瓶頸有時(shí)還是不能避免。

但同時(shí)我們不能不注意到,在許多用例當(dāng)中,與流數(shù)據(jù)的交互以及和靜態(tài)數(shù)據(jù)集的結(jié)合是很有必要的, 例如我們需要在靜態(tài)數(shù)據(jù)集上進(jìn)行分類器的模型計(jì)算,并在已有分類器模型的基礎(chǔ)上,對(duì)實(shí)時(shí)進(jìn)入系統(tǒng)的流數(shù)據(jù)進(jìn)行交互計(jì)算來判定類別。

由于Spark的系統(tǒng)設(shè)計(jì)對(duì)各類工作(批處理、流處理以及交互式工作)進(jìn)行了一個(gè)共有抽象,并且生態(tài)圈內(nèi)延伸出了許多豐富的庫(MLlib機(jī)器學(xué)習(xí)庫、SQL語言API、GraphX), 使得用戶可以在每一批流數(shù)據(jù)上進(jìn)行靈活的Spark相關(guān)操作,在開發(fā)上提供了許多便利。

Spark的成熟使得Hadoop生態(tài)圈在短短一年之間發(fā)生了翻天覆地的變化, Cloudera和Hortonworks紛紛加入了Spark陣營(yíng),而Hadoop項(xiàng)目群中除了Yarn之外已經(jīng)沒有項(xiàng)目是必須的了(雖然Mesos已在一些場(chǎng)合替代了Yarn), 因?yàn)榫瓦BHDFS,Spark都可以不依賴。但很多時(shí)候我們?nèi)匀恍枰馡mpala這樣的依賴分布式文件系統(tǒng)的MPP解決方案并利用Hive管理文件到表的映射,因此Hadoop傳統(tǒng)生態(tài)圈依然有很強(qiáng)的生命力。

另外在這里簡(jiǎn)要對(duì)比一下交互式分析任務(wù)中各類SQL on Hadoop框架,因?yàn)檫@也是我們?cè)趯?shí)際項(xiàng)目實(shí)施中經(jīng)常遇到的問題。我們主要將注意力集中在Spark SQL, Impala和Hive on Tez上, 其中Spark SQL是三者之中歷史最短的,論文發(fā)表在15年的SIGMOD會(huì)議上, 原文對(duì)比了數(shù)據(jù)倉庫上不同類型的查詢?cè)赟hark(Spark最早對(duì)SQL接口提供的支持)、Spark SQL和Impala上的性能比較。

也就是說, 雖然Spark SQL在Shark的基礎(chǔ)上利用Catalyst optimizer在代碼生成上做了很多優(yōu)化,但總體性能還是比不上Impala, 尤其是當(dāng)做join操作的時(shí)候, Impala可以利用“predicate pushdown”更早對(duì)表進(jìn)行選擇操作從而提高性能。

不過Spark SQL的Catalyst optimizer一直在持續(xù)優(yōu)化中,相信未來會(huì)有更多更好的進(jìn)展。Cloudera的Benchmark評(píng)測(cè)中Impala一直比其他SQL on Hadoop框架性能更加優(yōu)越,但同時(shí)Hortonworks評(píng)測(cè)則指出雖然單個(gè)數(shù)據(jù)倉庫查詢Impala可以在很短的時(shí)間內(nèi)完成,但是一旦并發(fā)多個(gè)查詢Hive on Tez的優(yōu)勢(shì)就展示出來。另外Hive on Tez在SQL表達(dá)能力也要比Impala更強(qiáng)(主要是因?yàn)镮mpala的嵌套存儲(chǔ)模型導(dǎo)致的), 因此根據(jù)不同的場(chǎng)景選取不同的解決方案是很有必要的。

圖 3

各領(lǐng)風(fēng)騷抑或代有才人出?

近一年比較吸引人眼球的Apache Flink(與Spark一樣已有5年歷史,前身已經(jīng)是柏林理工大學(xué)一個(gè)研究性項(xiàng)目,被其擁躉推崇為繼MapReduce, Yarn,Spark之后第四代大數(shù)據(jù)分析處理框架)。 與Spark相反,F(xiàn)link是一個(gè)真正的實(shí)時(shí)流數(shù)據(jù)處理系統(tǒng),它將批處理看作是流數(shù)據(jù)的特例,同Spark一樣它也在嘗試建立一個(gè)統(tǒng)一的平臺(tái)運(yùn)行批量,流數(shù)據(jù),交互式作業(yè)以及機(jī)器學(xué)習(xí),圖算法等應(yīng)用。

Flink有一些設(shè)計(jì)思路是明顯區(qū)別于Spark的,一個(gè)典型的例子是內(nèi)存管理,F(xiàn)link從一開始就堅(jiān)持自己精確的控制內(nèi)存使用并且直接操作二進(jìn)制數(shù)據(jù),而Spark一直到1.5版本都還是試用java的內(nèi)存管理來做數(shù)據(jù)緩存,這也導(dǎo)致了Spark很容易遭受OOM以及JVM GC帶來的性能損失。

但是從另外一個(gè)角度來說, Spark中的RDD在運(yùn)行時(shí)被存成java objects的設(shè)計(jì)模式也大大降低了用戶編程設(shè)計(jì)門檻, 同時(shí)隨著Tungsten項(xiàng)目的引入,Spark現(xiàn)在也逐漸轉(zhuǎn)向自身的內(nèi)存管理, 具體表現(xiàn)為Spark生態(tài)圈內(nèi)從傳統(tǒng)的圍繞RDD(分布式j(luò)ava對(duì)象集合)為核心的開發(fā)逐漸轉(zhuǎn)向以DataFrame(分布式行對(duì)象集合)為核心。

總的來說,這兩個(gè)生態(tài)圈目前都在互相學(xué)習(xí),F(xiàn)link的設(shè)計(jì)基因更為超前一些,但Spark社區(qū)活躍度大很多,發(fā)展到目前毫無疑問是更為成熟的選擇,比如對(duì)數(shù)據(jù)源的支持(HBase, Cassandra, Parquet, JSON, ORC)更為豐富以及更為統(tǒng)一簡(jiǎn)潔的計(jì)算表示。另一方面,Apache Flink作為一個(gè)由歐洲大陸發(fā)起的項(xiàng)目,目前已經(jīng)擁有來自北美、歐洲以及亞洲的許多貢獻(xiàn)者,這是否能夠一改歐洲在開源世界中一貫的被動(dòng)角色,我們將在未來拭目以待。

2

NoSQL數(shù)據(jù)庫篇

NoSQL數(shù)據(jù)庫在主流選擇上依舊集中在MongoDB, HBase和Cassandra這三者之間。在所有的NoSQL選擇中,用C 編寫的MongoDB幾乎應(yīng)該是開發(fā)者最快也最易部署的選擇。MongoDB是一個(gè)面向文檔的數(shù)據(jù)庫,每個(gè)文檔/記錄/數(shù)據(jù)(包括爬取的網(wǎng)頁數(shù)據(jù)及其他大型對(duì)象如視頻等)是以一種BSON(Binary JSON)的二進(jìn)制數(shù)據(jù)格式存儲(chǔ), 這使得MongoDB并不需要事先定義任何模式, 也就是模式自由(可以把完全不同結(jié)構(gòu)的記錄放在同一個(gè)數(shù)據(jù)庫里)。

MongoDB對(duì)于完全索引的支持在應(yīng)用上是很方便的,同時(shí)也具備一般NoSQL分布式數(shù)據(jù)庫中可擴(kuò)展,支持復(fù)制和故障恢復(fù)等功能。 MongoDB一般應(yīng)用于高度伸縮性的緩存及大尺寸的JSON數(shù)據(jù)存儲(chǔ)業(yè)務(wù)中,但不能執(zhí)行“JOIN”操作,而且數(shù)據(jù)占用空間也比較大,最被用戶詬病的就是由于MongoDB提供的是數(shù)據(jù)庫級(jí)鎖粒度導(dǎo)致在一些情況下建索引操作會(huì)引發(fā)整個(gè)數(shù)據(jù)庫阻塞。一般來說,MongoDB完全可以滿足一些快速迭代的中小型項(xiàng)目的需求。

下面來主要談?wù)凜assandra和HBase之間的比較選擇。Cassandra和HBase有著截然不同的基因血統(tǒng)。HBase和其底層依賴的系統(tǒng)架構(gòu)源自于著名的Google FileSystem(發(fā)表于2003年)和Google BigTable設(shè)計(jì)(發(fā)表于2006年), 其克服了HDFS注重吞吐量卻犧牲I/O的缺點(diǎn),提供了一個(gè)存儲(chǔ)中間層使得用戶或者應(yīng)用程序可以隨機(jī)讀寫數(shù)據(jù)。

具體來說,HBase的更新和刪除操作實(shí)際上是先發(fā)生在內(nèi)存MemStore中, 當(dāng)MemStore滿了以后會(huì)Flush到StoreFile, 之后當(dāng)StoreFile文件數(shù)量增長(zhǎng)到一定閾值后會(huì)觸發(fā)Compact合并操作,因此HBase的更新操作其實(shí)是不斷追加的操作,而最終所有更新和刪除數(shù)據(jù)的持久化操作都是在之后Compact過程中進(jìn)行的。

這使得應(yīng)用程序在向內(nèi)存MemStore寫入數(shù)據(jù)后,所做的修改馬上就能得到反映,用戶讀到的數(shù)據(jù)絕不會(huì)是陳舊的數(shù)據(jù),保證了I/O高性能和數(shù)據(jù)完全一致性; 另一方面來說, HBase基于Hadoop生態(tài)系統(tǒng)的基因就已經(jīng)決定了他自身的高度可擴(kuò)展性、容錯(cuò)性。

在數(shù)據(jù)模型上,Cassandra和HBase類似實(shí)現(xiàn)了一個(gè)key-value提供面向列式存儲(chǔ)服務(wù),其系統(tǒng)設(shè)計(jì)參考了 Amazon Dynamo (發(fā)表于2007年) 分布式哈希(DHT)的P2P結(jié)構(gòu)(實(shí)際上大部分Cassandra的初始工作都是由兩位從Amazon的Dynamo組跳槽到Facebook的工程師完成),同樣具有很高的可擴(kuò)展性和容錯(cuò)性等特點(diǎn)。

除此之外, 相對(duì)HBase的主從結(jié)構(gòu),Cassandra去中心化的P2P結(jié)構(gòu)能夠更簡(jiǎn)單地部署和維護(hù),比如增加一臺(tái)機(jī)器只需告知Cassandra系統(tǒng)新節(jié)點(diǎn)在哪,剩下的交給系統(tǒng)完成就行了。同時(shí),Cassandra對(duì)多數(shù)據(jù)中心的支持也更好,如果需要在多個(gè)數(shù)據(jù)中心進(jìn)行數(shù)據(jù)遷移Cassandra會(huì)是一個(gè)更優(yōu)的選擇。

Eric Brewer教授提出的經(jīng)典CAP理論認(rèn)為任何基于網(wǎng)絡(luò)的數(shù)據(jù)共享系統(tǒng),最多只能滿足數(shù)據(jù)一致性、可用性、分區(qū)容忍性三要素中的兩個(gè)要素。實(shí)際分布式系統(tǒng)的設(shè)計(jì)過程往往都是在一致性與可用性上進(jìn)行取舍,相比于HBase數(shù)據(jù)完全一致性的系統(tǒng)設(shè)計(jì),Cassandra選擇了在優(yōu)先考慮數(shù)據(jù)可用性的基礎(chǔ)上讓用戶自己根據(jù)應(yīng)用程序需求決定系統(tǒng)一致性級(jí)別。

比如:用戶可以配置QUONUM參數(shù)來決定系統(tǒng)需要幾個(gè)節(jié)點(diǎn)返回?cái)?shù)據(jù)才能向客戶端做出響應(yīng),ONE指只要有一個(gè)節(jié)點(diǎn)返回?cái)?shù)據(jù)就可以對(duì)客戶端做出響應(yīng),ALL指等于數(shù)據(jù)復(fù)制份數(shù)的所有節(jié)點(diǎn)都返回結(jié)果才能向客戶端做出響應(yīng),對(duì)于數(shù)據(jù)一致性要求不是特別高的可以選擇ONE,它是最快的一種方式。

從基因和發(fā)展歷史上來說,HBase更適合用做數(shù)據(jù)倉庫和大規(guī)模數(shù)據(jù)處理與分析(比如對(duì)網(wǎng)頁數(shù)據(jù)建立索引), 而Cassandra則更適合用作實(shí)時(shí)事務(wù)和交互式查詢服務(wù)。Cassandra在國(guó)外市場(chǎng)占有比例和發(fā)展要遠(yuǎn)比國(guó)內(nèi)紅火, 在不少權(quán)威測(cè)評(píng)網(wǎng)站上排名都已經(jīng)超過了HBase。目前Apache Cassandra的商業(yè)化版本主要由軟件公司DataStax進(jìn)行開發(fā)和銷售推廣。另外還有一些NoSQL分布式數(shù)據(jù)庫如Riak, CouchDB也都在各自支持的廠商推動(dòng)下取得了不錯(cuò)的發(fā)展。

雖然我們也考慮到了HBase在實(shí)際應(yīng)用中的不便之處比如對(duì)二級(jí)索引的支持程度不夠(只支持通過單個(gè)行鍵訪問,通過行鍵的范圍查詢,全表掃描),不過在明略的大數(shù)據(jù)基礎(chǔ)平臺(tái)上,目前整合的是依然是HBase。

理由也很簡(jiǎn)單,HBase出身就與Hadoop的生態(tài)系統(tǒng)緊密集成,其能夠很容易與其他SQL on Hadoop框架(Cloudera Impala, Apache Phoenix, or Hive on Tez)進(jìn)行整合,而不需要重新部署一套分布式數(shù)據(jù)庫系統(tǒng),而且可以很方便地將同樣的數(shù)據(jù)內(nèi)容在同一個(gè)生態(tài)系統(tǒng)中根據(jù)不同框架需要來變換存儲(chǔ)格式(比如存儲(chǔ)成Hive表或者Parquet格式)。

我們?cè)诤芏囗?xiàng)目中都有需要用到多種SQL on Hadoop框架,來應(yīng)對(duì)不同應(yīng)用場(chǎng)景的情況,也體會(huì)到了在同一生態(tài)系統(tǒng)下部署多種框架的簡(jiǎn)便性。 但同時(shí)我們也遇到了一些問題, 因?yàn)镠Base項(xiàng)目本身與HDFS和Zookeeper系統(tǒng)分別是由不同開源團(tuán)隊(duì)進(jìn)行維護(hù)的,所以在系統(tǒng)整合時(shí)我們需要先對(duì)HBase所依賴的其他模塊進(jìn)行設(shè)置再對(duì)HBase進(jìn)行配置,在一定程度上降低了系統(tǒng)維護(hù)的友好性。

目前我們也已經(jīng)在考慮將Cassandra應(yīng)用到一些新的客戶項(xiàng)目中,因?yàn)楹芏嗥髽I(yè)級(jí)的應(yīng)用都需要將線上線下數(shù)據(jù)庫進(jìn)行分離,HBase更適合存儲(chǔ)離線處理的結(jié)果和數(shù)據(jù)倉庫,而更適合用作實(shí)時(shí)事務(wù)和并發(fā)交互性能更好的Cassandra作為線上服務(wù)數(shù)據(jù)庫會(huì)是一種很好的選擇。

3

大數(shù)據(jù)安全篇

隨著越來越多各式各樣的數(shù)據(jù)被存儲(chǔ)在大數(shù)據(jù)系統(tǒng)中,任何對(duì)企業(yè)級(jí)數(shù)據(jù)的破壞都是災(zāi)難性的,從侵犯隱私到監(jiān)管違規(guī),甚至?xí)斐晒酒放频钠茐牟⒆罱K影響到股東收益。給大數(shù)據(jù)系統(tǒng)提供全面且有效的安全解決方案的需求已經(jīng)十分迫切:

大數(shù)據(jù)系統(tǒng)存儲(chǔ)著許多重要且敏感的數(shù)據(jù),這些數(shù)據(jù)是企業(yè)長(zhǎng)久以來的財(cái)富

與大數(shù)據(jù)系統(tǒng)互動(dòng)的外部系統(tǒng)是動(dòng)態(tài)變化的,這會(huì)給系統(tǒng)引入新的安全隱患

在一個(gè)企業(yè)的內(nèi)部,不同Business Units會(huì)用不同的方式與大數(shù)據(jù)系統(tǒng)進(jìn)行交互,比如線上的系統(tǒng)會(huì)實(shí)時(shí)給集群推送數(shù)據(jù)、數(shù)據(jù)科學(xué)家團(tuán)隊(duì)則需要分析存儲(chǔ)在數(shù)據(jù)倉庫內(nèi)的歷史數(shù)據(jù)、運(yùn)維團(tuán)隊(duì)則會(huì)需要對(duì)大數(shù)據(jù)系統(tǒng)擁有管理權(quán)限。

因此為了保護(hù)公司業(yè)務(wù)、客戶、財(cái)務(wù)和名譽(yù)免于被侵害,大數(shù)據(jù)系統(tǒng)運(yùn)維團(tuán)隊(duì)必須將系統(tǒng)安全高度提高到和其他遺留系統(tǒng)一樣的級(jí)別。同時(shí)大數(shù)據(jù)系統(tǒng)并不意味著引入大的安全隱患,通過精細(xì)完整的設(shè)計(jì),仍然能夠把一些傳統(tǒng)的系統(tǒng)安全解決方案對(duì)接到最新的大數(shù)據(jù)集群系統(tǒng)中。

一般來說,一個(gè)完整的企業(yè)級(jí)安全框架包括五個(gè)部分:

Administration: 大數(shù)據(jù)集群系統(tǒng)的集中式管理,設(shè)定全局一致的安全策略

Authentication: 對(duì)用戶和系統(tǒng)的認(rèn)證

Authorization:授權(quán)個(gè)人用戶和組對(duì)數(shù)據(jù)的訪問權(quán)限

Audit:維護(hù)數(shù)據(jù)訪問的日志記錄

Data Protection:數(shù)據(jù)脫敏和加密以達(dá)到保護(hù)數(shù)據(jù)的目的

系統(tǒng)管理員要能夠提供覆蓋以上五個(gè)部分的企業(yè)級(jí)安全基礎(chǔ)設(shè)施,否則任何一環(huán)的缺失都可能給整個(gè)系統(tǒng)引入安全性風(fēng)險(xiǎn)。

在大數(shù)據(jù)系統(tǒng)安全集中式管理平臺(tái)這塊,由Hortonworks推出的開源項(xiàng)目Apache Ranger就可以十分全面地為用戶提供Hadoop生態(tài)圈的集中安全策略的管理,并解決授權(quán)(Authorization)和審計(jì)(Audit)。例如,運(yùn)維管理員可以輕松地為個(gè)人用戶和組對(duì)文件、數(shù)據(jù)等的訪問策略,然后審計(jì)對(duì)數(shù)據(jù)源的訪問。

與Ranger提供相似功能的還有Cloudera推出的Apache Sentry項(xiàng)目,相比較而言Ranger的功能會(huì)更全面一些。

而在認(rèn)證(Authentication)方面, 一種普遍采用的解決方案是將基于Kerberos的認(rèn)證方案對(duì)接到企業(yè)內(nèi)部的LDAP環(huán)境中, Kerberos也是唯一為Hadoop全面實(shí)施的驗(yàn)證技術(shù)。

另外值得一提的是Apache Knox Gateway項(xiàng)目,與Ranger提高集群內(nèi)部組件以及用戶互相訪問的安全不同,Knox提供的是Hadoop集群與外界的唯一交互接口,也就是說所有與集群交互的REST API都通過Knox處理。這樣,Knox就給大數(shù)據(jù)系統(tǒng)提供了一個(gè)很好的基于邊緣的安全(perimeter-based security)。

基于以上提到的五個(gè)安全指標(biāo)和Hadoop生態(tài)圈安全相關(guān)的開源項(xiàng)目, 已經(jīng)足已證明基于Hadoop的大數(shù)據(jù)平臺(tái)我們是能夠構(gòu)建一個(gè)集中、一致、全面且有效的安全解決方案。

我市再ITjob管網(wǎng)上面找的

什么是NoSQL數(shù)據(jù)庫?

2. 什么是NoSQL?

2.1 NoSQL 概述

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,

泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,包括超大規(guī)模數(shù)據(jù)的存儲(chǔ)。

(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數(shù)據(jù))。這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無需多余操作就可以橫向擴(kuò)展。

2.2 NoSQL代表

MongDB、 Redis、Memcache

3. 關(guān)系型數(shù)據(jù)庫與NoSQL的區(qū)別?

3.1 RDBMS

高度組織化結(jié)構(gòu)化數(shù)據(jù)

結(jié)構(gòu)化查詢語言(SQL)

數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中。

數(shù)據(jù)操縱語言,數(shù)據(jù)定義語言

嚴(yán)格的一致性

基礎(chǔ)事務(wù)

ACID

關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則

事務(wù)在英文中是transaction,和現(xiàn)實(shí)世界中的交易很類似,它有如下四個(gè)特性:

A (Atomicity) 原子性

原子性很容易理解,也就是說事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗,需要回滾。比如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個(gè)步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會(huì)莫名其妙少了100元。

C (Consistency) 一致性

一致性也比較容易理解,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫原本的一致性約束。

I (Isolation) 獨(dú)立性

所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪問的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響。比如現(xiàn)有有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶,是看不到新增加的100元的

D (Durability) 持久性

持久性是指一旦事務(wù)提交后,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫上,即使出現(xiàn)宕機(jī)也不會(huì)丟失。

3.2 NoSQL

代表著不僅僅是SQL

沒有聲明性查詢語言

沒有預(yù)定義的模式

鍵 - 值對(duì)存儲(chǔ),列存儲(chǔ),文檔存儲(chǔ),圖形數(shù)據(jù)庫

最終一致性,而非ACID屬性

非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)

CAP定理

高性能,高可用性和可伸縮性

分布式數(shù)據(jù)庫中的CAP原理(了解)

CAP定理:

Consistency(一致性), 數(shù)據(jù)一致更新,所有數(shù)據(jù)變動(dòng)都是同步的

Availability(可用性), 好的響應(yīng)性能

Partition tolerance(分區(qū)容錯(cuò)性) 可靠性

P: 系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作。

定理:任何分布式系統(tǒng)只可同時(shí)滿足二點(diǎn),沒法三者兼顧。

CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求,

因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:

CA - 單點(diǎn)集群,滿足一致性,可用性的系統(tǒng),通常在可擴(kuò)展性上不太強(qiáng)大。

CP - 滿足一致性,分區(qū)容忍性的系統(tǒng),通常性能不是特別高。

AP - 滿足可用性,分區(qū)容忍性的系統(tǒng),通??赡軐?duì)一致性要求低一些。

CAP理論就是說在分布式存儲(chǔ)系統(tǒng)中,最多只能實(shí)現(xiàn)上面的兩點(diǎn)。

而由于當(dāng)前的網(wǎng)絡(luò)硬件肯定會(huì)出現(xiàn)延遲丟包等問題,所以分區(qū)容忍性是我們必須需要實(shí)現(xiàn)的。

所以我們只能在一致性和可用性之間進(jìn)行權(quán)衡,沒有NoSQL系統(tǒng)能同時(shí)保證這三點(diǎn)。

說明:C:強(qiáng)一致性 A:高可用性 P:分布式容忍性

舉例:

CA:傳統(tǒng)Oracle數(shù)據(jù)庫

AP:大多數(shù)網(wǎng)站架構(gòu)的選擇

CP:Redis、Mongodb

注意:分布式架構(gòu)的時(shí)候必須做出取舍。

一致性和可用性之間取一個(gè)平衡。多余大多數(shù)web應(yīng)用,其實(shí)并不需要強(qiáng)一致性。

因此犧牲C換取P,這是目前分布式數(shù)據(jù)庫產(chǎn)品的方向。

4. 當(dāng)下NoSQL的經(jīng)典應(yīng)用

當(dāng)下的應(yīng)用是 SQL 與 NoSQL 一起使用的。

代表項(xiàng)目:阿里巴巴商品信息的存放。

去 IOE 化。

ps:I 是指 IBM 的小型機(jī),很貴的,好像好幾萬一臺(tái);O 是指 Oracle 數(shù)據(jù)庫,也很貴的,好幾萬呢;M 是指 EMC 的存儲(chǔ)設(shè)備,也很貴的。

難點(diǎn):

數(shù)據(jù)類型多樣性。

數(shù)據(jù)源多樣性和變化重構(gòu)。

數(shù)據(jù)源改造而服務(wù)平臺(tái)不需要大面積重構(gòu)。

NoSQL自動(dòng)生成上千萬的數(shù)據(jù)可以有哪些方法

1. CouchDB

所用語言: Erlang

特點(diǎn):DB一致性,易于使用

使用許可: Apache

協(xié)議: HTTP/REST

雙向數(shù)據(jù)復(fù)制,

持續(xù)進(jìn)行或臨時(shí)處理,

處理時(shí)帶沖突檢查,

因此,采用的是master-master復(fù)制(見編注2)

MVCC – 寫操作不阻塞讀操作

可保存文件之前的版本

Crash-only(可靠的)設(shè)計(jì)

需要不時(shí)地進(jìn)行數(shù)據(jù)壓縮

視圖:嵌入式 映射/減少

格式化視圖:列表顯示

支持進(jìn)行服務(wù)器端文檔驗(yàn)證

支持認(rèn)證

根據(jù)變化實(shí)時(shí)更新

支持附件處理

因此, CouchApps(獨(dú)立的 js應(yīng)用程序)

需要 jQuery程序庫

最佳應(yīng)用場(chǎng)景:適用于數(shù)據(jù)變化較少,執(zhí)行預(yù)定義查詢,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)的應(yīng)用程序。適用于需要提供數(shù)據(jù)版本支持的應(yīng)用程序。

例如: CRM、CMS系統(tǒng)。 master-master復(fù)制對(duì)于多站點(diǎn)部署是非常有用的。

(編注2:master-master復(fù)制:是一種數(shù)據(jù)庫同步方法,允許數(shù)據(jù)在一組計(jì)算機(jī)之間共享數(shù)據(jù),并且可以通過小組中任意成員在組內(nèi)進(jìn)行數(shù)據(jù)更新。)

2. Redis

所用語言:C/C++

特點(diǎn):運(yùn)行異???/p>

使用許可: BSD

協(xié)議:類 Telnet

有硬盤存儲(chǔ)支持的內(nèi)存數(shù)據(jù)庫,

但自2.0版本以后可以將數(shù)據(jù)交換到硬盤(注意, 2.4以后版本不支持該特性!)

Master-slave復(fù)制(見編注3)

雖然采用簡(jiǎn)單數(shù)據(jù)或以鍵值索引的哈希表,但也支持復(fù)雜操作,例如 ZREVRANGEBYSCORE。

INCR co (適合計(jì)算極限值或統(tǒng)計(jì)數(shù)據(jù))

支持 sets(同時(shí)也支持 union/diff/inter)

支持列表(同時(shí)也支持隊(duì)列;阻塞式 pop操作)

支持哈希表(帶有多個(gè)域的對(duì)象)

支持排序 sets(高得分表,適用于范圍查詢)

Redis支持事務(wù)

支持將數(shù)據(jù)設(shè)置成過期數(shù)據(jù)(類似快速緩沖區(qū)設(shè)計(jì))

Pub/Sub允許用戶實(shí)現(xiàn)消息機(jī)制

最佳應(yīng)用場(chǎng)景:適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內(nèi)存容量)的應(yīng)用程序。

例如:股票價(jià)格、數(shù)據(jù)分析、實(shí)時(shí)數(shù)據(jù)搜集、實(shí)時(shí)通訊。

(編注3:Master-slave復(fù)制:如果同一時(shí)刻只有一臺(tái)服務(wù)器處理所有的復(fù)制請(qǐng)求,這被稱為

Master-slave復(fù)制,通常應(yīng)用在需要提供高可用性的服務(wù)器集群。)

3. MongoDB

所用語言:C++

特點(diǎn):保留了SQL一些友好的特性(查詢,索引)。

使用許可: AGPL(發(fā)起者: Apache)

協(xié)議: Custom, binary( BSON)

Master/slave復(fù)制(支持自動(dòng)錯(cuò)誤恢復(fù),使用 sets 復(fù)制)

內(nèi)建分片機(jī)制

支持 javascript表達(dá)式查詢

可在服務(wù)器端執(zhí)行任意的 javascript函數(shù)

update-in-place支持比CouchDB更好

在數(shù)據(jù)存儲(chǔ)時(shí)采用內(nèi)存到文件映射

對(duì)性能的關(guān)注超過對(duì)功能的要求

建議最好打開日志功能(參數(shù) –journal)

在32位操作系統(tǒng)上,數(shù)據(jù)庫大小限制在約2.5Gb

空數(shù)據(jù)庫大約占 192Mb

采用 GridFS存儲(chǔ)大數(shù)據(jù)或元數(shù)據(jù)(不是真正的文件系統(tǒng))

最佳應(yīng)用場(chǎng)景:適用于需要?jiǎng)討B(tài)查詢支持;需要使用索引而不是 map/reduce功能;需要對(duì)大數(shù)據(jù)庫有性能要求;需要使用

CouchDB但因?yàn)閿?shù)據(jù)改變太頻繁而占滿內(nèi)存的應(yīng)用程序。

例如:你本打算采用 MySQL或 PostgreSQL,但因?yàn)樗鼈儽旧碜詭У念A(yù)定義欄讓你望而卻步。

4. Riak

所用語言:Erlang和C,以及一些Javascript

特點(diǎn):具備容錯(cuò)能力

使用許可: Apache

協(xié)議: HTTP/REST或者 custom binary

可調(diào)節(jié)的分發(fā)及復(fù)制(N, R, W)

用 JavaScript or Erlang在操作前或操作后進(jìn)行驗(yàn)證和安全支持。

使用JavaScript或Erlang進(jìn)行 Map/reduce

連接及連接遍歷:可作為圖形數(shù)據(jù)庫使用

索引:輸入元數(shù)據(jù)進(jìn)行搜索(1.0版本即將支持)

大數(shù)據(jù)對(duì)象支持( Luwak)

提供“開源”和“企業(yè)”兩個(gè)版本

全文本搜索,索引,通過 Riak搜索服務(wù)器查詢( beta版)

支持Masterless多站點(diǎn)復(fù)制及商業(yè)許可的 SNMP監(jiān)控

最佳應(yīng)用場(chǎng)景:適用于想使用類似 Cassandra(類似Dynamo)數(shù)據(jù)庫但無法處理

bloat及復(fù)雜性的情況。適用于你打算做多站點(diǎn)復(fù)制,但又需要對(duì)單個(gè)站點(diǎn)的擴(kuò)展性,可用性及出錯(cuò)處理有要求的情況。

例如:銷售數(shù)據(jù)搜集,工廠控制系統(tǒng);對(duì)宕機(jī)時(shí)間有嚴(yán)格要求;可以作為易于更新的 web服務(wù)器使用。

5. Membase

所用語言: Erlang和C

特點(diǎn):兼容 Memcache,但同時(shí)兼具持久化和支持集群

使用許可: Apache 2.0

協(xié)議:分布式緩存及擴(kuò)展

非??焖伲?00k+/秒),通過鍵值索引數(shù)據(jù)

可持久化存儲(chǔ)到硬盤

所有節(jié)點(diǎn)都是唯一的( master-master復(fù)制)

在內(nèi)存中同樣支持類似分布式緩存的緩存單元

寫數(shù)據(jù)時(shí)通過去除重復(fù)數(shù)據(jù)來減少 IO

提供非常好的集群管理 web界面

更新軟件時(shí)軟無需停止數(shù)據(jù)庫服務(wù)

支持連接池和多路復(fù)用的連接代理

最佳應(yīng)用場(chǎng)景:適用于需要低延遲數(shù)據(jù)訪問,高并發(fā)支持以及高可用性的應(yīng)用程序

例如:低延遲數(shù)據(jù)訪問比如以廣告為目標(biāo)的應(yīng)用,高并發(fā)的 web 應(yīng)用比如網(wǎng)絡(luò)游戲(例如 Zynga)

6. Neo4j

所用語言: Java

特點(diǎn):基于關(guān)系的圖形數(shù)據(jù)庫

使用許可: GPL,其中一些特性使用 AGPL/商業(yè)許可

協(xié)議: HTTP/REST(或嵌入在 Java中)

可獨(dú)立使用或嵌入到 Java應(yīng)用程序

圖形的節(jié)點(diǎn)和邊都可以帶有元數(shù)據(jù)

很好的自帶web管理功能

使用多種算法支持路徑搜索

使用鍵值和關(guān)系進(jìn)行索引

為讀操作進(jìn)行優(yōu)化

支持事務(wù)(用 Java api)

使用 Gremlin圖形遍歷語言

支持 Groovy腳本

支持在線備份,高級(jí)監(jiān)控及高可靠性支持使用 AGPL/商業(yè)許可

最佳應(yīng)用場(chǎng)景:適用于圖形一類數(shù)據(jù)。這是 Neo4j與其他nosql數(shù)據(jù)庫的最顯著區(qū)別

例如:社會(huì)關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜

7. Cassandra

所用語言: Java

特點(diǎn):對(duì)大型表格和 Dynamo支持得最好

使用許可: Apache

協(xié)議: Custom, binary (節(jié)約型)

可調(diào)節(jié)的分發(fā)及復(fù)制(N, R, W)

支持以某個(gè)范圍的鍵值通過列查詢

類似大表格的功能:列,某個(gè)特性的列集合

寫操作比讀操作更快

基于 Apache分布式平臺(tái)盡可能地 Map/reduce

我承認(rèn)對(duì) Cassandra有偏見,一部分是因?yàn)樗旧淼挠纺[和復(fù)雜性,也因?yàn)?Java的問題(配置,出現(xiàn)異常,等等)

最佳應(yīng)用場(chǎng)景:當(dāng)使用寫操作多過讀操作(記錄日志)如果每個(gè)系統(tǒng)組建都必須用 Java編寫(沒有人因?yàn)檫x用

Apache的軟件被解雇)

例如:銀行業(yè),金融業(yè)(雖然對(duì)于金融交易不是必須的,但這些產(chǎn)業(yè)對(duì)數(shù)據(jù)庫的要求會(huì)比它們更大)寫比讀更快,所以一個(gè)自然的特性就是實(shí)時(shí)數(shù)據(jù)分析

8. HBase

(配合 ghshephard使用)

所用語言: Java

特點(diǎn):支持?jǐn)?shù)十億行X上百萬列

使用許可: Apache

協(xié)議:HTTP/REST (支持 Thrift,見編注4)

在 BigTable之后建模

采用分布式架構(gòu) Map/reduce

對(duì)實(shí)時(shí)查詢進(jìn)行優(yōu)化

高性能 Thrift網(wǎng)關(guān)

通過在server端掃描及過濾實(shí)現(xiàn)對(duì)查詢操作預(yù)判

支持 XML, Protobuf, 和binary的HTTP

Cascading, hive, and pig source and sink modules

基于 Jruby( JIRB)的shell

對(duì)配置改變和較小的升級(jí)都會(huì)重新回滾

不會(huì)出現(xiàn)單點(diǎn)故障

堪比MySQL的隨機(jī)訪問性能

最佳應(yīng)用場(chǎng)景:適用于偏好BigTable:)并且需要對(duì)大數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時(shí)訪問的場(chǎng)合。

例如: Facebook消息數(shù)據(jù)庫(更多通用的用例即將出現(xiàn))

編注4:Thrift

是一種接口定義語言,為多種其他語言提供定義和創(chuàng)建服務(wù),由Facebook開發(fā)并開源。

當(dāng)然,所有的系統(tǒng)都不只具有上面列出的這些特性。這里我僅僅根據(jù)自己的觀點(diǎn)列出一些我認(rèn)為的重要特性。與此同時(shí),技術(shù)進(jìn)步是飛速的,所以上述的內(nèi)容肯定需要不斷更新。我會(huì)盡我所能地更新這個(gè)列表。

創(chuàng)建有效的大數(shù)據(jù)模型的6個(gè)技巧

創(chuàng)建有效的大數(shù)據(jù)模型的6個(gè)技巧

數(shù)據(jù)建模是一門復(fù)雜的科學(xué),涉及組織企業(yè)的數(shù)據(jù)以適應(yīng)業(yè)務(wù)流程的需求。它需要設(shè)計(jì)邏輯關(guān)系,以便數(shù)據(jù)可以相互關(guān)聯(lián),并支持業(yè)務(wù)。然后將邏輯設(shè)計(jì)轉(zhuǎn)換成物理模型,該物理模型由存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備、數(shù)據(jù)庫和文件組成。

歷史上,企業(yè)已經(jīng)使用像SQL這樣的關(guān)系數(shù)據(jù)庫技術(shù)來開發(fā)數(shù)據(jù)模型,因?yàn)樗浅_m合將數(shù)據(jù)集密鑰和數(shù)據(jù)類型靈活地鏈接在一起,以支持業(yè)務(wù)流程的信息需求。

不幸的是,大數(shù)據(jù)現(xiàn)在包含了很大比例的管理數(shù)據(jù),并不能在關(guān)系數(shù)據(jù)庫上運(yùn)行。它運(yùn)行在像NoSQL這樣的非關(guān)系數(shù)據(jù)庫上。這導(dǎo)致人們認(rèn)為可能不需要大數(shù)據(jù)模型。

問題是,企業(yè)確實(shí)需要對(duì)大數(shù)據(jù)進(jìn)行數(shù)據(jù)建模。

以下是大數(shù)據(jù)建模的六個(gè)提示:

1.不要試圖將傳統(tǒng)的建模技術(shù)強(qiáng)加于大數(shù)據(jù)

傳統(tǒng)的固定記錄數(shù)據(jù)在其增長(zhǎng)中穩(wěn)定且可預(yù)測(cè)的,這使得建模相對(duì)容易。相比之下,大數(shù)據(jù)的指數(shù)增長(zhǎng)是不可預(yù)測(cè)的,其無數(shù)形式和來源也是如此。當(dāng)網(wǎng)站考慮建模大數(shù)據(jù)時(shí),建模工作應(yīng)該集中在構(gòu)建開放和彈性數(shù)據(jù)接口上,因?yàn)槿藗冇肋h(yuǎn)不知道何時(shí)會(huì)出現(xiàn)新的數(shù)據(jù)源或數(shù)據(jù)形式。這在傳統(tǒng)的固定記錄數(shù)據(jù)世界中并不是一個(gè)優(yōu)先事項(xiàng)。

2.設(shè)計(jì)一個(gè)系統(tǒng),而不是一個(gè)模式

在傳統(tǒng)的數(shù)據(jù)領(lǐng)域中,關(guān)系數(shù)據(jù)庫模式可以涵蓋業(yè)務(wù)對(duì)其信息支持所需的數(shù)據(jù)之間的大多數(shù)關(guān)系和鏈接。大數(shù)據(jù)并非如此,它可能沒有數(shù)據(jù)庫,或者可能使用像NoSQL這樣的數(shù)據(jù)庫,它不需要數(shù)據(jù)庫模式。

正因?yàn)槿绱?,大?shù)據(jù)模型應(yīng)該建立在系統(tǒng)上,而不是數(shù)據(jù)庫上。大數(shù)據(jù)模型應(yīng)包含的系統(tǒng)組件包括業(yè)務(wù)信息需求、企業(yè)治理和安全、用于數(shù)據(jù)的物理存儲(chǔ)、所有類型數(shù)據(jù)的集成、開放接口,以及處理各種不同數(shù)據(jù)類型的能力。

3.尋找大數(shù)據(jù)建模工具

有商業(yè)數(shù)據(jù)建模工具可以支持Hadoop以及像Tableau這樣的大數(shù)據(jù)報(bào)告軟件。在考慮大數(shù)據(jù)工具和方法時(shí),IT決策者應(yīng)該包括為大數(shù)據(jù)構(gòu)建數(shù)據(jù)模型的能力,這是要求之一。

4.關(guān)注對(duì)企業(yè)的業(yè)務(wù)至關(guān)重要的數(shù)據(jù)

企業(yè)每天都會(huì)輸入大量的數(shù)據(jù),而這些大數(shù)據(jù)大部分是無關(guān)緊要的。創(chuàng)建包含所有數(shù)據(jù)的模型是沒有意義的。更好的方法是確定對(duì)企業(yè)來說至關(guān)重要的大數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行建模。

5.提供高質(zhì)量的數(shù)據(jù)

如果組織專注于開發(fā)數(shù)據(jù)的正確定義和完整的元數(shù)據(jù)來描述數(shù)據(jù)來自何處、其目的是什么等等,那么可以對(duì)大數(shù)據(jù)模型產(chǎn)生更好的數(shù)據(jù)模型和關(guān)系??梢愿玫刂С种С謽I(yè)務(wù)的數(shù)據(jù)模型。

6.尋找數(shù)據(jù)的關(guān)鍵切入點(diǎn)

當(dāng)今最常用的大數(shù)據(jù)載體之一就是地理位置,這取決于企業(yè)的業(yè)務(wù)和行業(yè),還

有其他用戶需要的大數(shù)據(jù)常用密鑰。企業(yè)越能夠識(shí)別數(shù)據(jù)中的這些常用入口點(diǎn),就越能夠設(shè)計(jì)出支持企業(yè)關(guān)鍵信息訪問路徑的數(shù)據(jù)模型。

nosql是什么

NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。

雖然NoSQL流行語火起來才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來越成熟——以至于原來很好的NoSQL數(shù)據(jù)存儲(chǔ)不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲(chǔ)庫。

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。

對(duì)于NoSQL并沒有一個(gè)明確的范圍和定義,但是他們都普遍存在下面一些共同特征:

不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當(dāng)插入數(shù)據(jù)時(shí),并不需要預(yù)先定義它們的模式。

無共享架構(gòu):相對(duì)于將所有數(shù)據(jù)存儲(chǔ)的存儲(chǔ)區(qū)域網(wǎng)絡(luò)中的全共享架構(gòu)。NoSQL往往將數(shù)據(jù)劃分后存儲(chǔ)在各個(gè)本地服務(wù)器上。因?yàn)閺谋镜卮疟P讀取數(shù)據(jù)的性能往往好于通過網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能,從而提高了系統(tǒng)的性能。

彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時(shí)候,動(dòng)態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),數(shù)據(jù)可以自動(dòng)遷移。

分區(qū):相對(duì)于將數(shù)據(jù)存放于同一個(gè)節(jié)點(diǎn),NoSQL數(shù)據(jù)庫需要將數(shù)據(jù)進(jìn)行分區(qū),將記錄分散在多個(gè)節(jié)點(diǎn)上面。并且通常分區(qū)的同時(shí)還要做復(fù)制。這樣既提高了并行性能,又能保證沒有單點(diǎn)失效的問題。

異步復(fù)制:和RAID存儲(chǔ)系統(tǒng)不同的是,NoSQL中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫入一個(gè)節(jié)點(diǎn),而不會(huì)被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不總是能保證一致性,這樣的方式在出現(xiàn)故障的時(shí)候,可能會(huì)丟失少量的數(shù)據(jù)。

BASE:相對(duì)于事務(wù)嚴(yán)格的ACID特性,NoSQL數(shù)據(jù)庫保證的是BASE特性。BASE是最終一致性和軟事務(wù)。

NoSQL數(shù)據(jù)庫并沒有一個(gè)統(tǒng)一的架構(gòu),兩種NoSQL數(shù)據(jù)庫之間的不同,甚至遠(yuǎn)遠(yuǎn)超過兩種關(guān)系型數(shù)據(jù)庫的不同。可以說,NoSQL各有所長(zhǎng),成功的NoSQL必然特別適用于某些場(chǎng)合或者某些應(yīng)用,在這些場(chǎng)合中會(huì)遠(yuǎn)遠(yuǎn)勝過關(guān)系型數(shù)據(jù)庫和其他的NoSQL。

NoSQL 數(shù)據(jù)庫:何時(shí)使用 NoSQL 與 SQL?

NoSQL 數(shù)據(jù)庫因其功能性、易于開發(fā)性和可擴(kuò)展性而廣受認(rèn)可,它們?cè)絹碓蕉嗟赜糜诖髷?shù)據(jù)和實(shí)時(shí) Web 應(yīng)用程序,在本文中,我們通過示例討論 NoSQL、何時(shí)使用 NoSQL 與 SQL 及其用例。

NoSQL是一種下一代數(shù)據(jù)庫管理系統(tǒng) (DBMS)。NoSQL 數(shù)據(jù)庫具有靈活的模式,可用于構(gòu)建具有大量數(shù)據(jù)和高負(fù)載的現(xiàn)代應(yīng)用程序。

“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經(jīng)存在類似的數(shù)據(jù)庫。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。

在處理大量數(shù)據(jù)時(shí),任何關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的響應(yīng)時(shí)間都會(huì)變慢。為了解決這個(gè)問題,我們可以通過升級(jí)現(xiàn)有硬件來“擴(kuò)大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴(kuò)展并且更具成本效益。

NoSQL 對(duì)于非結(jié)構(gòu)化或非常大的數(shù)據(jù)對(duì)象(例如聊天日志數(shù)據(jù)、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網(wǎng)巨頭中特別受歡迎的原因。

一些流行的 NoSQL 數(shù)據(jù)庫包括:

隨著企業(yè)更快地積累更大的數(shù)據(jù)集,結(jié)構(gòu)化數(shù)據(jù)和關(guān)系模式并不總是適合。有必要使用非結(jié)構(gòu)化數(shù)據(jù)和大型對(duì)象來更好地捕獲這些信息。

傳統(tǒng)的 RDBMS 使用 SQL(結(jié)構(gòu)化查詢語言)語法來存儲(chǔ)和檢索結(jié)構(gòu)化數(shù)據(jù),相反,NoSQL 數(shù)據(jù)庫包含廣泛的功能,可以存儲(chǔ)和檢索結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化和多態(tài)數(shù)據(jù)。

有時(shí),NoSQL 也被稱為“ 不僅僅是 SQL ”,強(qiáng)調(diào)它可能支持類似 SQL 的語言或與 SQL 數(shù)據(jù)庫并列。SQL 和 NoSQL DBMS 之間的一個(gè)區(qū)別是 JOIN 功能。SQL 數(shù)據(jù)庫使用 JOIN 子句來組合來自兩個(gè)或多個(gè)表的行,因?yàn)?NoSQL 數(shù)據(jù)庫本質(zhì)上不是表格的,所以這個(gè)功能并不總是可行或相關(guān)的。

但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據(jù)庫傾向于以不同的方式解決類似的問題。

一般來說,在以下情況下,NoSQL 比 SQL 更可?。?/p>

許多行業(yè)都在采用 NoSQL,取代關(guān)系數(shù)據(jù)庫,從而為某些業(yè)務(wù)應(yīng)用程序提供更高的靈活性和可擴(kuò)展性,下面給出了 NoSQL 數(shù)據(jù)庫的一些企業(yè)用例。

內(nèi)容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據(jù)庫可以通過其靈活和開放的數(shù)據(jù)模型為存儲(chǔ)多媒體內(nèi)容提供更好的選擇。

例如,福布斯在短短幾個(gè)月內(nèi)就構(gòu)建了一個(gè)基于 MongoDB 的定制內(nèi)容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。

大數(shù)據(jù)是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據(jù)集,實(shí)時(shí)存儲(chǔ)和檢索大數(shù)據(jù)的系統(tǒng)在分析 歷史 數(shù)據(jù)的同時(shí)使用流處理來攝取新數(shù)據(jù),這是一系列非常適合 NoSQL 數(shù)據(jù)庫的功能。

Zoom使用 DynamoDB(按需模式)使其數(shù)據(jù)能夠在沒有性能問題的情況下進(jìn)行擴(kuò)展,即使該服務(wù)在 COVID-19 大流行的早期使用量激增。

物聯(lián)網(wǎng)設(shè)備具有連接到互聯(lián)網(wǎng)或通信網(wǎng)絡(luò)的嵌入式軟件和傳感器,能夠在無需人工干預(yù)的情況下收集和共享數(shù)據(jù)。隨著數(shù)十億臺(tái)設(shè)備生成數(shù)不清的數(shù)據(jù),IoT NoSQL 數(shù)據(jù)庫為 IoT 服務(wù)提供商提供了可擴(kuò)展性和更靈活的架構(gòu)。

Freshub就是這樣的一項(xiàng)服務(wù),它從 MySQL 切換到 MongoDB,以更好地處理其大型、動(dòng)態(tài)、非統(tǒng)一的數(shù)據(jù)集。

擁有數(shù)十億智能手機(jī)用戶,可擴(kuò)展性正成為在移動(dòng)設(shè)備上提供服務(wù)的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據(jù)模型的 NoSQL DBMS 通常是完美的解決方案。

例如,The Weather Channel使用 MongoDB 數(shù)據(jù)庫每分鐘處理數(shù)百萬個(gè)請(qǐng)求,同時(shí)還處理用戶數(shù)據(jù)并提供天氣更新。


名稱欄目:包含nosql建立大數(shù)據(jù)系統(tǒng)的詞條
文章源于:http://weahome.cn/article/dsgssoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部