自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解數(shù)據(jù)存儲(chǔ)的六種可選技術(shù)

存儲(chǔ) 存儲(chǔ)軟件
熱數(shù)據(jù)需要在內(nèi)存中存儲(chǔ)和處理,因此適合用緩存或內(nèi)存數(shù)據(jù)庫(kù)(如Redis或SAP Hana)。AWS提供了ElastiCache服務(wù),可生成托管的Redis或Memcached環(huán)境。

本文轉(zhuǎn)載自微信公眾號(hào)「數(shù)倉(cāng)寶貝庫(kù)」,作者Saurabh。轉(zhuǎn)載本文請(qǐng)聯(lián)系數(shù)倉(cāng)寶貝庫(kù)公眾號(hào)。

熱數(shù)據(jù)需要在內(nèi)存中存儲(chǔ)和處理,因此適合用緩存或內(nèi)存數(shù)據(jù)庫(kù)(如Redis或SAP Hana)。AWS提供了ElastiCache服務(wù),可生成托管的Redis或Memcached環(huán)境。NoSQL數(shù)據(jù)庫(kù)是面向高速但小規(guī)模記錄(例如,用戶(hù)會(huì)話信息或物聯(lián)網(wǎng)數(shù)據(jù))的理想選擇。NoSQL數(shù)據(jù)庫(kù)對(duì)于內(nèi)容管理也很有用,可以存儲(chǔ)數(shù)據(jù)目錄。

1結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)

結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)已經(jīng)存在了幾十年,是人們最熟悉的數(shù)據(jù)存儲(chǔ)技術(shù)。大多數(shù)事務(wù)型數(shù)據(jù)庫(kù)(如Oracle、MySQL、SQL Server和PostgreSQL)都是行式數(shù)據(jù)庫(kù),因?yàn)橐幚韥?lái)自軟件應(yīng)用程序的頻繁數(shù)據(jù)寫(xiě)入。企業(yè)經(jīng)常將事務(wù)型數(shù)據(jù)庫(kù)同時(shí)用于報(bào)表,在這種情況下,需要頻繁讀取數(shù)據(jù),但數(shù)據(jù)寫(xiě)入頻率要低得多。隨著數(shù)據(jù)讀取的需求越來(lái)越強(qiáng),有更多的創(chuàng)新進(jìn)入了結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的查詢(xún)領(lǐng)域,比如列式文件格式的創(chuàng)新,它有助于提高數(shù)據(jù)讀取性能,滿(mǎn)足分析需求。

基于行的格式將數(shù)據(jù)以行的形式存儲(chǔ)在文件中?;谛械膶?xiě)入方式是將數(shù)據(jù)寫(xiě)入磁盤(pán)的最快方式,但它不一定能最快地讀取,因?yàn)槟惚仨毺^(guò)很多不相關(guān)的數(shù)據(jù)?;诹械母袷綄⑺械牧兄狄黄鸫鎯?chǔ)在文件中。這樣會(huì)帶來(lái)更好的壓縮效果,因?yàn)橄嗤臄?shù)據(jù)類(lèi)型現(xiàn)在被歸為一組。通常,它還能提供更好的讀取性能,因?yàn)槟憧梢蕴^(guò)不需要的列。

我們來(lái)看結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的常見(jiàn)選擇。例如,你需要從訂單表中查詢(xún)某個(gè)月的銷(xiāo)售總數(shù),但該表有50列。在基于行的架構(gòu)中,查詢(xún)時(shí)會(huì)掃描整個(gè)表的50個(gè)列,但在列式架構(gòu)中,查詢(xún)時(shí)只會(huì)掃描訂單銷(xiāo)售列,因而提高了數(shù)據(jù)查詢(xún)性能。我們?cè)賮?lái)詳細(xì)介紹關(guān)系型數(shù)據(jù)庫(kù),重點(diǎn)介紹事務(wù)數(shù)據(jù)和數(shù)據(jù)倉(cāng)庫(kù)處理數(shù)據(jù)分析的需求。

