我的Nosql總結

Nosql介紹:----->>>Redis定位在"快",HBase定位於"大",mongodb定位在"靈活"。

Hbase:
hbase是bigtable的開源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數據庫系統。
大:一個表可以有上億行,上百萬列
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。
稀疏:對於爲空(null)的列,並不佔用存儲空間,因此,表可以設計的非常稀疏。
目標是高效存儲大量數據,支持列壓縮,行事務
定位與大的數據量;


mongoDB :
mongodb是文檔型的非關係型數據庫;(滿足海量存儲需求和麪向文檔的數據庫)
與關係型數據庫最爲接近;
適合於網站的數據存儲、內容管理與緩存應用,
優勢在於查詢功能比較強大,能存儲海量數據,(適合大數據量的存儲,傾向於存儲);
C++編寫,基於文檔存儲;
MongoDB還支持全文檢索,基於文檔的豐富查詢、在數據處理與聚合等方面具有很強的靈活性;


redis :
redis是一個key-value存儲系統;(滿足極高讀寫性能的kv型數據庫)
redis提供五種數據類型:string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型);
redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,
redis具備binlog功能,可以將所有操作寫入日誌,當redis出現故障,可依照binlog進行數據恢復。
並且在此基礎上實現了master-slave(主從)同步。(區別與memcache);
redis 3.0將推出cluster,功能更加強大;


問題:爲什麼用redis做緩存而不用mongodb做緩存?
redis是一個key-value存儲系統;(滿足極高讀寫性能的kv型數據庫)
mongodb是文檔型的非關係型數據庫;(滿足海量存儲需求和麪向文檔的數據庫)



Pig :
Pig是一個基於Hadoop的大規模數據分析平臺;(基於hadoop屬於一門語言)
把類SQL的數據分析請求轉換爲一系列經過優化處理的MapReduce運算;(幫助mapreduce工作)
爲複雜的海量數據並行計算提供了一個簡單的操作和編程接口;
與數據庫的表類似,可以在關係數據庫中找到它(其中,元組代表行,並且每個元組都由字段組成)。
Pig 擁有大量的數據類型,不僅支持包、元組和映射等高級概念,還支持簡單的數據類型,
如 int、long、float、double、chararray 和 bytearray。並且,還有一套完整的比較運算符,包括使用正則表達式的豐富匹配模式

Hive :
hive是基於Hadoop的一個數據倉庫工具;
可以將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換爲MapReduce任務進行運行。
可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制;
Hive 沒有專門的數據格式,允許用戶指定數據格式;
Hive 的最佳使用場合是大數據集的批處理作業,例如,網絡日誌分析。
● 支持索引,加快數據查詢。
● 不同的存儲類型,例如,純文本文件、HBase 中的文件。
● 將元數據保存在關係數據庫中,大大減少了在查詢過程中執行語義檢查的時間。
● 可以直接使用存儲在Hadoop 文件系統中的數據。
● 內置大量用戶函數UDF 來操作時間、字符串和其他的數據挖掘工具,支持用戶擴展UDF 函數來完成內置函數無法實現的操作。
● 類SQL 的查詢方式,將SQL 查詢轉換爲MapReduce 的job 在Hadoop集羣上執行。
(形式自由,用法靈活)


Pig和Hive共同點:(兩者沒有太大區分,都是基於hdfs工作)
將MapReduce的實現進行簡化,
讀寫操作數據最終都是存儲在HDFS分佈式文件系統上

區別:
在Hive中可以執行  插入/刪除 等操作,
但是Pig中我沒有發現有可以 插入 數據的方法,請允許我暫且認爲這是最大的不同點吧。 
Hive中至少還有一個“表”的概念,
但是Pig中我認爲是基本沒有表的概念,所謂的表建立在Pig Latin腳本中,對與Pig更不要提metadata了。


mongoDb補充:
2.1  MongoDB的主要特點
(1)文件存儲格式爲Bson,使用易於掌握和理解的Json風格語法。相對Json來說,Bson擁有更好的性能,主要表現爲更快的遍歷速度、操作更簡易、增加了額外的
數據類型。
(2)模式自由,支持嵌入子文檔和數組,無需事先創建數據結構,屬於逆規範化的數據模型,有利於提高查詢速度。
(3)動態查詢,支持豐富的查詢表達式,使用Json形式的標記,可輕易查詢文檔中內嵌的對象和數組及子文檔。
(4)完整的索引支持,包括文檔內嵌對象和數據,同時還提供了全文索引方式,MongoDB的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃。
(5)使用高效的二進制數據存儲,適合存儲大型對象(如高清圖片、視頻等)。
(6)支持多種複製模式,提供冗餘及自動故障轉移。支持Master-Slave、Replica Pairs/Replica Sets、有限Master-Master模式。
(7)支持服務端腳本和Map/Reduce,可以實現海量數據計算,即實現雲計算功能。
(8)性能高、速度快。在多數場合,其查詢速度對於MySQL要快的多,對於CPU佔用非常小。部署很簡單,幾乎是零配置。
(9)自動處理碎片,支持自動分片功能實現水平擴展的數據庫集羣,可以動態添加或移除節點。
(10)內置GridFS,支持海量存儲。
(11)可通過網絡訪問,採用高效的MongoDB網絡協議,在性能方面要優於http或Rest協議。
(12)第三方支持豐富,MongoDB社區活躍,越來越多的公司和網站在生產環境中使用MongoDB進行技術架構優化,同時由10gen公司官方提供強大技術支持。
2.2  MongoDB的適用場景
MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋樑,集兩者的優勢於一身。
(1)網站數據:MongoDB非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的複製及高度伸縮性。
(2)緩存:由於性能很高,MongoDB也適合作爲信息基礎設施的緩存層。在系統重啓之後,由MongoDB搭建的持久化緩存層可以避免下層的數據源過載。
(3)大尺寸,低價值的數據:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。
(4)高伸縮性的場景:MongoDB非常適合由數十或數百臺服務器組成的數據庫。MongoDB的路線圖中已經包含對MapReduce
引擎的內置支持。
(5)用於對象及JSON數據的存儲:MongoDB的Bson數據格式非常適合文檔化格式的存儲及查詢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章