溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)類型與分布式存儲

發(fā)布時間:2020-05-25 13:23:30 來源:網(wǎng)絡(luò) 閱讀:1218 作者:逐夢小濤 欄目:數(shù)據(jù)庫

數(shù)據(jù)類型與分布式存儲

================================================================================

概述:


================================================================================

數(shù)據(jù)類型

 1.結(jié)構(gòu)化數(shù)據(jù)

定義:

  • 結(jié)構(gòu)化數(shù)據(jù)即行數(shù)據(jù),存儲在數(shù)據(jù)庫里,可以用二維表結(jié)構(gòu)來邏輯表達實現(xiàn)的數(shù)據(jù);

  • 能夠用數(shù)據(jù)或統(tǒng)一的結(jié)構(gòu)加以表示,我們稱之為結(jié)構(gòu)化數(shù)據(jù),如數(shù)字、符號。傳統(tǒng)的關(guān)系數(shù)據(jù)模型、行數(shù)據(jù),存儲于數(shù)據(jù)庫,可用二維表結(jié)構(gòu)表示;

  • 結(jié)構(gòu)化數(shù)據(jù),簡單來說就是數(shù)據(jù)庫。結(jié)合到典型場景中更容易理解,比如企業(yè)ERP、財務(wù)系統(tǒng);醫(yī)療HIS數(shù)據(jù)庫;教育一卡通;政府行政審批;其他核心數(shù)據(jù)庫等。這些應(yīng)用需要哪些存儲方案呢?基本包括高速存儲應(yīng)用需求、數(shù)據(jù)備份需求、數(shù)據(jù)共享需求以及數(shù)據(jù)容災(zāi)需求;

  • 所有關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)全部為結(jié)構(gòu)化數(shù)據(jù);

  • 結(jié)構(gòu)化數(shù)據(jù):SQL, TPS(事物處理系統(tǒng))較差, MySQL(主從復(fù)制、分庫分表來提升性能);

 2.非結(jié)構(gòu)化數(shù)據(jù)

定義及作用:

  • 非結(jié)構(gòu)化數(shù)據(jù),包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等

  • 相對于結(jié)構(gòu)化數(shù)據(jù)(即行數(shù)據(jù),存儲在數(shù)據(jù)庫里,可以用二維表結(jié)構(gòu)來邏輯表達實現(xiàn)的數(shù)據(jù))而言,不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)即稱為非結(jié)構(gòu)化數(shù)據(jù),包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。

  • 非結(jié)構(gòu)化數(shù)據(jù)庫是指其字段長度可變,并且每個字段的記錄又可以由可重復(fù)或不可重復(fù)的子字段構(gòu)成的數(shù)據(jù)庫,用它不僅可以處理結(jié)構(gòu)化數(shù)據(jù)(如數(shù)字、符號等信息)而且更適合處理非結(jié)構(gòu)化數(shù)據(jù)(全文文本、圖象、聲音、影視、超媒體等信息)

  • 非結(jié)構(gòu)化WEB數(shù)據(jù)庫主要是針對非結(jié)構(gòu)化數(shù)據(jù)而產(chǎn)生的,與以往流行的關(guān)系數(shù)據(jù)庫相比,其最大區(qū)別在于它突破了關(guān)系數(shù)據(jù)庫結(jié)構(gòu)定義不易改變和數(shù)據(jù)定長的限制,支持重復(fù)字段、子字段以及變長字段并實現(xiàn)了對變長數(shù)據(jù)和重復(fù)字段進行處理和數(shù)據(jù)項的變長存儲管理,在處理連續(xù)信息(包括全文信息)和非結(jié)構(gòu)化信息(包括各種多媒體信息)中有著傳統(tǒng)關(guān)系型數(shù)據(jù)庫所無法比擬的優(yōu)勢。

  • 非結(jié)構(gòu)化數(shù)據(jù):k-v

 3.半結(jié)構(gòu)化數(shù)據(jù)