(1)關(guān)系型數(shù)據(jù)庫(kù)

RDBMS比較適合在線事務(wù)處理(OLTP)應(yīng)用。流行的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、MSSQL、MariaDB、PostgreSQL等。其中一些傳統(tǒng)數(shù)據(jù)庫(kù)已經(jīng)存在了幾十年。許多應(yīng)用,包括電子商務(wù)、銀行業(yè)務(wù)和酒店預(yù)訂,都是由關(guān)系型數(shù)據(jù)庫(kù)支持的。關(guān)系型數(shù)據(jù)庫(kù)非常擅長(zhǎng)處理表之間需要復(fù)雜聯(lián)合查詢(xún)的事務(wù)數(shù)據(jù)。從事務(wù)數(shù)據(jù)的需求來(lái)看,關(guān)系型數(shù)據(jù)庫(kù)應(yīng)該堅(jiān)持原子性、一致性、隔離性、持久性原則,具體如下:

  • 原子性:事務(wù)將從頭到尾完全執(zhí)行,一旦出現(xiàn)錯(cuò)誤,整個(gè)事務(wù)將會(huì)回滾。
  • 一致性:一旦事務(wù)完成,所有的數(shù)據(jù)都要提交到數(shù)據(jù)庫(kù)中。
  • 隔離性:要求多個(gè)事務(wù)能在隔離的情況下同時(shí)運(yùn)行,互不干擾。
  • 持久性:在任何中斷(如網(wǎng)絡(luò)或電源故障)的情況下,事務(wù)應(yīng)該能夠恢復(fù)到最后已知的狀態(tài)。

通常情況下,關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)會(huì)被轉(zhuǎn)存到數(shù)據(jù)倉(cāng)庫(kù)中,用于報(bào)表和聚合。

(2)數(shù)據(jù)倉(cāng)庫(kù)

數(shù)據(jù)倉(cāng)庫(kù)更適合在線分析處理(OLAP)應(yīng)用。數(shù)據(jù)倉(cāng)庫(kù)提供了對(duì)海量結(jié)構(gòu)化數(shù)據(jù)的快速聚合功能。雖然這些技術(shù)(如Amazon Redshift、Netezza和Teradata)旨在快速執(zhí)行復(fù)雜的聚合查詢(xún),但它們并沒(méi)有針對(duì)大量并發(fā)寫(xiě)入進(jìn)行過(guò)優(yōu)化。所以,數(shù)據(jù)需要分批加載,使得倉(cāng)庫(kù)無(wú)法在熱數(shù)據(jù)上提供實(shí)時(shí)洞察。

現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)使用列式存儲(chǔ)來(lái)提升查詢(xún)性能,例如Amazon Redshift、Snowflake和Google Big Query。得益于列式存儲(chǔ),這些數(shù)據(jù)倉(cāng)庫(kù)提供了非??斓牟樵?xún)速度,提高了I/O效率。除此之外,Amazon Redshift等數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)還通過(guò)在多個(gè)節(jié)點(diǎn)上并行查詢(xún)以及大規(guī)模并行處理(MPP)來(lái)提高查詢(xún)性能。

數(shù)據(jù)倉(cāng)庫(kù)是中央存儲(chǔ)庫(kù),可以存儲(chǔ)來(lái)自一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的累積數(shù)據(jù)。它們存儲(chǔ)當(dāng)前和歷史數(shù)據(jù),用于創(chuàng)建業(yè)務(wù)數(shù)據(jù)的分析報(bào)告。雖然,數(shù)據(jù)倉(cāng)庫(kù)集中存儲(chǔ)來(lái)自多個(gè)系統(tǒng)的數(shù)據(jù),但它們不能被視為數(shù)據(jù)湖。數(shù)據(jù)倉(cāng)庫(kù)只能處理結(jié)構(gòu)化的關(guān)系型數(shù)據(jù),而數(shù)據(jù)湖則可以同時(shí)處理結(jié)構(gòu)化的關(guān)系型數(shù)據(jù)和非結(jié)構(gòu)化的數(shù)據(jù),如JSON、日志和CSV數(shù)據(jù)。

