MongoDB是一種Nosql數(shù)據(jù)庫(Not Only SQL), Nosql不是近幾年
才有的, 從數(shù)據(jù)庫的初期發(fā)展就已經(jīng)存在了Nosql的數(shù)據(jù)庫链瓦。數(shù)據(jù)庫之中支持的SQL語句是由 IBM 開發(fā)出來的,并且最早就應(yīng)用在了Oracle數(shù)據(jù)庫之中.但是這個(gè)時(shí)候有人開始反感與編寫SQL操作.于是有一些人就開始提出一個(gè)理論 —— 不要去使用SQL, 于是最早的Nosql概念產(chǎn)生了∠匝海可以后來發(fā)生了一些變化, 在90年代到2010之間, 世界上最流行的數(shù)據(jù)庫依然是關(guān)系型數(shù)據(jù)庫, 并且圍繞關(guān)系型數(shù)據(jù)庫開發(fā)出了很多大型應(yīng)用程序。后來又隨這移動(dòng)技術(shù)(云計(jì)算 大數(shù)據(jù))的發(fā)展, 很多公司并不愿意去使用大型的廠商數(shù)據(jù)庫——Oracle/DB2,因?yàn)檫@些人已經(jīng)習(xí)慣于使用Mysql數(shù)據(jù)庫了。這些人發(fā)現(xiàn)在大數(shù)據(jù)在云計(jì)算的環(huán)境下, 數(shù)據(jù)存儲(chǔ)收到了很大的挑戰(zhàn), 那么后來就開始重新進(jìn)行了Nosql數(shù)據(jù)庫的開發(fā), 但是經(jīng)過長期的開發(fā)發(fā)現(xiàn), Nosql數(shù)據(jù)庫依然不能離開傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(Nosql)
實(shí)際上在現(xiàn)實(shí)的開發(fā)之中一直存在一種神奇的問題
數(shù)據(jù)表 -> JDBC讀取 -> POJO(VO . PO) -> 控制層轉(zhuǎn)化為JSON數(shù)據(jù) -> 客戶端可是這樣的轉(zhuǎn)換實(shí)在是太麻煩了, 那么最好的做法是, 直接有一個(gè)數(shù)據(jù)庫就存放有顯示的JSON數(shù)據(jù)該有多好, 那么就省略所有需要轉(zhuǎn)換的過程夷野。所以在實(shí)際開發(fā)中, 往往除了關(guān)系型數(shù)據(jù)庫之外還要提供一個(gè)Nosql數(shù)據(jù)庫, 其中Nosql數(shù)據(jù)庫負(fù)責(zé)數(shù)據(jù)的讀取, 因?yàn)橹苯颖4娴木褪荍SON(前提: MongoDB中的數(shù)據(jù)是排列好的組合數(shù)據(jù))
例如: 現(xiàn)在要求顯示出每個(gè)雇員的編號(hào)、職位拇泛、部門名稱滨巴、工資等級(jí)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之中一定要存放大量的冗余數(shù)據(jù)俺叭。而有了Nosql數(shù)據(jù)庫之后恭取, 可以直接在業(yè)務(wù)層里面將數(shù)據(jù)交給Nosql數(shù)據(jù)庫保存, 按照指定的結(jié)構(gòu)進(jìn)行存儲(chǔ).
在MongoDB數(shù)據(jù)庫之中與Oracle數(shù)據(jù)庫有如下的概念對應(yīng):
No. | 關(guān)系型數(shù)據(jù)庫 | 非關(guān)系型數(shù)據(jù)庫 |
---|---|---|
1 | 數(shù)據(jù)庫 | 數(shù)據(jù)庫(類似于MySQL) |
2 | 表 | 集合 |
3 | 行 | 文檔 |
4 | 列 | 成員 |
5 | 主鍵 | Object ID(自動(dòng)維護(hù)) |
在整個(gè)行業(yè)中, MongoDB數(shù)據(jù)庫是發(fā)展最好的一個(gè)Nosql數(shù)據(jù)庫, 因?yàn)樗cNode.js 捆綁在一起了, 也就是說如果你要從事NodeJS的開發(fā), 那么一定要使用MongoDB, 而NodeJS( 基于Javascript )在國內(nèi)最成功的應(yīng)用 - 淘寶(當(dāng)然, 并不是全都是用NodeJS開發(fā)的)
MonogDB之所以能夠得到更好的發(fā)展也取決于: 面向集合的存儲(chǔ)過程 、模式自由(無模式)熄守、基于BSON( MongoDB自身的一種數(shù)據(jù)格式, 但也是一種JSON格式 )
Nosql => 去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性 詳情
IBM => 要詳細(xì)了解可讀下 (浪潮之巔第三版)關(guān)于各大公司發(fā)展的歷程
SQL語句 其實(shí)就是幾個(gè)簡短的單詞: ["SELECT", "FROM", "GROUP BY", "ORDER BY", "HAVING"]