NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的
成都創(chuàng)新互聯(lián)公司于2013年開始,先為襄城等服務(wù)建站,襄城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為襄城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動,早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)
據(jù)存儲,相對于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。
從這一新興技術(shù)中選擇一款正確的NoSQL數(shù)據(jù)庫是非常具有挑戰(zhàn)性的。比一下網(wǎng)建議在選擇時考慮以下因素:
并發(fā)控制
并
發(fā)控制指的是當(dāng)多個用戶同時更新運(yùn)行時,用于保護(hù)數(shù)據(jù)庫完整性的各種技術(shù)。并發(fā)機(jī)制不正確可能導(dǎo)致臟讀、幻讀和不可重復(fù)讀等此類問題。并發(fā)控制的目的是保
證一個用戶的工作不會對另一個用戶的工作產(chǎn)生不合理的影響。在某些情況下,這些措施保證了當(dāng)用戶和其他用戶一起操作時,所得的結(jié)果和她單獨(dú)操作時的結(jié)果是
一樣的。在另一些情況下,這表示用戶的工作按預(yù)定的方式受其他用戶的影響。
封鎖
就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。
封鎖是一次只允許一個用戶讀取或修改的一種機(jī)制,是實(shí)現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。
MVCC
Multi-Version Concurrency Control多版本并發(fā)控制,維持一個數(shù)據(jù)的多個版本使讀寫操作沒有沖突。MVCC優(yōu)化了數(shù)據(jù)庫并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時得到最高的性能,并且可以不用關(guān)閉服務(wù)器就直接進(jìn)行熱備份。
ACID
指
數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個支持事務(wù)(Transaction)的數(shù)據(jù)庫系統(tǒng),必需要具有這四種特性,否則在事務(wù)過程(Transaction
processing)當(dāng)中無法保證數(shù)據(jù)的正確性,交易過程極可能達(dá)不到交易方的要求。
None
一些系統(tǒng)不提供原子性。
鏡像
數(shù)據(jù)庫鏡像是DBMS根據(jù)DBA的要求,自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個磁盤上,每當(dāng)主數(shù)據(jù)庫更新時,DBMS會自動把更新后的數(shù)據(jù)復(fù)制過去,即DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。
鏡像分為同步和異步。
數(shù)據(jù)存儲
指的是數(shù)據(jù)的物理特性怎樣被存儲在數(shù)據(jù)庫中。
磁盤 數(shù)據(jù)被存儲在硬盤驅(qū)動器里;
GFS或谷歌文件系統(tǒng)是一個由谷歌開發(fā)的專有的分布式文件系統(tǒng);
Hadoop是Apache軟件框架,免費(fèi)許可下支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序;
RAM隨機(jī)存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務(wù)接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務(wù)能力的表類型,由Sleepycat
Software開發(fā)。BDB表類型提供了MySQL用戶長久期盼的功能,即事務(wù)控制能力。在任何RDBMS中,事務(wù)控制能力都是一種極其重要和寶貴的功
能。事務(wù)控制能力使得我們能夠確保一組命令確實(shí)已經(jīng)全部執(zhí)行成功,或者確保當(dāng)任何一個命令出現(xiàn)錯誤時所有命令的執(zhí)行結(jié)果均被退回。
實(shí)現(xiàn)語言
實(shí)現(xiàn)語言會影響數(shù)據(jù)庫的發(fā)展速度。典型的NoSQL數(shù)據(jù)庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實(shí)現(xiàn)語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個特點(diǎn)對你的數(shù)據(jù)庫是最重要的:
持久性
可用性
一致性
分區(qū)容忍性
證書類型
下面這些許可證是一個不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發(fā)
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發(fā)者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數(shù)據(jù)庫最大的不同,是決定使用哪款數(shù)據(jù)庫的一個首要指標(biāo)。
關(guān)鍵字:支持get、put和刪除操作
按列存儲:相對于傳統(tǒng)的按行存儲,數(shù)據(jù)集成容易多了
面向文件系統(tǒng):存儲像是JSON或XML這樣的結(jié)構(gòu)化文件,很容易就能從面向?qū)ο筌浖蝎@取數(shù)據(jù)。
一般將NoSQL數(shù)據(jù)庫分為四大類:鍵值(Key-Value)存儲數(shù)據(jù)庫、列存儲數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形(Graph)數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場景。
鍵值(Key-Value)存儲數(shù)據(jù)庫Key指向Value的鍵值對,通常用hash表來實(shí)現(xiàn)查找速度快數(shù)據(jù)無結(jié)構(gòu)化(通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負(fù)載,也用于一些日志系統(tǒng)等。
列存儲數(shù)據(jù)庫,以列簇式存儲,將同一列數(shù)據(jù)存在一起查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展功能相對局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫,Key-Value對應(yīng)的鍵值對,Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫一樣需預(yù)先定義表結(jié)構(gòu)),查詢性能不高,而且缺乏統(tǒng)一的查詢語法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫,圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時候需要對整個圖做計算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。
1、存放值區(qū)別:
數(shù)據(jù)庫只存放在當(dāng)前值,數(shù)據(jù)倉庫存放歷史值;
2、數(shù)據(jù)變化區(qū)別:
數(shù)據(jù)庫內(nèi)數(shù)據(jù)是動態(tài)變化的,只要有業(yè)務(wù)發(fā)生,數(shù)據(jù)就會被更新,而數(shù)據(jù)倉庫則是靜態(tài)的歷史數(shù)據(jù),只能定期添加、刷新;
3、數(shù)據(jù)結(jié)構(gòu)區(qū)別:
數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,有各種結(jié)構(gòu)以適合業(yè)務(wù)處理系統(tǒng)的需要,而數(shù)據(jù)倉庫中的數(shù)據(jù)結(jié)構(gòu)則相對簡單;
4、訪問頻率不同:
數(shù)據(jù)庫中數(shù)據(jù)訪問頻率較高,但訪問量較少,而數(shù)據(jù)倉庫的訪問頻率低但訪問量卻很高;
5、目標(biāo)人群區(qū)別:
數(shù)據(jù)庫中數(shù)據(jù)的目標(biāo)是面向業(yè)務(wù)處理人員的,為業(yè)務(wù)處理人員提供信息處理的支持,而數(shù)據(jù)倉庫則是面向高層管理人員的,為其提供決策支持;
數(shù)據(jù)庫主要分為關(guān)系數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫(NoSQL)。
1、關(guān)系數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫,存儲的格式可以直觀地反映實(shí)體間的關(guān)系。關(guān)系型數(shù)據(jù)庫和常見的表格比較相似,關(guān)系型數(shù)據(jù)庫中表與表之間是有很多復(fù)雜的關(guān)聯(lián)關(guān)系的。
常見的關(guān)系型數(shù)據(jù)庫有Mysql,SqlServer等。在輕量或者小型的應(yīng)用中,使用不同的關(guān)系型數(shù)據(jù)庫對系統(tǒng)的性能影響不大,但是在構(gòu)建大型應(yīng)用時,則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,選擇合適的關(guān)系型數(shù)據(jù)庫。
2、非關(guān)系型數(shù)據(jù)庫(NoSQL)
指分布式的、非關(guān)系型的、不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。NoSQL數(shù)據(jù)庫技術(shù)與CAP理論、一致性哈希算法有密切關(guān)系。NoSQL數(shù)據(jù)庫適合追求速度和可擴(kuò)展性、業(yè)務(wù)多變的應(yīng)用場景。
擴(kuò)展資料
關(guān)系數(shù)據(jù)庫分為兩類:一類是桌面數(shù)據(jù)庫,例如Access、FoxPro和dBase等;另一類是客戶/服務(wù)器數(shù)據(jù)庫,例如SQL Server、Oracle和Sybase等。桌面數(shù)據(jù)庫用于小型的、單機(jī)的應(yīng)用程序,它不需要網(wǎng)絡(luò)和服務(wù)器,實(shí)現(xiàn)起來比較方便,但它只提供數(shù)據(jù)的存取功能。
客戶/服務(wù)器數(shù)據(jù)庫主要適用于大型的、多用戶的數(shù)據(jù)庫管理系統(tǒng),應(yīng)用程序包括兩部分:一部分駐留在客戶機(jī)上,用于向用戶顯示信息及實(shí)現(xiàn)與用戶的交互;另一部分駐留在服務(wù)器中,主要用來實(shí)現(xiàn)對數(shù)據(jù)庫的操作和對數(shù)據(jù)的計算處理。
參考資料來源:百度百科-關(guān)系數(shù)據(jù)庫
參考資料來源:百度百科-數(shù)據(jù)庫
ASCII 就是字符串。
有效的ASCII碼輸入字符是0到9的十六進(jìn)制數(shù)代碼值30到39,和大寫字符A到F的十六進(jìn)制數(shù)代碼值41到46這些字母數(shù)字字符。
VB10 0011 0010(16#32);0011 0100(16#34);01000101(16#45)對照ASCII碼表可知,32對應(yīng)2,34對應(yīng)4,45對應(yīng)E由于VB20開始需要占3個字節(jié),所以每個字節(jié)的一半得到相應(yīng)的數(shù)值。
目前NoSQL數(shù)據(jù)庫仍然沒有一個統(tǒng)一的標(biāo)準(zhǔn),它現(xiàn)在有四種大的分類:
(1)鍵值對存儲(key-value):代表軟件Redis,它的優(yōu)點(diǎn)能夠進(jìn)行數(shù)據(jù)的快速查詢,而缺點(diǎn)是需要存儲數(shù)據(jù)之間的關(guān)系。
(2)列存儲:代表軟件Hbase,它的優(yōu)點(diǎn)是對數(shù)據(jù)能快速查詢,數(shù)據(jù)存儲的擴(kuò)展性強(qiáng)。而缺點(diǎn)是數(shù)據(jù)庫的功能有局限性。
(3)文檔數(shù)據(jù)庫存儲:代表軟件MongoDB,它的優(yōu)點(diǎn)是對數(shù)據(jù)結(jié)構(gòu)要求不特別的嚴(yán)格。而缺點(diǎn)是查詢性的性能不好,同時缺少一種統(tǒng)一查詢語言。
No SQL DB是一種和關(guān)系型數(shù)據(jù)庫相對應(yīng)的對象數(shù)據(jù)庫。按照數(shù)據(jù)模型保存性質(zhì)將當(dāng)前NoSQL分為四種:
1.Key-value stores鍵值存儲, 保存keys+BLOBs
2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra.
3.Document-oriented面向文本, 文本是一種類似XML文檔,MongoDB 和 CouchDB
4.Graph-oriented 面向圖論. 如Neo4J.
關(guān)系型數(shù)據(jù)庫的弊端:
關(guān)系型數(shù)據(jù)庫的歷史已經(jīng)有30余年了,因此,在某些情況下,關(guān)系型數(shù)據(jù)庫的弱點(diǎn)就會暴露出來:
1. “對象-關(guān)系 阻抗不匹配”。關(guān)系模型和面向?qū)ο竽P驮诟拍钌洗嬖谔烊坏牟黄ヅ涞牡胤?,比如對象模型?dāng)中特有的“繼承”,“組合”,“聚合”,“依賴”的概念在關(guān)系模型當(dāng)中是不存在的。
2. “模式演進(jìn)”。即隨著時間的推移,需要對數(shù)據(jù)庫模式進(jìn)行調(diào)整以便適應(yīng)新的需求,然而,對數(shù)據(jù)庫模式的調(diào)整是的成本很高的動作,因此很多設(shè)計師在系統(tǒng)設(shè)計之初會設(shè)計一個兼容性很強(qiáng)的數(shù)據(jù)庫模式,以應(yīng)對將來可能出現(xiàn)的需求,然而在現(xiàn)在的web系統(tǒng)開發(fā)過程中,系統(tǒng)的變更更加頻繁,幾乎無法預(yù)先設(shè)計出一種“萬能”的數(shù)據(jù)庫模式以滿足所有的需求,因此 模式演進(jìn)的弊端就愈發(fā)凸顯。
3. 關(guān)系型數(shù)據(jù)庫處理 稀疏表時的性能非常差。
4. network-oriented data 很適合處理 人工智能、社交網(wǎng)絡(luò)中的一些需求。
所以,各種各樣的No SQL DB 出現(xiàn)了,這里只簡單介紹下Neo4J 的基本知識。
Neo 數(shù)據(jù)模型
Neo4J 是一個基于圖實(shí)現(xiàn)的No SQL DB, 其基本的數(shù)據(jù)類型有如下幾種:
Node, Relationship, Property.
Node 對應(yīng)于圖中的 節(jié)點(diǎn),Relationship 對應(yīng)圖中的邊,Node 和 Relationship 都可以擁有Property,
Property 的數(shù)據(jù)結(jié)構(gòu)為。
數(shù)據(jù)遍歷
Neo 提供了Traverser對數(shù)據(jù)中的數(shù)據(jù)進(jìn)行遍歷。
文章名稱:nosql四種,NoSQL是一種
網(wǎng)頁路徑:http://chinadenli.net/article20/phjsco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、小程序開發(fā)、網(wǎng)站收錄、App設(shè)計、做網(wǎng)站、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)