Amazon Redshift等數(shù)據(jù)倉(cāng)庫(kù)解決方案可以處理PB級(jí)的數(shù)據(jù),并提供解耦的計(jì)算和存儲(chǔ)功能,以節(jié)省成本。除了列式存儲(chǔ)外,Redshift還使用數(shù)據(jù)編碼、數(shù)據(jù)分布和區(qū)域映射來(lái)提高查詢(xún)性能。比較傳統(tǒng)的基于行的數(shù)據(jù)倉(cāng)庫(kù)解決方案包括Netezza、Teradata和Greenplum。

2NoSQL數(shù)據(jù)庫(kù)

NoSQL數(shù)據(jù)庫(kù)(如Dynamo DB、Cassandra和Mongo DB)可以解決在關(guān)系型數(shù)據(jù)庫(kù)中經(jīng)常遇到的伸縮和性能挑戰(zhàn)。顧名思義,NoSQL表示非關(guān)系型數(shù)據(jù)庫(kù)。NoSQL數(shù)據(jù)庫(kù)儲(chǔ)存的數(shù)據(jù)沒(méi)有明確結(jié)構(gòu)機(jī)制連接不同表中的數(shù)據(jù)(沒(méi)有連接、外鍵,也不具備范式)。

NoSQL運(yùn)用了多種數(shù)據(jù)模型,包括列式、鍵值、搜索、文檔和圖模型。NoSQL數(shù)據(jù)庫(kù)提供可伸縮的性能、具有高可用性和韌性。NoSQL通常沒(méi)有嚴(yán)格的數(shù)據(jù)庫(kù)模式,每條記錄都可以有任意數(shù)量的列(屬性),這意味著某一行可以有4列,而同一個(gè)表中的另一行可以有10列。分區(qū)鍵用于檢索包含相關(guān)屬性的值或文檔。NoSQL數(shù)據(jù)庫(kù)是高度分布式的,可以復(fù)制。NoSQL數(shù)據(jù)庫(kù)非常耐用,高可用的同時(shí)不會(huì)出現(xiàn)性能問(wèn)題。

SQL數(shù)據(jù)庫(kù)已經(jīng)存在了幾十年,大多數(shù)人可能已經(jīng)非常熟悉關(guān)系型數(shù)據(jù)庫(kù)。我們來(lái)看SQL數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)之間的一些重大區(qū)別(見(jiàn)表1)。

表1 SQL數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)的區(qū)別

根據(jù)數(shù)據(jù)特點(diǎn),市面上有各種類(lèi)別的NoSQL數(shù)據(jù)存儲(chǔ)來(lái)解決特定的問(wèn)題。我們來(lái)看NoSQL數(shù)據(jù)庫(kù)的類(lèi)型。

3NoSQL數(shù)據(jù)庫(kù)類(lèi)型