定義及作用:

  • 所謂半結(jié)構(gòu)化數(shù)據(jù),就是介于完全結(jié)構(gòu)化數(shù)據(jù)(如關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫中的數(shù)據(jù))和完全無結(jié)構(gòu)的數(shù)據(jù)(如聲音、圖像文件等)之間的數(shù)據(jù),HTML文檔就屬于半結(jié)構(gòu)化數(shù)據(jù)。它一般是自描述的,數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容混在一起,沒有明顯的區(qū)分。

  • 半結(jié)構(gòu)化數(shù)據(jù):json, xml (Document Store文檔存儲, mongodb、Elasticsearch)

  4.數(shù)據(jù)模型

  • 結(jié)構(gòu)化數(shù)據(jù):二維表(關(guān)系型)

  • 半結(jié)構(gòu)化數(shù)據(jù):樹、圖

  • 非結(jié)構(gòu)化數(shù)據(jù):無 

  • RMDBS的數(shù)據(jù)模型有:如網(wǎng)狀數(shù)據(jù)模型、層次數(shù)據(jù)模型、關(guān)系型 (oracle,mysql等

  • nosql非關(guān)系數(shù)據(jù)庫(memcached,redis,mangodb)

  • 結(jié)構(gòu)化數(shù)據(jù):先有結(jié)構(gòu)、再有數(shù)據(jù)

  • 半結(jié)構(gòu)化數(shù)據(jù):先有數(shù)據(jù),再有結(jié)構(gòu)

CAP理論(一致性、可用性、分區(qū)容錯性)

 CAP理論在互聯(lián)網(wǎng)界有著廣泛的知名度,知識稍微寬泛一點的工程師都會把其作為衡量系統(tǒng)設(shè)計的準則。大家都非常清楚地理解了CAP:任何分布式系統(tǒng)在可用性、一致性、分區(qū)容錯性方面,不能兼得,最多只能得其二,因此,任何分布式系統(tǒng)的設(shè)計只是在三者中的不同取舍而已

定義及作用:

  • C(一致性):所有的節(jié)點上的數(shù)據(jù)時刻保持同步;

  • A(可用性):每個請求都能接受到一個響應(yīng),無論響應(yīng)成功或失??;

  • P(分區(qū)容忍):系統(tǒng)應(yīng)該能持續(xù)提供服務(wù),即使系統(tǒng)內(nèi)部有消息丟失(分區(qū));

高可用、數(shù)據(jù)一致是很多系統(tǒng)設(shè)計的目標,但是分區(qū)又是不可避免的事情

CA without P:

  • 如果不要求P(不允許分區(qū)),則C(強一致性)和A(可用性)是可以保證的。但其實分區(qū)不是你想不想的問題,而是始終會存在,因此CA的系統(tǒng)更多的是允許分區(qū)后各子系統(tǒng)依然保持CA。

CP without A:

  • 如果不要求A(可用),相當于每個請求都需要在Server之間強一致,而P(分區(qū))會導(dǎo)致同步時間無限延長,如此CP也是可以保證的。很多傳統(tǒng)的數(shù)據(jù)庫分布式事務(wù)都屬于這種模式。

AP wihtout C:

  • 要高可用并允許分區(qū),則需放棄一致性。一旦分區(qū)發(fā)生,節(jié)點之間可能會失去聯(lián)系,為了高可用,每個節(jié)點只能用本地數(shù)據(jù)提供服務(wù),而這樣會導(dǎo)致全局數(shù)據(jù)的不一致性。現(xiàn)在眾多的NoSQL都屬于此類。

分布式存儲技術(shù)及應(yīng)用

 1.海量數(shù)據(jù)的關(guān)鍵環(huán)節(jié)及面臨的挑戰(zhàn)

大數(shù)據(jù)下的關(guān)鍵環(huán)節(jié):

海量數(shù)據(jù)的生成

  • 訪問日志數(shù)據(jù)

  • 業(yè)務(wù)數(shù)據(jù)

  • 用戶上傳

海量數(shù)據(jù)應(yīng)用

  • 精準廣告

  • 個性化定制

  • 未來預(yù)測

海量數(shù)據(jù)的管理

  • 文件

  • 圖片

  • 數(shù)據(jù)

大數(shù)據(jù)帶來的挑戰(zhàn)

  • 數(shù)據(jù)采集

  • 數(shù)據(jù)存儲

  • 數(shù)據(jù)搜索

  • 數(shù)據(jù)共享

  • 數(shù)據(jù)傳輸

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

  • 數(shù)據(jù)可視化

 2.大數(shù)據(jù)如何存儲

   根據(jù)did you know(http://didyouknow.org/)的數(shù)據(jù),目前互聯(lián)網(wǎng)上可訪問的信息數(shù)量接近1秭= 1百萬億億 (1024)。毫無疑問,各個大型網(wǎng)站也都存儲著海量的數(shù)據(jù),這些海量的數(shù)據(jù)如何有效存儲,是每個大型網(wǎng)站的架構(gòu)師必須要解決的問題。分布式存儲技術(shù)就是為了解決這個問題而發(fā)展起來的技術(shù).

傳統(tǒng)存儲問題:

  • 縱向擴展受陣列空間限制;

  • 橫向擴展受交換設(shè)備限制;

  • 節(jié)點受文件系統(tǒng)限制

如:NFS圖片存儲會遇到帶寬、存儲空間、請求并發(fā)等問題

分布式存儲的概念:

  • 與目前常見的集中式存儲技術(shù)不同,分布式存儲技術(shù)并不是將數(shù)據(jù)存儲在某個或多個特定的節(jié)點上,而是通過網(wǎng)絡(luò)使用企業(yè)中的每臺機器上的磁盤空間,并將這些分散的存儲資源構(gòu)成一個虛擬的存儲設(shè)備,數(shù)據(jù)分散的存儲在企業(yè)的各個角落。

分布式存儲系統(tǒng)的特性:

可擴展(Scalable)

  • 分布式存儲系統(tǒng)可以擴展到幾百臺甚至幾千臺的集群規(guī)模,而且,隨著集群規(guī)模的增長,系統(tǒng)整體性能表現(xiàn)為線性增長。

可靠性(Reliable)

  • 高性能。無論是針對整個集群還是單臺服務(wù)器,都要求分布式存儲系統(tǒng)具備高性能。

低成本(Cheap)

  • 分布式存儲系統(tǒng)的自動容錯、自動負載均衡機制使其可以構(gòu)建在普通PC機之上。另外,線性擴展能力也使得增加、減少機器非常方便,可以實現(xiàn)自動運維。

易用

  • 分布式存儲系統(tǒng)需要能夠提供易用的對外接口,另外,也要求具備完善的監(jiān)控、運維工具,并能夠方便地與其他系統(tǒng)集成,例如,從Hadoop云計算系統(tǒng)導(dǎo)入數(shù)據(jù)。

分布式存儲的機制分類:

通用分布式存儲:

  • 分布式存儲(不支持掛載,不支持復(fù)雜的文件系統(tǒng)機制,不支持權(quán)限模型),mogilefs, fastdfs, ...

專用分布式存儲:

  • 分布式文件系統(tǒng)(支持掛載), moosefs, ...

分布式存儲的挑戰(zhàn)

  • 節(jié)點間通信;

  • 數(shù)據(jù)存儲;

  • 數(shù)據(jù)空間平衡;

  • 容錯;

  • 文件系統(tǒng)支持

分布式存儲的核心點

  • 元數(shù)據(jù)存儲(高效)

  • 數(shù)據(jù)存儲(冗余)

存儲一般分為兩種類型:

集中式:

  • NAS:Network Attached Storage; 文件系統(tǒng)級別, 例如NFS, FTP, SAMBA… 

  • SAN:Storage Aera Network; 塊級別, 例如IP SAN, FC SAN…

分布式 :

  • 中心節(jié)點存儲:每個集群中有節(jié)點專門用來存儲元數(shù)據(jù), 其他節(jié)點則存儲部分數(shù)據(jù) 

  • 無中心節(jié)點存儲:每個集群各節(jié)點都存儲元數(shù)據(jù)和部分數(shù)據(jù)

分布式存儲和分布式文件系統(tǒng):

  • 文件系統(tǒng): 有文件系統(tǒng)接口

  • 存儲: 無文件系統(tǒng)接口, 通過API訪問

分布式存儲文件系統(tǒng)的常見實現(xiàn)

Google Filesystem

GFS擅長處理單個大文件

GFS+MapReduce (編程模型-運行框架-API)可以實現(xiàn)程序切割到多節(jié)點運行,實現(xiàn)分布式處理

Hadoop Distributed Filesystem

根據(jù)GFS思想開發(fā)的,擅長處理單個大文件

ClusterFS擅長處理單個大文件
Taobao Filesystem淘寶開源的文件系統(tǒng),擅長處理海量小文件,適用于大規(guī)模場景。
MogileFS是一個高性能的分布式存儲,擅長處理海量小文件
Ceph是一個 Linux PB級別的分布式文件系統(tǒng),測試中
MooseFS分布式文件系統(tǒng),兼容POSIX(FUSE),可以直接掛載使用,當節(jié)點多,并發(fā)量大環(huán)境中,可擴展性差,性能一般。
Lustre一種平行分布式文件系統(tǒng)

 3.具體技術(shù)及應(yīng)用

  -海量的數(shù)據(jù)按照結(jié)構(gòu)化程度來分,可以大致分為結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)

結(jié)構(gòu)化數(shù)據(jù)的存儲及應(yīng)用

定義:

  • 所謂結(jié)構(gòu)化數(shù)據(jù)是一種用戶定義的數(shù)據(jù)類型,它包含了一系列的屬性,每一個屬性都有一個數(shù)據(jù)類型,存儲在關(guān)系數(shù)據(jù)庫里,可以用二維表結(jié)構(gòu)來表達實現(xiàn)的數(shù)據(jù)。

存儲:

  • 大多數(shù)系統(tǒng)都有大量的結(jié)構(gòu)化數(shù)據(jù),一般存儲在oraclaMySQL的等的關(guān)系型數(shù)據(jù)庫中,當系統(tǒng)規(guī)模大到單一節(jié)點的數(shù)據(jù)庫無法支撐時,一般有兩種方法:垂直擴展與水平擴展。

垂直擴展:

  • 垂直擴展比較好理解,簡單來說就是按照功能切分數(shù)據(jù)庫,將不同功能的數(shù)據(jù),存儲在不同的數(shù)據(jù)庫中,這樣一個大數(shù)據(jù)庫就被切分成多個小數(shù)據(jù)庫,從而達到了數(shù)據(jù)庫的擴展。一個架構(gòu)設(shè)計良好的應(yīng)用系統(tǒng),其總體功能一般肯定是由很多個松耦合的功能模塊所組成的,而每一個功能模塊所需要的數(shù)據(jù)對應(yīng)到數(shù)據(jù)庫中就是一張或多張表。各個功能模塊之間交互越少,越統(tǒng)一,系統(tǒng)的耦合度越低,這樣的系統(tǒng)就越容易實現(xiàn)垂直切分。

水平擴展:

  • 簡單來說,可以將數(shù)據(jù)的水平切分理解為按照數(shù)據(jù)行來切分,就是將表中的某些行切分到一個數(shù)據(jù)庫中,而另外的某些行又切分到其他的數(shù)據(jù)庫中。為了能夠比較容易地判斷各行數(shù)據(jù)切分到了哪個數(shù)據(jù)庫中,切分總是需要按照某種特定的規(guī)則來進行的,如按照某個數(shù)字字段的范圍,某個時間類型字段的范圍,或者某個字段的hash值。

垂直擴展與水平擴展各有優(yōu)缺點,一般一個大型系統(tǒng)會將水平與垂直擴展結(jié)合使用。

非結(jié)構(gòu)化存儲及應(yīng)用

定義:

  • 相對于結(jié)構(gòu)化數(shù)據(jù)而言,不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)即稱為非結(jié)構(gòu)化數(shù)據(jù),包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。

