物聯網數據的儲存

物聯網數據的存儲

1.海量存儲空間;多源異構,數據的表達需要細緻考慮
2.支持多粒度分級存儲和檢索,改善資源利用率,提高資源獲取率
3.具有實時性的多維檢測
4.冗餘數據需要壓縮

  • 開放兼容
  • 動態擴展
  • 可靠高效
  • 安全可信

關係型數據庫

概念

域(Domain) :相同類型數據元素值的集合
笛卡爾積:一組域D1, D2,…,Dn,則笛卡爾乘積爲D1XD2X…xDn ={( d1, d2,…, dn)| di∈Di,i=1,2,.,n}
元組(Tuple) : 笛卡爾乘積中每一-個元素(d1, d2,…, dn)稱爲一個元組)

關係模型的特點:

1.每一列不可再分
2.同一關係中屬性(字段)不允許重名
3.關係中不允許有完全相同的元組
4.關係中任意交換兩行位置不影響數據實際含義

關係數據結構

<關係名>(屬性名1,屬性名2,…屬性名N)

關係數據操作

查詢操作:選擇,投影,連接,並,交,差
更新操作:增加,刪除,修改數據的操作

常用的三種關係運算:

選擇運算:選擇若干行組成一個新的關係
投影運算:選擇若干列組成一個新的關係
連接運算:合併成一張表(有一列是相同的)

關係完整性約束

完整性約束=實體完整性+參照完整性+用戶定義完整性
1.實體完整性主要指關係中關鍵字不爲空且唯一
2.參照完整性指外碼的刪除,出現數據不完整性
3.用戶定義完整性指針對某一數據具體約束

非關係型數據庫

1.鍵值存儲數據庫

使用一個哈希表,有一個特定的鍵值和一個指針指向特定的數據
簡單,容易部署
針對部分值更新查詢的效率低下

2.列存儲數據庫

應對分佈式存儲的海量數據
鍵指向多個列,列由列家族安排

3.文檔型數據庫

數據是版本化的文檔,半結構化的文檔
和鍵值存儲時類似的,是鍵值存儲的升級版

4.圖形數據庫

使用圖形模型的數據庫

5感知數據庫

面向工業自動化,物聯網等領域;
既可以進行關係數據管理,也可以在線存儲實時特性的時序數據;
提供SQL標準接口,也提供實時數據的發佈訂閱,歷史查詢,歷史數據分析等服務;
定位於滿足企業級應用的數據庫。

本地文件系統

物理存儲資源直接連接在本地節點上,處理器通過系統總線可以直接訪問
物聯網使用本地 文件系統的方案較少
不同設備上的本地文件系統難以協同
通常運行與獨立的設備:容易丟失

分佈式文件系統

通常使用分佈式文件系統存儲物聯網數據

◆建立於本地文件系統之上
◆通過網絡將若干節點相連
◆提供併發處理
◆解決I/O瓶頸、空間動態擴展等問題

分佈式文件系統優點:

1.簡單配置即可輕鬆擴展集羣
2.併發控制,提高效率
3.節點失效視爲常態,容錯性高;
4.健全的數據恢復與備份,可靠性高;
5.吞吐量大,適合大規模數據應用
6.支持大數據處理工具

GFS (Google FiLe System)

◆GFS集羣由一個主服務器(Master) 和大量的塊伺服器構成,並被許多客戶
(Client)訪問。
◆文件被分爲固定大小的塊,並分配一個全局唯一的塊句柄 (chunk -handLe)
標識。
◆主服務器維護數據所有的元數據。
◆應用程序通過客戶端使用文件系統,客戶端和主服務器只交換元數據:數據通
信直接和伺服器聯繫。

MogilsFS

存儲節點爲實際文件存放的地方,用來完成存儲,刪除重命名等任務

在這裏插入圖片描述

FastDFS文件系統

1.只有兩個角色,tracker server和storage server ,不需要存儲文件索引信息
2.所有服務器都是對等的,不存在Master- SLave關係存儲服務器採用分組方式,同組內存儲服務器上的文件完全相同

TFS (Taobao File System)特點:

◆面向互聯網服務,針對海量非結構化數據
◆扁平化數據組織結構易於擴容
◆提供海量小文件存儲(每個文件通常不超過1M)

HDFS內部機制

  • Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。
  • Hadoop分佈式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware).上的分佈式文件系統。HDFS是Apache Hadoop CoreI項 目的一部分。
  • HDFS是一.個主從結構。
  • 一個名字節點,管理文件命名空間和客戶端訪問文件的主服務器。
  • 若干數據節點,通常是一個節點一個機器,它來管理對應節點的存儲。
  • HDFS對外開放文件命名空間並允許用戶數據以文件形式存儲。
內部機制是將一個文件分割成一個或多個塊,這些塊被存儲在一組數據節點中:

名字節點用來操作文件命名空間或目錄操作,如打開,關閉,重命名等等;
數據節點負責來自文件系統客戶的讀寫請求:
數據節點同時還要執行塊的創建,刪除,和來自名字節點的塊複製指令。

在這裏插入圖片描述

客戶端請求文件系統打開文件:
  • DFS獲取文件最開始的幾個塊的datanode地址;
  • 第一個塊讀取完畢之後,尋找下一個塊的最佳datanode,讀取數據;
  • 數據讀取完畢,客戶端關閉流對象。
客戶端寫人,創建新的文件(塊):
  • Namenode在文件系統的命名空間中創建一個新文件,此時該文件沒有關聯到任何block;
  • 客戶端寫入數據的時候,分解爲packets (數據包), 並寫人到一個數據隊列中,請求Namenode分配新的block存放的數據節點;
  • 將packet寫人到管道的第一個節點,第一個節點存放好packet乏後,轉發給下一個節點,下一個節點存放之後繼續往下傳遞;
  • 同時維護一個ack queue隊列,等待來自datanode確認消息。當管道上的所有datanode都確認乏後,packet從ack隊列中移除;
  • 數據寫人完畢,客戶端cLose輸出流。將所有的packet刷新到管道中,然後安心等待來自datanode的確認消息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章