NoSQL數(shù)據(jù)庫(kù)的主要類(lèi)型如下:

  • 列式數(shù)據(jù)庫(kù):Apache Cassandra和Apache HBase是流行的列式數(shù)據(jù)庫(kù)。列式數(shù)據(jù)存儲(chǔ)有助于在查詢(xún)數(shù)據(jù)時(shí)掃描某一列,而不是掃描整行。如果物品表有10列100萬(wàn)行,而你想查詢(xún)庫(kù)存中某一物品的數(shù)量,那么列式數(shù)據(jù)庫(kù)只會(huì)將查詢(xún)應(yīng)用于物品數(shù)量列,不需要掃描整個(gè)表。
  • 文檔數(shù)據(jù)庫(kù):最流行的文檔數(shù)據(jù)庫(kù)有MongoDB、Couchbase、MarkLogic、Dynamo DB和Cassandra。可以使用文檔數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)JSON和XML格式的半結(jié)構(gòu)化數(shù)據(jù)。
  • 圖數(shù)據(jù)庫(kù):流行的圖數(shù)據(jù)庫(kù)包括Amazon Neptune、JanusGraph、TinkerPop、Neo4j、OrientDB、GraphDB和Spark上的GraphX。圖數(shù)據(jù)庫(kù)存儲(chǔ)頂點(diǎn)和頂點(diǎn)之間的鏈接(稱(chēng)為邊)。圖可以建立在關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù)上。
  • 內(nèi)存式鍵值存儲(chǔ):最流行的內(nèi)存式鍵值存儲(chǔ)是Redis和Memcached。它們將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,用于數(shù)據(jù)讀取頻率高的場(chǎng)景。應(yīng)用程序的查詢(xún)首先會(huì)轉(zhuǎn)到內(nèi)存數(shù)據(jù)庫(kù),如果數(shù)據(jù)在緩存中可用,則不會(huì)沖擊主數(shù)據(jù)庫(kù)。內(nèi)存數(shù)據(jù)庫(kù)很適合存儲(chǔ)用戶(hù)會(huì)話信息,這些數(shù)據(jù)會(huì)導(dǎo)致復(fù)雜的查詢(xún)和頻繁的請(qǐng)求數(shù)據(jù),如用戶(hù)資料。

NoSQL有很多用例,但要建立數(shù)據(jù)搜索服務(wù),需要對(duì)所有數(shù)據(jù)建立索引。

4搜索數(shù)據(jù)存儲(chǔ)

Elasticsearch是大數(shù)據(jù)場(chǎng)景(如點(diǎn)擊流和日志分析)最受歡迎的搜索引擎之一。搜索引擎能很好地支持對(duì)具有任意數(shù)量的屬性(包括字符串令牌)的溫?cái)?shù)據(jù)進(jìn)行臨時(shí)查詢(xún)。Elasticsearch非常流行。一般的二進(jìn)制或?qū)ο蟠鎯?chǔ)適用于非結(jié)構(gòu)化、不可索引和其他沒(méi)有專(zhuān)業(yè)工具能理解其格式的數(shù)據(jù)。

Amazon Elasticsearch Service管理Elasticsearch集群,并提供API訪問(wèn)。它還提供了Kibana作為可視化工具,對(duì)Elasticsearch集群中的存儲(chǔ)的索引數(shù)據(jù)進(jìn)行搜索。AWS管理集群的容量、伸縮和補(bǔ)丁,省去了運(yùn)維開(kāi)銷(xiāo)。日志搜索和分析是常見(jiàn)的大數(shù)據(jù)應(yīng)用場(chǎng)景,Elasticsearch可以幫助你分析來(lái)自網(wǎng)站、服務(wù)器、物聯(lián)網(wǎng)傳感器的日志數(shù)據(jù)。Elasticsearch被大量的行業(yè)應(yīng)用使用,如銀行、游戲、營(yíng)銷(xiāo)、應(yīng)用監(jiān)控、廣告技術(shù)、欺詐檢測(cè)、推薦和物聯(lián)網(wǎng)等。

5非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)

當(dāng)你有非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的需求時(shí),Hadoop似乎是一個(gè)完美的選擇,因?yàn)樗强蓴U(kuò)展、可伸縮的,而且非常靈活。它可以運(yùn)行在消費(fèi)級(jí)設(shè)備上,擁有龐大的工具生態(tài),而且運(yùn)行起來(lái)似乎很劃算。Hadoop采用主節(jié)點(diǎn)和子節(jié)點(diǎn)模式,數(shù)據(jù)分布在多個(gè)子節(jié)點(diǎn),由主節(jié)點(diǎn)協(xié)調(diào)作業(yè),對(duì)數(shù)據(jù)進(jìn)行查詢(xún)運(yùn)算。Hadoop系統(tǒng)依托于大規(guī)模并行處理(MPP),這使得它可以快速地對(duì)各種類(lèi)型的數(shù)據(jù)進(jìn)行查詢(xún),無(wú)論是結(jié)構(gòu)化數(shù)據(jù)還是非結(jié)構(gòu)化數(shù)據(jù)。