存儲:分布式存儲

分布式文件系統(tǒng)是實現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)存儲的主要技術(shù),

  • Google File System(GFS)

  • Hadoop Distributed Filesystem(HDFS)

  • TFS:Taobao Filesystem

  • GlusterFS(去中心化設(shè)計)

  • Lustre,HPC

  • Ceph(內(nèi)核級別構(gòu)建)

  • Mogile Filesystem(分布式存儲)

    ·API(php,java,perl,python)

  • Moose Filesystem(MFS)

  • FastDFS

半結(jié)構(gòu)化存儲及應(yīng)用

定義:

  • 就是介于完全結(jié)構(gòu)化數(shù)據(jù)(如關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫中的數(shù)據(jù))和完全無結(jié)構(gòu)的數(shù)據(jù)(如聲音、圖像文件等)之間的數(shù)據(jù), 半結(jié)構(gòu)化數(shù)據(jù)模型具有一定的結(jié)構(gòu)性,但較之傳統(tǒng)的關(guān)系和面向?qū)ο蟮哪P透鼮殪`活。半結(jié)構(gòu)數(shù)據(jù)模型完全不基于傳統(tǒng)數(shù)據(jù)庫模式的嚴格概念,這些模型中的數(shù)據(jù)都是自描述的。

  • 由于半結(jié)構(gòu)化數(shù)據(jù)沒有嚴格的schema定義,所以不適合用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫進行存儲,適合存儲這類數(shù)據(jù)的數(shù)據(jù)庫被稱作“NoSQL”數(shù)據(jù)庫。

存儲:NoSQL 數(shù)據(jù)庫

  • 被稱作下一代的數(shù)據(jù)庫,具有非關(guān)系型,分布式,輕量級,支持水平擴展且一般不保證遵循ACID原則的數(shù)據(jù)儲存系統(tǒng)?!癗oSQL”其實是具有誤導(dǎo)性的別名,稱作Non Relational Database(非關(guān)系型數(shù)據(jù)庫)更為恰當。所謂“非關(guān)系型數(shù)據(jù)庫”指的是:

  • 使用松耦合類型、可擴展的數(shù)據(jù)模式來對數(shù)據(jù)進行邏輯建模(Map,列,文檔,圖表等),而不是使用固定的關(guān)系模式元組來構(gòu)建數(shù)據(jù)模型。

  • 以遵循于CAP定理(能保證在一致性,可用性和分區(qū)容忍性三者中中達到任意兩個)的跨多節(jié)點數(shù)據(jù)分布模型而設(shè)計,支持水平伸縮。這意味著對于多數(shù)據(jù)中心和動態(tài)供應(yīng)(在生產(chǎn)集群中透明地加入/刪除節(jié)點)的必要支持,也即彈性(Elasticity)。

  • 擁有在磁盤或內(nèi)存中,或者在這兩者中都有的,對數(shù)據(jù)持久化的能力,有時候還可以使用可熱插拔的定制存儲。

  • 支持多種的‘Non-SQL’接口(通常多于一種)來進行數(shù)據(jù)訪問。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI