No SQL DB是一種和關系型數據庫相對應的對象數據庫。按照數據模型保存性質將當前NoSQL分為四種:
創新互聯專業為企業提供安塞網站建設、安塞做網站、安塞網站設計、安塞網站制作等企業網站建設、網頁設計與制作、安塞企業網站模板建站服務,十余年安塞做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
1.Key-value stores鍵值存儲, 保存keys+BLOBs
2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra.
3.Document-oriented面向文本, 文本是一種類似XML文檔,MongoDB 和 CouchDB
4.Graph-oriented 面向圖論. 如Neo4J.
關系型數據庫的弊端:
關系型數據庫的歷史已經有30余年了,因此,在某些情況下,關系型數據庫的弱點就會暴露出來:
1. “對象-關系 阻抗不匹配”。關系模型和面向對象模型在概念上存在天然的不匹配的地方,比如對象模型當中特有的“繼承”,“組合”,“聚合”,“依賴”的概念在關系模型當中是不存在的。
2. “模式演進”。即隨著時間的推移,需要對數據庫模式進行調整以便適應新的需求,然而,對數據庫模式的調整是的成本很高的動作,因此很多設計師在系統設計之初會設計一個兼容性很強的數據庫模式,以應對將來可能出現的需求,然而在現在的web系統開發過程中,系統的變更更加頻繁,幾乎無法預先設計出一種“萬能”的數據庫模式以滿足所有的需求,因此 模式演進的弊端就愈發凸顯。
3. 關系型數據庫處理 稀疏表時的性能非常差。
4. network-oriented data 很適合處理 人工智能、社交網絡中的一些需求。
所以,各種各樣的No SQL DB 出現了,這里只簡單介紹下Neo4J 的基本知識。
Neo 數據模型
Neo4J 是一個基于圖實現的No SQL DB, 其基本的數據類型有如下幾種:
Node, Relationship, Property.
Node 對應于圖中的 節點,Relationship 對應圖中的邊,Node 和 Relationship 都可以擁有Property,
Property 的數據結構為。
數據遍歷
Neo 提供了Traverser對數據中的數據進行遍歷。
像MongoDB, Cassandra, HBase, DynamoDB, 和
Riak這些NoSQL缺乏傳統的原子事務機制,所謂原子事務機制是可以保證一系列寫操作要么全部完成,要么全部不會完成,不會發生只完成一系列中一兩個
寫操作;因為數據庫不提供這種事務機制支持,開發者需要自己編寫代碼來確保一系列寫操作的事務機制,比較復雜和測試。
這些NoSQL數據庫不提供事務機制原因在于其分布式特點,一系列寫操作中訪問的數據可能位于不同的分區服務器,這樣的事務就變成分布式事務,在分
布式事務中實現原子性需要彼此協調,而協調是耗費時間的,每臺機器在一個大事務過程中必須依次確認,這就需要一種協議確保一個事務中沒有任何一臺機器寫操
作失敗。
NoSQL,指的是非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的
SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數
據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。
從這一新興技術中選擇一款正確的NoSQL數據庫是非常具有挑戰性的。比一下網建議在選擇時考慮以下因素:
并發控制
并
發控制指的是當多個用戶同時更新運行時,用于保護數據庫完整性的各種技術。并發機制不正確可能導致臟讀、幻讀和不可重復讀等此類問題。并發控制的目的是保
證一個用戶的工作不會對另一個用戶的工作產生不合理的影響。在某些情況下,這些措施保證了當用戶和其他用戶一起操作時,所得的結果和她單獨操作時的結果是
一樣的。在另一些情況下,這表示用戶的工作按預定的方式受其他用戶的影響。
封鎖
就是事務T在對某個數據對象(例如表、記錄等)操作之前,先向系統發出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。
封鎖是一次只允許一個用戶讀取或修改的一種機制,是實現并發控制的一個非常重要的技術。
MVCC
Multi-Version Concurrency Control多版本并發控制,維持一個數據的多個版本使讀寫操作沒有沖突。MVCC優化了數據庫并發系統,使系統在有大量并發用戶時得到最高的性能,并且可以不用關閉服務器就直接進行熱備份。
ACID
指
數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個支持事務(Transaction)的數據庫系統,必需要具有這四種特性,否則在事務過程(Transaction
processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
None
一些系統不提供原子性。
鏡像
數據庫鏡像是DBMS根據DBA的要求,自動把整個數據庫或其中的關鍵數據復制到另一個磁盤上,每當主數據庫更新時,DBMS會自動把更新后的數據復制過去,即DBMS自動保證鏡像數據與主數據的一致性。
鏡像分為同步和異步。
數據存儲
指的是數據的物理特性怎樣被存儲在數據庫中。
磁盤 數據被存儲在硬盤驅動器里;
GFS或谷歌文件系統是一個由谷歌開發的專有的分布式文件系統;
Hadoop是Apache軟件框架,免費許可下支持數據密集型分布式應用程序;
RAM隨機存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat
Software開發。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事務控制能力都是一種極其重要和寶貴的功
能。事務控制能力使得我們能夠確保一組命令確實已經全部執行成功,或者確保當任何一個命令出現錯誤時所有命令的執行結果均被退回。
實現語言
實現語言會影響數據庫的發展速度。典型的NoSQL數據庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實現語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個特點對你的數據庫是最重要的:
持久性
可用性
一致性
分區容忍性
證書類型
下面這些許可證是一個不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數據庫最大的不同,是決定使用哪款數據庫的一個首要指標。
關鍵字:支持get、put和刪除操作
按列存儲:相對于傳統的按行存儲,數據集成容易多了
面向文件系統:存儲像是JSON或XML這樣的結構化文件,很容易就能從面向對象軟件中獲取數據。
1、在本地和服務器都安裝同樣的數據庫客戶端,如oracle常用SQLPlus、MySQL常用HeiDi sql或者navicat、mssql2005則常用SQL Server Management Studio;
2、在本地通過數據庫客戶端導出數據庫為sql文件;
3、將sql文件遠程傳遞到服務器上;
4、在服務器上用相同的數據庫客戶端將sql文件執行一遍即可將本地數據庫導入到服務器上。
思路如下:
1 數據庫要以某種格式保存到磁盤上
2 有利于對數據的保存,查詢以及修改的語法
3 要支持高級編程語言,結合應用程序的api接口
如何玩轉 NoSQL數據庫?作者:IT專家網
Weather公司CIO Bryson Koehler整理出了MongoDB,Riak和Cassandra等NoSQL數據庫的特性。他指出這其中最重要的特性是“NoSQL不會限制住你”。
Weather公司,致力于天氣報告和天氣預報業務,其并不缺乏數據,當然也不缺乏數據管理工具。但它為什么需要三種不同的NoSQL數據庫?
最近,我向Weather 公司的CIO Bryson Koehler提出了這個疑問,除了公司的CIO,Bryson Koehler還是其他很多業務單元的孵化者,包括Weather Channel,WeatherFX,Weather Underground,和Intellicast等。Weather公司每天獲取和處理著約20萬億字節數據,對外提供當前全球天氣狀況,并為航空公司,緊急服務,貨運商,公用事業,保險,以及在線天氣網站和天氣應用程序的用戶提供天氣預報服務。每天需求增加了數十億的天氣數據請求,并且預期響應時間要在10毫秒左右。
Riak是Weather 公司的后臺NoSQL數據庫,服務于公司的事務性存儲公用網絡(SUN)數據獲取平臺,它運行在多個亞馬遜網絡服務(AWS)的可用區域上,并以每小時15次的頻率捕獲超過20億氣象數據信息,。所以,Riak具有明確的處理規模,但該公司也使用Cassandra以及新近添加的MongoDB數據庫,為Weather.com 上IOS和Android移動應用程序服務。
Weather 公司使用了不同的產品,Koehler解釋說,因為“不同的工具有不同的優勢。
Cassandra,它服務于Weather 公司以及全球消費者使用的第三方天氣應用的API數據:“我們的數據分發平臺每秒處理數十萬的事務,我們發現Cassandra在用于全球分發數據上是一個很棒的解決方案,并且在[數據庫]讀取方面體現出很高的可用性 “。它本質上為全球各地消費者所使用的數據服務,包括Weather 公司和第三方的天氣應用程序。
MongoDB,它提供了Weather.com網站和移動應用程序的中間層緩存功能:“離開我們的核心API,我們還沒有全部Weather.com內容,所以MongoDB是容器和分發站,為Weather.com以及Android和iOS上的移動應用程序服務。Mongo有很多好處,這些好處基于其內建的JSON格式以及靈活性上。“
Riak,用于消費氣象數據和觀測,包括來自世界各地的圖片和視頻等:“我們喜愛Riak因其優秀的數據攝取能力,而且是以一種全球分布式的方式來實現。這對于從全球分布式平臺上獲取數據的入站式數據庫是一個真正可靠的選擇。
我曾聽說Datastax,Basho和Couchbase的高管貶低MongoDB的可擴展性,但MongoDB指向大規模部署,在Facebook對超過200萬臺移動設備上應用程序提供支持,在eHarmony公司,MongDB每天處理著數十億的潛在比賽預約。據Koehle所述,MongoDB為Weather.com和Weather.com移動應用程序處理著“每天十億交易”,“毫無疑問,你可以通過配置和部署Mongo來處理大批量的交易數據。”
盡管如此,Koehler承認,他將“很樂于看到MongoDB繼續使全球集群和多位置[功能]更加無縫化且易于使用?!?這些屬于全球性的分布式集群,復制和負載平衡是Cassandra和Riak眾所周知的功能。
從規模討論的角度來看,很少有公司達到Weather公司的經營規模。易于開發,架構靈活性和JSON數據處理使得MongoDB的成為世界上最流行的NoSQL數據庫。這就是為什么微軟和IBM都進行了MongoDB的模仿,如微軟的Azure DocumentDB和IBM的 Cloudant,而不是Cassandra和Riak。
Weather公司可以從三個NoSQL標準降低至兩個的過程中得到鞏固,Koehler說,但公司沒有準備好這么做。
“由于我們構造了由許多不同的數據解決方案組成的網狀結構,我們目前的環境已過于復雜,”他說?!拔覀兿Mo團隊一些自由的空間,讓我們可以了解所有選擇的利弊,但你將會看到一些整合?!?/p>
到了那個時候,遷移將不在是一件難事,因為“關于NoSQL數據庫最重要的事情是,你不會被困在其中,” Koehler說?!叭绻愕募軜嫼途幋a正確,從一個數據庫遷移到另一個并不難。隨著模式的自由以及數據轉存技術的發展,無論前者是一個key-value存儲或其他什么形式,轉儲數據都將十分容易?!?/p>
對特定產品進程自定義編碼的復雜的存儲過程已經一去不復返了,Koehler說,但關于“結構化和編碼正確”還有很多需要考慮的地方?這樣做是為了避免特殊供應商提供的工具和功能可能讓你身陷其中。他舉了亞馬遜網絡服務“(AWS)的消息服務為例。
“你不必讓服務在云中運行,”他解釋說?!澳憧梢灾徊渴鹱约旱腞abbitMQ的環境,而不是陷于其中,所以你可以將一個原先部署在AWS 上的應用程序轉而部署在谷歌計算云服務上。無論它是數據平臺,存儲環境,或云計算環境,都要小心別讓自己局限在一個僅由一個供應商提供的小范圍空間內“。
轉載
當前文章:如何實現nosql數據庫,nosql數據庫介紹
當前URL:http://vcdvsql.cn/article32/dsiiipc.html
成都網站建設公司_創新互聯,為您提供商城網站、搜索引擎優化、網站排名、微信小程序、企業網站制作、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