在創(chuàng)建Hadoop集群時(shí),從服務(wù)器上創(chuàng)建的每個(gè)子節(jié)點(diǎn)都會(huì)附帶一個(gè)稱(chēng)為本地Hadoop分布式文件系統(tǒng)(HDFS)的磁盤(pán)存儲(chǔ)塊。你可以使用常見(jiàn)的處理框架(如Hive、Ping和Spark)對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行查詢(xún)。但是,本地磁盤(pán)上的數(shù)據(jù)只在相關(guān)實(shí)例的生命期內(nèi)持久化。

如果使用Hadoop的存儲(chǔ)層(即HDFS)來(lái)存儲(chǔ)數(shù)據(jù),那么存儲(chǔ)與計(jì)算將耦合在一起。增加存儲(chǔ)空間意味著必須增加更多的機(jī)器,這也會(huì)提高計(jì)算能力。為了獲得最大的靈活性和最佳成本效益,需要將計(jì)算和存儲(chǔ)分開(kāi),并將兩者獨(dú)立伸縮??偟膩?lái)說(shuō),對(duì)象存儲(chǔ)更適合數(shù)據(jù)湖,以經(jīng)濟(jì)高效的方式存儲(chǔ)各種數(shù)據(jù)。基于云計(jì)算的數(shù)據(jù)湖在對(duì)象存儲(chǔ)的支持下,可以靈活地將計(jì)算和存儲(chǔ)解耦。

6數(shù)據(jù)湖

數(shù)據(jù)湖是結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的集中存儲(chǔ)庫(kù)。數(shù)據(jù)湖正在成為在集中存儲(chǔ)中存儲(chǔ)和分析大量數(shù)據(jù)的一種流行方式。它按原樣存儲(chǔ)數(shù)據(jù),使用開(kāi)源文件格式來(lái)實(shí)現(xiàn)直接分析。由于數(shù)據(jù)可以按當(dāng)前格式原樣存儲(chǔ),因此不需要將數(shù)據(jù)轉(zhuǎn)換為預(yù)定義的模式,從而提高了數(shù)據(jù)攝取的速度。如圖1所示,數(shù)據(jù)湖是企業(yè)中所有數(shù)據(jù)的單一真實(shí)來(lái)源。

圖1 數(shù)據(jù)湖的對(duì)象存儲(chǔ)

數(shù)據(jù)湖的好處如下:

從各種來(lái)源攝取數(shù)據(jù):數(shù)據(jù)湖可以讓你在一個(gè)集中的位置存儲(chǔ)和分析來(lái)自各種來(lái)源(如關(guān)系型、非關(guān)系型數(shù)據(jù)庫(kù)以及流)的數(shù)據(jù),以產(chǎn)生單一的真實(shí)來(lái)源。它解答了一些問(wèn)題,例如,為什么數(shù)據(jù)分布在多個(gè)地方?單一真實(shí)來(lái)源在哪里?

采集并高效存儲(chǔ)數(shù)據(jù):數(shù)據(jù)湖可以攝取任何類(lèi)型的數(shù)據(jù),包括半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),不需要任何模式。這就回答了如何從各種來(lái)源、各種格式的數(shù)據(jù)中快速攝取數(shù)據(jù),并高效地進(jìn)行大規(guī)模存儲(chǔ)的問(wèn)題。

隨著產(chǎn)生的數(shù)據(jù)量不斷擴(kuò)展:數(shù)據(jù)湖允許你將存儲(chǔ)層和計(jì)算層分開(kāi),對(duì)每個(gè)組件分別伸縮。這就回答了如何隨著產(chǎn)生的數(shù)據(jù)量進(jìn)行伸縮的問(wèn)題。

將分析方法應(yīng)用于不同來(lái)源的數(shù)據(jù):通過(guò)數(shù)據(jù)湖,你可以在讀取時(shí)確定數(shù)據(jù)模式,并對(duì)從不同資源收集的數(shù)據(jù)創(chuàng)建集中的數(shù)據(jù)目錄。這使你能夠隨時(shí)、快速地對(duì)數(shù)據(jù)進(jìn)行分析。這回答了是否能將多種分析和處理框架應(yīng)用于相同的數(shù)據(jù)的問(wèn)題。

你需要為數(shù)據(jù)湖提供一個(gè)能無(wú)限伸縮的數(shù)據(jù)存儲(chǔ)解決方案。將處理和存儲(chǔ)解耦會(huì)帶來(lái)巨大的好處,包括能夠使用各種工具處理和分析相同的數(shù)據(jù)。雖然這可能需要一個(gè)額外的步驟將數(shù)據(jù)加載到對(duì)應(yīng)工具中,但使用Amazon S3作為中央數(shù)據(jù)存儲(chǔ)比傳統(tǒng)存儲(chǔ)方案有更多的好處。

數(shù)據(jù)湖還有其他好處。它能讓你的架構(gòu)永不過(guò)時(shí)。假設(shè)12個(gè)月后,可能會(huì)有你想要使用的新技術(shù)。因?yàn)閿?shù)據(jù)已經(jīng)存在于數(shù)據(jù)湖,你可以以最小的開(kāi)銷(xiāo)將這種新技術(shù)插入工作流程中。通過(guò)在大數(shù)據(jù)處理流水線中構(gòu)建模塊化系統(tǒng),將AWS S3等通用對(duì)象存儲(chǔ)作為主干,當(dāng)特定模塊不再適用或有更好的工具時(shí),可以自如地替換。

 

本文摘編自《解決方案架構(gòu)師修煉之道》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111694441)轉(zhuǎn)載請(qǐng)保留文章出處。

 

責(zé)任編輯:武曉燕 來(lái)源: 數(shù)倉(cāng)寶貝庫(kù)
相關(guān)推薦

2023-04-12 08:00:34

Dubbo分布式服務(wù)

2021-07-06 14:07:59

數(shù)據(jù)存儲(chǔ)存儲(chǔ)合規(guī)性

2019-05-06 15:27:48

Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)

2016-10-25 10:12:13

2011-03-31 14:53:13

數(shù)據(jù)中心節(jié)能

2019-09-02 11:14:08

隔離虛擬機(jī)操作系統(tǒng)

2021-09-28 09:52:08

Prometheus開(kāi)源工具Kubernetes

2024-09-03 11:37:48

2021-12-10 13:08:31

數(shù)據(jù)倉(cāng)庫(kù)BI數(shù)據(jù)存儲(chǔ)

2021-07-29 09:00:00

Python工具機(jī)器學(xué)習(xí)

2023-06-01 16:45:11

React開(kāi)發(fā)JavaScript

2023-09-06 08:00:00

ChatGPT數(shù)據(jù)分析

2023-08-15 15:44:55

React開(kāi)發(fā)

2019-09-12 09:22:58

Nginx負(fù)載均衡服務(wù)器

2012-11-27 13:36:01

2023-11-09 07:59:57

2017-06-26 10:35:58

前端JavaScript繼承方式

2013-07-02 17:48:51

Android數(shù)據(jù)存儲(chǔ)Android

2022-05-25 09:55:40

數(shù)據(jù)重復(fù)提交Java

2019-10-12 01:10:09

物聯(lián)網(wǎng)無(wú)線技術(shù)IOT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)