NoSQL 數(shù)據庫因其功能性、易于開發(fā)性和可擴展性而廣受認可,它們越來越多地用于大數(shù)據和實時 Web 應用程序,在本文中,我們通過示例討論 NoSQL、何時使用 NoSQL 與 SQL 及其用例。
創(chuàng)新互聯(lián)主要從事成都網站設計、網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務諸城,10余年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
NoSQL是一種下一代數(shù)據庫管理系統(tǒng) (DBMS)。NoSQL 數(shù)據庫具有靈活的模式,可用于構建具有大量數(shù)據和高負載的現(xiàn)代應用程序。
“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經存在類似的數(shù)據庫。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。
在處理大量數(shù)據時,任何關系數(shù)據庫管理系統(tǒng) (RDBMS) 的響應時間都會變慢。為了解決這個問題,我們可以通過升級現(xiàn)有硬件來“擴大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴展并且更具成本效益。
NoSQL 對于非結構化或非常大的數(shù)據對象(例如聊天日志數(shù)據、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網巨頭中特別受歡迎的原因。
一些流行的 NoSQL 數(shù)據庫包括:
隨著企業(yè)更快地積累更大的數(shù)據集,結構化數(shù)據和關系模式并不總是適合。有必要使用非結構化數(shù)據和大型對象來更好地捕獲這些信息。
傳統(tǒng)的 RDBMS 使用 SQL(結構化查詢語言)語法來存儲和檢索結構化數(shù)據,相反,NoSQL 數(shù)據庫包含廣泛的功能,可以存儲和檢索結構化、半結構化、非結構化和多態(tài)數(shù)據。
有時,NoSQL 也被稱為“ 不僅僅是 SQL ”,強調它可能支持類似 SQL 的語言或與 SQL 數(shù)據庫并列。SQL 和 NoSQL DBMS 之間的一個區(qū)別是 JOIN 功能。SQL 數(shù)據庫使用 JOIN 子句來組合來自兩個或多個表的行,因為 NoSQL 數(shù)據庫本質上不是表格的,所以這個功能并不總是可行或相關的。
但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據庫傾向于以不同的方式解決類似的問題。
一般來說,在以下情況下,NoSQL 比 SQL 更可?。?/p>
許多行業(yè)都在采用 NoSQL,取代關系數(shù)據庫,從而為某些業(yè)務應用程序提供更高的靈活性和可擴展性,下面給出了 NoSQL 數(shù)據庫的一些企業(yè)用例。
內容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據庫可以通過其靈活和開放的數(shù)據模型為存儲多媒體內容提供更好的選擇。
例如,福布斯在短短幾個月內就構建了一個基于 MongoDB 的定制內容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。
大數(shù)據是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據集,實時存儲和檢索大數(shù)據的系統(tǒng)在分析 歷史 數(shù)據的同時使用流處理來攝取新數(shù)據,這是一系列非常適合 NoSQL 數(shù)據庫的功能。
Zoom使用 DynamoDB(按需模式)使其數(shù)據能夠在沒有性能問題的情況下進行擴展,即使該服務在 COVID-19 大流行的早期使用量激增。
物聯(lián)網設備具有連接到互聯(lián)網或通信網絡的嵌入式軟件和傳感器,能夠在無需人工干預的情況下收集和共享數(shù)據。隨著數(shù)十億臺設備生成數(shù)不清的數(shù)據,IoT NoSQL 數(shù)據庫為 IoT 服務提供商提供了可擴展性和更靈活的架構。
Freshub就是這樣的一項服務,它從 MySQL 切換到 MongoDB,以更好地處理其大型、動態(tài)、非統(tǒng)一的數(shù)據集。
擁有數(shù)十億智能手機用戶,可擴展性正成為在移動設備上提供服務的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據模型的 NoSQL DBMS 通常是完美的解決方案。
例如,The Weather Channel使用 MongoDB 數(shù)據庫每分鐘處理數(shù)百萬個請求,同時還處理用戶數(shù)據并提供天氣更新。
NoSQL,指的是非關系型的數(shù)據庫。隨著互聯(lián)網web2.0網站的興起,傳統(tǒng)的關系數(shù)據庫在應付web2.0網站,特別是超大規(guī)模和高并發(fā)的
SNS類型的web2.0純動態(tài)網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數(shù)據庫則由于其本身的特點得到了非常迅速的發(fā)展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項全新的數(shù)據庫革命性運動,早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護者們提倡運用非關系型的數(shù)
據存儲,相對于鋪天蓋地的關系型數(shù)據庫運用,這一概念無疑是一種全新的思維的注入。
從這一新興技術中選擇一款正確的NoSQL數(shù)據庫是非常具有挑戰(zhàn)性的。比一下網建議在選擇時考慮以下因素:
并發(fā)控制
并
發(fā)控制指的是當多個用戶同時更新運行時,用于保護數(shù)據庫完整性的各種技術。并發(fā)機制不正確可能導致臟讀、幻讀和不可重復讀等此類問題。并發(fā)控制的目的是保
證一個用戶的工作不會對另一個用戶的工作產生不合理的影響。在某些情況下,這些措施保證了當用戶和其他用戶一起操作時,所得的結果和她單獨操作時的結果是
一樣的。在另一些情況下,這表示用戶的工作按預定的方式受其他用戶的影響。
封鎖
就是事務T在對某個數(shù)據對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務T就對該數(shù)據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數(shù)據對象。
封鎖是一次只允許一個用戶讀取或修改的一種機制,是實現(xiàn)并發(fā)控制的一個非常重要的技術。
MVCC
Multi-Version Concurrency Control多版本并發(fā)控制,維持一個數(shù)據的多個版本使讀寫操作沒有沖突。MVCC優(yōu)化了數(shù)據庫并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時得到最高的性能,并且可以不用關閉服務器就直接進行熱備份。
ACID
指
數(shù)據庫事務正確執(zhí)行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個支持事務(Transaction)的數(shù)據庫系統(tǒng),必需要具有這四種特性,否則在事務過程(Transaction
processing)當中無法保證數(shù)據的正確性,交易過程極可能達不到交易方的要求。
None
一些系統(tǒng)不提供原子性。
鏡像
數(shù)據庫鏡像是DBMS根據DBA的要求,自動把整個數(shù)據庫或其中的關鍵數(shù)據復制到另一個磁盤上,每當主數(shù)據庫更新時,DBMS會自動把更新后的數(shù)據復制過去,即DBMS自動保證鏡像數(shù)據與主數(shù)據的一致性。
鏡像分為同步和異步。
數(shù)據存儲
指的是數(shù)據的物理特性怎樣被存儲在數(shù)據庫中。
磁盤 數(shù)據被存儲在硬盤驅動器里;
GFS或谷歌文件系統(tǒng)是一個由谷歌開發(fā)的專有的分布式文件系統(tǒng);
Hadoop是Apache軟件框架,免費許可下支持數(shù)據密集型分布式應用程序;
RAM隨機存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat
Software開發(fā)。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事務控制能力都是一種極其重要和寶貴的功
能。事務控制能力使得我們能夠確保一組命令確實已經全部執(zhí)行成功,或者確保當任何一個命令出現(xiàn)錯誤時所有命令的執(zhí)行結果均被退回。
實現(xiàn)語言
實現(xiàn)語言會影響數(shù)據庫的發(fā)展速度。典型的NoSQL數(shù)據庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實現(xiàn)語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個特點對你的數(shù)據庫是最重要的:
持久性
可用性
一致性
分區(qū)容忍性
證書類型
下面這些許可證是一個不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發(fā)
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發(fā)者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數(shù)據庫最大的不同,是決定使用哪款數(shù)據庫的一個首要指標。
關鍵字:支持get、put和刪除操作
按列存儲:相對于傳統(tǒng)的按行存儲,數(shù)據集成容易多了
面向文件系統(tǒng):存儲像是JSON或XML這樣的結構化文件,很容易就能從面向對象軟件中獲取數(shù)據。
shell.setLayout(rowLayout);
Combo comboDropDown = new Combo(shell, SWT.DROP_DOWN | SWT.BORDER);
Combo comboSimple = new Combo(shell, SWT.SIMPLE | SWT.BORDER);
for(int i=0; i3; i++) {
comboDropDown.add("item " + i);
comboSimple.add("item " + i);
}