四種重要的非關係型資料庫

2022-02-08 20:34:15 字數 4383 閱讀 2281

hbase

列式儲存以流的方式在列中儲存所有的資料。對於任何記錄,索引都可以快速地獲取列上的資料;列式儲存支援行檢索,但這需要從每個列獲取匹配的列值,並重新組成行。hbase(hadoop database)是乙個高可靠性、高效能、面向列、可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase是google bigtable的開源實現,模仿並提供了基於google檔案系統的bigtable資料庫的所有功能。hbase可以直接使用本地檔案系統或者hadoop作為資料儲存方式,不過為了提高資料可靠性和系統的健壯性,發揮hbase處理大資料量等功能,需要使用hadoop作為檔案系統。hbase僅能通過主鍵(row key)和主鍵的range來檢索資料,僅支援單行事務,主要用來儲存非結構化和半結構化的鬆散資料。

hbase中表的特點:大,稀疏,面向列

hadoop生態系統中的各層系統

hbase位於結構化儲存層;

hdfs為hbase提供了高可靠性的底層儲存支援;

mapreduce為hbase提供了高效能的計算能力;

zookeeper為hbase提供了穩定服務和失敗恢復機制;

pig和hive還為hbase提供了高層語言支援,使得在hbase上進行資料統計處理變的非常簡單;

sqoop則為hbase提供了方便的rdbms資料匯入功能,方便資料遷移;

hbase在網際網路儲存的幾個應用場景:

1.抓取增量資料

使用hbase 作為資料儲存,抓取來自各種資料來源的增量資料,如抓取使用者互動資料,以備之後進行分析、處理

2.內容服務

傳統資料庫最主要的使用場合之一是為使用者提供內容服務,如url短鏈結服務,可以hbase為基礎,儲存大量的短鏈結以及和原始長鏈結的對映關係

3.資訊交換

facebook的簡訊平台每天交換數十億條簡訊,hbase可以很好的滿足該平台的需求:高的寫吞吐量,極大的表,資料中心的強一致性

hbase與傳統關係型資料庫區別:

資料型別

hbase只有簡單的字串型別,所有型別都由使用者自己處理,它只儲存字串;

關聯式資料庫有豐富的型別選擇和儲存方式。

資料操作

hbase操作只有很簡單的插入、查詢、刪除、清空等,表和表之間是分離的,沒有複雜的表和表之間的關係,所以也不能也沒有必要實現表和表之間的關聯等操作;

傳統的關係資料通常有各種各樣的函式、連線操作。

儲存模式

hbase是基於列儲存的,每個列族都有幾個檔案儲存,不同列族的檔案是分離的;

傳統的關聯式資料庫是基於**結構和行模式儲存的。

資料維護

hbase的更新正確來說應該不叫更新,而且乙個主鍵或者列對應的新的版本,而它舊有的版本仍然會保留,所以它實際上是插入了新的資料;

傳統關聯式資料庫裡面是替換修改。

可伸縮性

hbase和bigtable這類分布式資料庫就是直接為了這個目的開發出來的,能夠輕易的增加或者減少(在硬體錯誤的時候)硬體數量,而且對錯誤的相容性比較高;

傳統的關聯式資料庫通常需要增加中間層才能實現類似的功能。

修改表模式需要先將表設定為不可用(disable),模式修改完成再啟用表(enable)

hbase的三個主要的功能元件

庫函式:鏈結到每個客戶端;乙個hmaster主伺服器;許多個hregion伺服器。

hbase三層結構

1.zookeeper檔案:它記錄了-root-表的位置資訊,即root region的位置資訊。

2.-root-表:只包含乙個root region,記錄了.meta.表中的region資訊。通過root region,我們就可以訪問.meta.表的資料。

3.meta.表:記錄了使用者表的hregion資訊,.meta.表可以有多個hregion,儲存了hbase中所有資料表的hregion位置資訊。

hbase兩種檔案型別

hfile:hbase中keyvalue資料的儲存格式,hfile是hadoop的二進位制格式檔案,實際上hstorefile就是對hfile做了輕量級包裝,即hstorefile底層就是hfile。

hlogfile:hbase中wal(write ahead log)的儲存格式,物理上是hadoop的順序檔案。

redis

redis是乙個key-value儲存系統,key為字串型別,只能通過key對value進行操作,支援的資料型別包括string、list、set、zset(有序集合)和hash。redis支援主從同步,資料可以從主伺服器向任意數量的從伺服器上同步。

redis事務允許一組命令在單一步驟中執行。事務有兩個屬性:在乙個事務中的所有命令作為單個獨立的操作順序執行;redis事務是原子的,原子意味著要麼所有的命令都執行,要麼都不執行。redis 事務由指令 multi 發起的,之後傳遞需要在事務中和整個事務中,最後由 exec 命令執行所有命令的列表。

redis分割槽

是將資料分割成多個 redis 例項,使每個例項將只包含鍵子集的過程.它允許更大的資料庫,使用多台計算機的記憶體總和,它允許按比例在多核心和多個計算機計算,以及網路頻寬向多台計算機和網路介面卡。劣勢:涉及多個鍵時,redis事務無法使用;資料處理比較複雜;加和刪除的容量可能會很複雜。

分割槽型別:範圍分割槽;雜湊分割槽

redis 資料庫可以配置安全保護的,所以任何客戶端在連線執行命令時需要進行身份驗證。

應用:統計

mongoddb

乙個基於分布式檔案儲存的開源資料庫系統,為web應用提供可擴充套件的高效能資料儲存解決方案。mongodb 將資料儲存為乙個文件,資料結構由鍵值(key value)對組成。

特點:

不適用場景:高度事務性的系統;傳統的商業智慧型應用;需要sql 的問題。

*聚合管道將文件在乙個管道處理完畢後將結果傳遞給下乙個管道處理,管道操作是可以重複的。

引用式文件查詢:需要兩次查詢

第一次查詢使用者位址的物件id(objectid);第二次通過查詢的id獲取使用者的詳細位址資訊。

集合中索引不能超過64個;索引名的長度不能超過125個字元;乙個復合索引最多可以有31個字段。mongorestore 命令來恢復備份的資料。

neo4j

是乙個高效能的 nosql 圖形資料庫,把資料儲存為圖中的節點以及節點之間的關係。neo4j 中兩個最基本的概念是節點和邊

節點表示實體,邊則表示實體之間的關係。節點和邊都可以有自己的屬性,不同實體通過各種不同的關係關聯起來,形成複雜的物件圖。

neo4j 提供了在物件圖上進行查詢和遍歷的功能:深度搜尋、廣度搜尋。

特點:

完整的acid支援;高可用性;輕易擴充套件到上億級別的節點和關係;通過遍歷工具高速檢索資料;屬性是由key-value鍵值對組成。

應用:社交網路,歌曲資訊,狀態圖

資料庫轉化

關係型資料庫

是對各種新的可擴充套件/高效能資料庫的簡稱。具有nosql對海量資料的儲存管理能力,保持了傳統資料庫支援acid和sql等特性。

newsql共同特點:支援關係資料模型;使用sql作為其主要的介面。

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...

關係型資料庫與非關係型資料庫

關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...