終于有人把MyBatis,MySQL,SQL,NoSQL,Hadoop,HBase的區別講明白了
前言
MyBatis,MySQL,SQL,NoSQL,Hadoop,HBase有啥區別?乍一看密密麻麻的太可怕了,今天的日更問來個決議,研究一下他們之間的區別
MyBatis,MySQL,SQL,NoSQL,Hadoop,HBase釋義
MyBatis:
mybatis是一款用于持久層的、輕量級的半自動化ORM框架,封裝了所有jdbc操作以及設定查詢引數和獲取結果集的操作,支持自定義sql、存盤程序和高級映射,(這句話筆者也只是略懂,差不多能明白啥意思)
持久層是什么意思呢,可以把層字去掉,持久,也就是”保持長久“的意思,他針對的是系統中資料存在的時限,而非其他,有一個基本問題大家應該知道,在記憶體中的資料是不持久的,如果計算機崩潰或者其他原因導致關機,資料就會丟失,但是磁盤上的資料是持久的,因此,用在持久層也就是這個框架是用來將記憶體中的資料寫入到磁盤中的,再具體一點,就是寫到資料庫中,所以,總結一下,框架用于持久層,就是說這個框架是和資料庫進行互動的,用于資料庫中資料操作的框架,
輕量級框架的概念可以簡單的理解為所用框架開發的程式啟動時占用的資源少、對業務代碼的侵入性不強、比較容易配置、使用和部署簡單、獨立部署即可使用無需依賴另外的框架,這種就是輕量級框架,相反的就是重量級,在互聯網飛速發展和產品迭代更新速度如此之快的今天,輕量級的框架更容易被接受,這也是spring勝出,EJB退出的原因,
ORM,Object Relational Mapping, 直接翻譯就是物件關系映射,我也沒有更好的解釋,看一下百科上是這樣介紹的”用于實作面向物件編程語言里不同型別系統的資料之間的轉換,從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬物件資料庫”,面向物件是從軟體工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系資料庫則是從數學理論發展而來的,兩套理論存在顯著的區別,為了解決這個不匹配的現象,物件關系映射技術應運而生”,這里簡單的可以這樣理解,java中的資料類和資料庫之間的型別系統不同,因此在使用java處理資料庫時,需要進行對應的型別轉化,而mybatis可以做這個事,可以將java中的型別一一映射到資料庫的欄位型別上,因此可以將其看作是一個ORM框架,那為什么又是半自動ORM框架呢?使用mybatis,需要手動配置pojo、sql和映射關系,用戶可以自定義sql,這些sql是針對于處理資料庫的,但是這些sql需要接受一些查詢java型別的引數,或者是回傳結果集封裝到java類中,這些是需要配置的,因此mybatis是一個半自動ORM框架,說到底還是因為需要寫sql,才能將資料庫中的資料映射到java類中,而不是直接根據java類獲取到對應資料庫中資料,這里多說一下,hibernate是一個全自動的ORM框架,因為只需要提供pojo和映射關系即可,后期可以直接根據pojo獲取到資料,
最后就是高級映射是什么,這里可以類比資料表之間的映射關系,也就是一對一、一對多、多對多,
上面的釋義轉載自https://blog.csdn.net/chaizepeng/article/details/119384531
MySQL:
MySQL是一個關系型資料庫管理系統,關聯資料庫將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度并提高了靈活性,
MySQL是開源的,
MySql支持大型的資料庫,可以處理擁有成千上萬條記錄的大型資料庫,
MySql支持標準的SQL資料語言形式,
MySql可以允許在多個系統上,并且支持多種語言,
MySql對PHP有很好的支持,
MySql支持大型資料庫,支持5000萬條記錄的資料倉庫,32位系統表檔案最大可支持4GB,64位系統支持最大的表檔案為8TB
MySql是可以定制的,采用了GPL協議,
上面的釋義轉自https://blog.csdn.net/lengyuezuixue/article/details/78961645
SQL:
Structure Query Language(結構化查詢語言)簡稱SQL,它被美國國家標準局(ANSI)確定為關系型資料庫語言的美國標準,后被國際化標準組織(ISO)采納為關系資料庫語言的國際標準,資料庫管理系統可以通過SQL管理資料庫;定義和操作資料,維護資料的完整性和安全性,
上面的釋義轉自https://blog.csdn.net/weixin_45851945/article/details/114287877
NoSQL:
NoSQL是海量資料增刪改查的, 基本不支持SQL語法,NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,互聯網的早期我們的資料大多以關系型資料庫來存盤的,其特點是規范的資料結構(預定義模式)、強一至性、表與表之間通過外鍵進行關聯,這些特征使我們對資料的管理更加清晰和嚴謹,但隨著互聯網的發展資料成爆炸式的增長我們對資料庫需要更好的靈活性和更快的速度,這就是NoSql可以做到的,它不需要預先定義模式,沒有主外鍵關聯、支持分片、支持復本,
NoSQL的橫向擴展是很方便的,只需要加節點,加機器就可以了.比普通資料庫方便很多,
NoSQL 可擴展是很強的,
上面的釋義轉自https://blog.csdn.net/qq_41489540/article/details/113624586
Hadoop:
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構,
用戶可以在不了解分布式底層細節的情況下,開發分布式程式,充分利用集群的威力進行高速運算和存盤,
Hadoop是開源的高可靠、可擴展的分布式的軟體框架,
上面的釋義轉自https://blog.csdn.net/weixin_42223850/article/details/97672235
HBase:
HBase —— Hadoop Database的簡稱,Google BigTable的另一種開源實作方式,從問世之初,就為了解決用大量廉價的機器高速存取海量資料、實作資料分布式存盤提供可靠的方案,從功能上來講,HBase不折不扣是一個資料庫( 熟悉hadoop生態系統的應該明白,Hbase資料實際存于HDFS上,這里不詳解),與我們熟悉的Oracle、MySQL、MSSQL等一樣,對外提供資料的存盤和讀取服務,而從應用的角度來說,HBase與一般的資料庫又有所區別,HBase本身的存取介面相當簡單,不支持復雜的資料存取,更不支持SQL等結構化的查詢語言;HBase也沒有除了rowkey以外的索引,所有的資料分布和查詢都依賴rowkey,所以,HBase在表的設計上會有很嚴格的要求,架構上,HBase是分布式資料庫的典范,這點比較像MongoDB的sharding模式,能根據鍵值的大小,把資料分布到不同的存盤節點上,MongoDB根據configserver來定位資料落在哪個磁區上,HBase通過訪問Zookeeper來獲取 .ROOT. 表所在地址,通過 .ROOT. 表得到相應.META.表資訊,從而獲取資料存盤的region位置,
上面的釋義轉自https://blog.csdn.net/fenglei0415/article/details/82941398
區別和聯系:
他們不是一個東西,但有所聯系,
SQL是結構化查詢語言,資料庫管理系統可以通過SQL管理資料庫;定義和操作資料,維護資料的完整性和安全性,
NoSQL是海量資料增刪改查的, 基本不支持SQL語法,NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”
MySQL體積小、速度快、成本低、結構穩定、便于查詢,可以保證資料的一致性,但缺乏靈活性,
NoSQL高性能、高擴展、高可用,不用局限于固定的結構,減少了時間和空間上的開銷,卻又很難保證資料一致性,
如果規模和性能比24小時的資料一致性更重要,那NoSQL是一個理想的選擇 (NoSQL依賴于BASE模型——基本可用、軟狀態、最終一致性),
但如果要保證到“始終一致”,尤其是對于機密資訊和財務資訊,那么MySQL很可能是最優的選擇(MySQL依賴于ACID模型——原子性、一致性、獨立性和耐久性),
mybatis是一款用于持久層的、輕量級的半自動化ORM框架,支持自定義sql,一般我們在公司里使用的時候就會在使用到Java、并且需要SQL陳述句的時候需要mybatis,
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構,
HBase —— Hadoop Database的簡稱,從問世之初,就為了解決用大量廉價的機器高速存取海量資料、實作資料分布式存盤提供可靠的方案,
Hbase是Hadoop的一部分,
結語
今天雖然是搬運工,但是也有自己的理解和感悟!
最后匯報一下進展



模型就緒,代碼整裝待發,明天見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384173.html
標籤:其他
