您好,登錄后才能下訂單哦!
數據類型與分布式存儲
================================================================================
概述:
================================================================================
1.結構化數據
★定義:
2.非結構化數據
★定義及作用:
非結構化數據,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等
相對于結構化數據(即行數據,存儲在數據庫里,可以用二維表結構來邏輯表達實現的數據)而言,不方便用數據庫二維邏輯表來表現的數據即稱為非結構化數據,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。
非結構化數據庫是指其字段長度可變,并且每個字段的記錄又可以由可重復或不可重復的子字段構成的數據庫,用它不僅可以處理結構化數據(如數字、符號等信息)而且更適合處理非結構化數據(全文文本、圖象、聲音、影視、超媒體等信息)
非結構化WEB數據庫主要是針對非結構化數據而產生的,與以往流行的關系數據庫相比,其最大區別在于它突破了關系數據庫結構定義不易改變和數據定長的限制,支持重復字段、子字段以及變長字段并實現了對變長數據和重復字段進行處理和數據項的變長存儲管理,在處理連續信息(包括全文信息)和非結構化信息(包括各種多媒體信息)中有著傳統關系型數據庫所無法比擬的優勢。
非結構化數據:k-v
3.半結構化數據
★定義及作用:
所謂半結構化數據,就是介于完全結構化數據(如關系型數據庫、面向對象數據庫中的數據)和完全無結構的數據(如聲音、圖像文件等)之間的數據,HTML文檔就屬于半結構化數據。它一般是自描述的,數據的結構和內容混在一起,沒有明顯的區分。
半結構化數據:json, xml (Document Store文檔存儲, mongodb、Elasticsearch)
4.數據模型
CAP理論在互聯網界有著廣泛的知名度,知識稍微寬泛一點的工程師都會把其作為衡量系統設計的準則。大家都非常清楚地理解了CAP:任何分布式系統在可用性、一致性、分區容錯性方面,不能兼得,最多只能得其二,因此,任何分布式系統的設計只是在三者中的不同取舍而已
★定義及作用:
C(一致性):所有的節點上的數據時刻保持同步;
A(可用性):每個請求都能接受到一個響應,無論響應成功或失敗;
P(分區容忍):系統應該能持續提供服務,即使系統內部有消息丟失(分區);
高可用、數據一致是很多系統設計的目標,但是分區又是不可避免的事情
☉CA without P:
如果不要求P(不允許分區),則C(強一致性)和A(可用性)是可以保證的。但其實分區不是你想不想的問題,而是始終會存在,因此CA的系統更多的是允許分區后各子系統依然保持CA。
☉CP without A:
如果不要求A(可用),相當于每個請求都需要在Server之間強一致,而P(分區)會導致同步時間無限延長,如此CP也是可以保證的。很多傳統的數據庫分布式事務都屬于這種模式。
☉AP wihtout C:
要高可用并允許分區,則需放棄一致性。一旦分區發生,節點之間可能會失去聯系,為了高可用,每個節點只能用本地數據提供服務,而這樣會導致全局數據的不一致性。現在眾多的NoSQL都屬于此類。
1.海量數據的關鍵環節及面臨的挑戰
★大數據下的關鍵環節:
☉海量數據的生成
訪問日志數據
業務數據
用戶上傳
☉海量數據應用
精準廣告
個性化定制
未來預測
☉海量數據的管理
文件
圖片
數據
★大數據帶來的挑戰
數據采集
數據存儲
數據搜索
數據共享
數據傳輸
數據分析
數據可視化
2.大數據如何存儲
根據did you know(http://didyouknow.org/)的數據,目前互聯網上可訪問的信息數量接近1秭= 1百萬億億 (1024)。毫無疑問,各個大型網站也都存儲著海量的數據,這些海量的數據如何有效存儲,是每個大型網站的架構師必須要解決的問題。分布式存儲技術就是為了解決這個問題而發展起來的技術.
★傳統存儲問題:
縱向擴展受陣列空間限制;
橫向擴展受交換設備限制;
節點受文件系統限制
如:NFS圖片存儲會遇到帶寬、存儲空間、請求并發等問題
★分布式存儲的概念:
與目前常見的集中式存儲技術不同,分布式存儲技術并不是將數據存儲在某個或多個特定的節點上,而是通過網絡使用企業中的每臺機器上的磁盤空間,并將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在企業的各個角落。
★分布式存儲系統的特性:
☉可擴展(Scalable)
分布式存儲系統可以擴展到幾百臺甚至幾千臺的集群規模,而且,隨著集群規模的增長,系統整體性能表現為線性增長。
☉可靠性(Reliable)
高性能。無論是針對整個集群還是單臺服務器,都要求分布式存儲系統具備高性能。
☉低成本(Cheap)
分布式存儲系統的自動容錯、自動負載均衡機制使其可以構建在普通PC機之上。另外,線性擴展能力也使得增加、減少機器非常方便,可以實現自動運維。
☉易用
分布式存儲系統需要能夠提供易用的對外接口,另外,也要求具備完善的監控、運維工具,并能夠方便地與其他系統集成,例如,從Hadoop云計算系統導入數據。
★分布式存儲的機制分類:
☉通用分布式存儲:
分布式存儲(不支持掛載,不支持復雜的文件系統機制,不支持權限模型),mogilefs, fastdfs, ...
☉專用分布式存儲:
分布式文件系統(支持掛載), moosefs, ...
★分布式存儲的挑戰
節點間通信;
數據存儲;
數據空間平衡;
容錯;
文件系統支持
★分布式存儲的核心點
元數據存儲(高效)
數據存儲(冗余)
★存儲一般分為兩種類型:
☉集中式:
NAS:Network Attached Storage; 文件系統級別, 例如NFS, FTP, SAMBA…
SAN:Storage Aera Network; 塊級別, 例如IP SAN, FC SAN…
☉分布式 :
中心節點存儲:每個集群中有節點專門用來存儲元數據, 其他節點則存儲部分數據
無中心節點存儲:每個集群各節點都存儲元數據和部分數據
★分布式存儲和分布式文件系統:
文件系統: 有文件系統接口
存儲: 無文件系統接口, 通過API訪問
★分布式存儲文件系統的常見實現
Google Filesystem GFS擅長處理單個大文件
GFS+MapReduce (編程模型-運行框架-API)可以實現程序切割到多節點運行,實現分布式處理
Hadoop Distributed Filesystem 根據GFS思想開發的,擅長處理單個大文件
ClusterFS 擅長處理單個大文件 Taobao Filesystem 淘寶開源的文件系統,擅長處理海量小文件,適用于大規模場景。 MogileFS 是一個高性能的分布式存儲,擅長處理海量小文件 Ceph 是一個 Linux PB級別的分布式文件系統,測試中 MooseFS 分布式文件系統,兼容POSIX(FUSE),可以直接掛載使用,當節點多,并發量大環境中,可擴展性差,性能一般。 Lustre 一種平行分布式文件系統
3.具體技術及應用
-海量的數據按照結構化程度來分,可以大致分為結構化數據,非結構化數據,半結構化數據。
★結構化數據的存儲及應用
☉定義:
所謂結構化數據是一種用戶定義的數據類型,它包含了一系列的屬性,每一個屬性都有一個數據類型,存儲在關系數據庫里,可以用二維表結構來表達實現的數據。
☉存儲:
大多數系統都有大量的結構化數據,一般存儲在oracla或MySQL的等的關系型數據庫中,當系統規模大到單一節點的數據庫無法支撐時,一般有兩種方法:垂直擴展與水平擴展。
◆垂直擴展:
垂直擴展比較好理解,簡單來說就是按照功能切分數據庫,將不同功能的數據,存儲在不同的數據庫中,這樣一個大數據庫就被切分成多個小數據庫,從而達到了數據庫的擴展。一個架構設計良好的應用系統,其總體功能一般肯定是由很多個松耦合的功能模塊所組成的,而每一個功能模塊所需要的數據對應到數據庫中就是一張或多張表。各個功能模塊之間交互越少,越統一,系統的耦合度越低,這樣的系統就越容易實現垂直切分。
◆水平擴展:
簡單來說,可以將數據的水平切分理解為按照數據行來切分,就是將表中的某些行切分到一個數據庫中,而另外的某些行又切分到其他的數據庫中。為了能夠比較容易地判斷各行數據切分到了哪個數據庫中,切分總是需要按照某種特定的規則來進行的,如按照某個數字字段的范圍,某個時間類型字段的范圍,或者某個字段的hash值。
垂直擴展與水平擴展各有優缺點,一般一個大型系統會將水平與垂直擴展結合使用。
★非結構化存儲及應用
☉定義:
相對于結構化數據而言,不方便用數據庫二維邏輯表來表現的數據即稱為非結構化數據,包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報表、圖像和音頻/視頻信息等等。
☉存儲:分布式存儲
分布式文件系統是實現非結構化數據存儲的主要技術,
Google File System(GFS)
Hadoop Distributed Filesystem(HDFS)
TFS:Taobao Filesystem
GlusterFS(去中心化設計)
Lustre,HPC
Ceph(內核級別構建)
Mogile Filesystem(分布式存儲)
·API(php,java,perl,python)
Moose Filesystem(MFS)
FastDFS
★半結構化存儲及應用
☉定義:
就是介于完全結構化數據(如關系型數據庫、面向對象數據庫中的數據)和完全無結構的數據(如聲音、圖像文件等)之間的數據, 半結構化數據模型具有一定的結構性,但較之傳統的關系和面向對象的模型更為靈活。半結構數據模型完全不基于傳統數據庫模式的嚴格概念,這些模型中的數據都是自描述的。
由于半結構化數據沒有嚴格的schema定義,所以不適合用傳統的關系型數據庫進行存儲,適合存儲這類數據的數據庫被稱作“NoSQL”數據庫。
☉存儲:NoSQL 數據庫
被稱作下一代的數據庫,具有非關系型,分布式,輕量級,支持水平擴展且一般不保證遵循ACID原則的數據儲存系統。“NoSQL”其實是具有誤導性的別名,稱作Non Relational Database(非關系型數據庫)更為恰當。所謂“非關系型數據庫”指的是:
使用松耦合類型、可擴展的數據模式來對數據進行邏輯建模(Map,列,文檔,圖表等),而不是使用固定的關系模式元組來構建數據模型。
以遵循于CAP定理(能保證在一致性,可用性和分區容忍性三者中中達到任意兩個)的跨多節點數據分布模型而設計,支持水平伸縮。這意味著對于多數據中心和動態供應(在生產集群中透明地加入/刪除節點)的必要支持,也即彈性(Elasticity)。
擁有在磁盤或內存中,或者在這兩者中都有的,對數據持久化的能力,有時候還可以使用可熱插拔的定制存儲。
支持多種的‘Non-SQL’接口(通常多于一種)來進行數據訪問。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。