NoSQL:是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動(dòng),NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲。現(xiàn)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲方面要求具 備龐大的水平擴(kuò) 展性,而NoSQL致力于改變這一現(xiàn)狀。
為叢臺等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及叢臺網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、叢臺網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
但是NoSQL數(shù)據(jù)庫之間的不同,遠(yuǎn)超過兩 SQL數(shù)據(jù)庫之間的差別。這意味著軟件架構(gòu)師更應(yīng)該在項(xiàng)目開始時(shí)就選擇好一個(gè)適合的 NoSQL數(shù)據(jù)庫。
目前大概有如下幾種
Cassandra、Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j 和 HBase
常見的非關(guān)系型數(shù)據(jù)庫有:1、mongodb;2、cassandra;3、redis;4、hbase;5、neo4j。其中mongodb是非常著名的NoSQL數(shù)據(jù)庫,它是一個(gè)面向文檔的開源數(shù)據(jù)庫。
常見的幾種非關(guān)系型數(shù)據(jù)庫:
1、MongoDB
MongoDB是最著名的NoSQL數(shù)據(jù)庫。它是一個(gè)面向文檔的開源數(shù)據(jù)庫。MongoDB是一個(gè)可伸縮和可訪問的數(shù)據(jù)庫。它在c++中。MongoDB同樣可以用作文件系統(tǒng)。在MongoDB中,JavaScript可以作為查詢語言使用。通過使用sharding MongoDB水平伸縮。它在流行的JavaScript框架中非常有用。
人們真的很享受分片、高級文本搜索、gridFS和map-reduce功能。驚人的性能和新特性使這個(gè)NoSQL數(shù)據(jù)庫在我們的列表中名列第一。
特點(diǎn):提供高性能;自動(dòng)分片;運(yùn)行在多個(gè)服務(wù)器上;支持主從復(fù)制;數(shù)據(jù)以JSON樣式文檔的形式存儲;索引文檔中的任何字段;由于數(shù)據(jù)被放置在碎片中,所以它具有自動(dòng)負(fù)載平衡配置;支持正則表達(dá)式搜索;在失敗的情況下易于管理。
優(yōu)點(diǎn):易于安裝MongoDB;MongoDB Inc.為客戶提供專業(yè)支持;支持臨時(shí)查詢;高速數(shù)據(jù)庫;無模式數(shù)據(jù)庫;橫向擴(kuò)展數(shù)據(jù)庫;性能非常高。
缺點(diǎn):不支持連接;數(shù)據(jù)量大;嵌套文檔是有限的;增加不必要的內(nèi)存使用。
2、Cassandra
Cassandra是Facebook為收件箱搜索開發(fā)的。Cassandra是一個(gè)用于處理大量結(jié)構(gòu)化數(shù)據(jù)的分布式數(shù)據(jù)存儲系統(tǒng)。通常,這些數(shù)據(jù)分布在許多普通服務(wù)器上。您還可以添加數(shù)據(jù)存儲容量,使您的服務(wù)保持在線,您可以輕松地完成這項(xiàng)任務(wù)。由于集群中的所有節(jié)點(diǎn)都是相同的,因此不需要處理復(fù)雜的配置。
Cassandra是用Java編寫的。Cassandra查詢語言(CQL)是查詢Cassandra數(shù)據(jù)庫的一種類似sql的語言。因此,Cassandra在最佳開源數(shù)據(jù)庫中排名第二。Facebook、Twitter、思科(Cisco)、Rackspace、eBay、Twitter、Netflix等一些最大的公司都在使用Cassandra。
特點(diǎn):線性可伸縮;;保持快速響應(yīng)時(shí)間;支持原子性、一致性、隔離性和耐久性(ACID)等屬性;使用Apache Hadoop支持MapReduce;分配數(shù)據(jù)的最大靈活性;高度可伸縮;點(diǎn)對點(diǎn)架構(gòu)。
優(yōu)點(diǎn):高度可伸縮;無單點(diǎn)故障;Multi-DC復(fù)制;與其他基于JVM的應(yīng)用程序緊密集成;更適合多數(shù)據(jù)中心部署、冗余、故障轉(zhuǎn)移和災(zāi)難恢復(fù)。
缺點(diǎn):對聚合的有限支持;不可預(yù)知的性能;不支持特別查詢。
3、Redis
Redis是一個(gè)鍵值存儲。此外,它是最著名的鍵值存儲。Redis支持一些c++、PHP、Ruby、Python、Perl、Scala等等。Redis是用C語言編寫的。此外,它是根據(jù)BSD授權(quán)的。
特點(diǎn):自動(dòng)故障轉(zhuǎn)移;將其數(shù)據(jù)庫完全保存在內(nèi)存中;事務(wù);Lua腳本;將數(shù)據(jù)復(fù)制到任意數(shù)量的從屬服務(wù)器;鑰匙的壽命有限;LRU驅(qū)逐鑰匙;支持發(fā)布/訂閱。
優(yōu)點(diǎn):支持多種數(shù)據(jù)類型;很容易安裝;非??欤棵雸?zhí)行約11萬組,每秒執(zhí)行約81000次);操作都是原子的;多用途工具(在許多用例中使用)。
缺點(diǎn):不支持連接;存儲過程所需的Lua知識;數(shù)據(jù)集必須很好地適應(yīng)內(nèi)存。
4、HBase
HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫,該技術(shù)來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。
HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫。另一個(gè)不同的是HBase基于列的而不是基于行的模式。
5、neo4j
Neo4j被稱為原生圖數(shù)據(jù)庫,因?yàn)樗行У貙?shí)現(xiàn)了屬性圖模型,一直到存儲層。這意味著數(shù)據(jù)完全按照白板的方式存儲,數(shù)據(jù)庫使用指針導(dǎo)航和遍歷圖。Neo4j有數(shù)據(jù)庫的社區(qū)版和企業(yè)版。企業(yè)版包括Community Edition必須提供的所有功能,以及額外的企業(yè)需求,如備份、集群和故障轉(zhuǎn)移功能。
特點(diǎn):它支持唯一的約束;Neo4j支持完整的ACID(原子性、一致性、隔離性和持久性)規(guī)則;Java API: Cypher API和本機(jī)Java API;使用Apache Lucence索引;簡單查詢語言Neo4j CQL;包含用于執(zhí)行CQL命令的UI: Neo4j Data Browser。
優(yōu)點(diǎn):容易檢索其相鄰節(jié)點(diǎn)或關(guān)系細(xì)節(jié),無需連接或索引;易于學(xué)習(xí)Neo4j CQL查詢語言命令;不需要復(fù)雜的連接來檢索數(shù)據(jù);非常容易地表示半結(jié)構(gòu)化數(shù)據(jù);大型企業(yè)實(shí)時(shí)應(yīng)用程序的高可用性;簡化的調(diào)優(yōu)。
缺點(diǎn):不支持分片
應(yīng)該說,現(xiàn)在是國產(chǎn)分布式數(shù)據(jù)庫發(fā)展的利好時(shí)期。在討論發(fā)展前景前,首先要先看看分布式數(shù)據(jù)庫的發(fā)展方向。
大家把傳統(tǒng)關(guān)系型數(shù)據(jù)庫稱作oldSQL,給人感覺要被淘汰似的。但其實(shí)數(shù)據(jù)量不是很大或者事務(wù)處理的場景夏,關(guān)系型數(shù)據(jù)庫的還是占優(yōu)的。
關(guān)系型數(shù)據(jù)庫的主要問題在于:
性能瓶頸,
單一模型(關(guān)系模型),只適合OLTP
應(yīng)對業(yè)務(wù)的靈活性不夠,
彈性擴(kuò)充能力不夠,
兩地三中心和雙活等問題上不足。
隨著互聯(lián)網(wǎng)和手機(jī)的飛速發(fā)展,無論從用戶規(guī)模、使用頻率、還是場景多樣性都使得這些問題浮出水面。其實(shí)Oracle在92年就開始嘗試轉(zhuǎn)向分布式,還當(dāng)時(shí)引起了業(yè)界的巨大爭論,最后失敗。更何況過去CPU、內(nèi)存、存儲、帶寬的高成本導(dǎo)致分布式數(shù)據(jù)庫的性價(jià)比并不高,只能停留在學(xué)術(shù)階段,限制了分布式的發(fā)展。
新分布式數(shù)據(jù)庫首先是要避免和傳統(tǒng)關(guān)系型數(shù)據(jù)庫的競爭,這是明智的選擇,能夠輕裝上陣。因此從幾個(gè)方面入手,應(yīng)對海量數(shù)據(jù)處理、分析、緩存、流式處理、開發(fā)模式等等。相對應(yīng)列式,KV,Document等多種存儲數(shù)據(jù)結(jié)構(gòu)。
所有這些都被稱為NoSQL數(shù)據(jù)庫,放棄ACID和事務(wù)能力還換取性能。然而,NoSQL又收到了大量的批評反對意見,主要是說把數(shù)據(jù)庫應(yīng)該處理的問題交還給了開發(fā)是種發(fā)展的倒退。這些問題包括,索引、版本、SQL支持、事務(wù)支持等等。市場上超過90%的開發(fā)員都需要SQL,而且SQL也是非常有效和成熟。于是大家無論底層是什么存儲結(jié)構(gòu)又開始支持SQL,形成了NewSQL。
這里插一句題外話,在硅谷已經(jīng)不再用SQL、NoSQL、NewSQL來劃分?jǐn)?shù)據(jù)庫了。理由很簡單,SQL是一種語言,從來沒有SQL數(shù)據(jù)庫的說法,自然也不應(yīng)該有NoSQL數(shù)據(jù)庫的說法。NewSQL數(shù)據(jù)庫就更不合理,用的SQL并非什么“New“的新東西。所以專業(yè)上用關(guān)系型和非關(guān)系型數(shù)據(jù)庫來劃分,分布式數(shù)據(jù)庫主要都是非關(guān)系型數(shù)據(jù)庫。
回過頭來看國內(nèi)分布式數(shù)據(jù)庫市場需求,中小企業(yè)不滿足Mysql的性能,分庫分表又很難搞,也不徹底;大型企業(yè)被Oracle等壟斷支付高額成本,而且又不解決實(shí)際碰到的瓶頸問題。因此,用戶都在尋找新的解決方案。小型用戶、云計(jì)算的用戶、大型企業(yè)都需要對應(yīng)的分布式數(shù)據(jù)庫產(chǎn)品。
再加上國產(chǎn)自主和去IOE浪潮,更加推動(dòng)了國產(chǎn)分布式數(shù)據(jù)庫的發(fā)展利好。值得注意的是,數(shù)據(jù)庫研發(fā)是個(gè)嚴(yán)肅的事情,沒法短平快。
一、數(shù)據(jù)
1、數(shù)據(jù)(data)是事實(shí)或觀察的結(jié)果,是對客觀事物的邏輯歸納,是用于表示客觀事物的未經(jīng)加工的原始素材。
2、數(shù)據(jù)可以是連續(xù)的值,比如聲音、圖像,稱為模擬數(shù)據(jù);也可以是離散的,如符號、文字,稱為數(shù)字?jǐn)?shù)據(jù)。
3、在計(jì)算機(jī)系統(tǒng)中,數(shù)據(jù)以二進(jìn)制信息單元0、1的形式表示。
二、數(shù)據(jù)庫
數(shù)據(jù)庫是存放數(shù)據(jù)的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數(shù)據(jù)。但是數(shù)據(jù)庫并不是隨意地將數(shù)據(jù)進(jìn)行存放,是有一定的規(guī)則的,否則查詢的效率會很低。當(dāng)今世界是一個(gè)充滿著數(shù)據(jù)的互聯(lián)網(wǎng)世界,充斥著大量的數(shù)據(jù)。即這個(gè)互聯(lián)網(wǎng)世界就是數(shù)據(jù)世界。數(shù)據(jù)的來源有很多,比如出行記錄、消費(fèi)記錄、瀏覽的網(wǎng)頁、發(fā)送的消息等等。除了文本類型的數(shù)據(jù),圖像、音樂、聲音都是數(shù)據(jù)。
三、數(shù)據(jù)庫管理系統(tǒng)
1、數(shù)據(jù)庫管理系統(tǒng)(Database Management System)是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進(jìn)行數(shù)據(jù)庫的維護(hù)工作。
2、它可以支持多個(gè)應(yīng)用程序和用戶用不同的方法在同時(shí)或不同時(shí)刻去建立,修改和詢問數(shù)據(jù)庫。大部分DBMS提供數(shù)據(jù)定義語言DDL(Data Definition Language)和數(shù)據(jù)操作語言DML(Data Manipulation Language),供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對數(shù)據(jù)的追加、刪除等操作。
四、數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)DBS(Data Base System,簡稱DBS)通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、實(shí)用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行。數(shù)據(jù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。數(shù)據(jù)庫管理員一般是由業(yè)務(wù)水平較高、資歷較深的人員擔(dān)任。
五、數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)四者之間的關(guān)系
1、首先數(shù)據(jù)庫系統(tǒng)(baiDBS)包括數(shù)據(jù)庫(DB)和數(shù)據(jù)庫管理系統(tǒng)(DBMS),數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫,數(shù)據(jù)庫包括數(shù)據(jù)。
2、數(shù)據(jù)庫是用來存放數(shù)據(jù)的倉庫。
3、數(shù)據(jù)庫管理系統(tǒng)是操縱和管理數(shù)據(jù)庫的系統(tǒng)。
擴(kuò)展資料:
數(shù)據(jù)庫的發(fā)展現(xiàn)狀
1、在數(shù)據(jù)庫的發(fā)展歷史上,數(shù)據(jù)庫先后經(jīng)歷了層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫等各個(gè)階段的發(fā)展,數(shù)據(jù)庫技術(shù)在各個(gè)方面的快速的發(fā)展。
2、特別是關(guān)系型數(shù)據(jù)庫已經(jīng)成為目前數(shù)據(jù)庫產(chǎn)品中最重要的一員,80年代以來, 幾乎所有的數(shù)據(jù)庫廠商新出的數(shù)據(jù)庫產(chǎn)品都支持關(guān)系型數(shù)據(jù)庫,即使一些非關(guān)系數(shù)據(jù)庫產(chǎn)品也幾乎都有支持關(guān)系數(shù)據(jù)庫的接口。這主要是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫可以比較好的解決管理和存儲關(guān)系型數(shù)據(jù)的問題。
3、隨著云計(jì)算的發(fā)展和大數(shù)據(jù)時(shí)代的到來,關(guān)系型數(shù)據(jù)庫越來越無法滿足需要,這主要是由于越來越多的半關(guān)系型和非關(guān)系型數(shù)據(jù)需要用數(shù)據(jù)庫進(jìn)行存儲管理。
4、以此同時(shí),分布式技術(shù)等新技術(shù)的出現(xiàn)也對數(shù)據(jù)庫的技術(shù)提出了新的要求,于是越來越多的非關(guān)系型數(shù)據(jù)庫就開始出現(xiàn),這類數(shù)據(jù)庫與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)有了很大的不同, 它們更強(qiáng)調(diào)數(shù)據(jù)庫數(shù)據(jù)的高并發(fā)讀寫和存儲大數(shù)據(jù),這類數(shù)據(jù)庫一般被稱為NoSQL(Not only SQL)數(shù)據(jù)庫。 而傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在一些傳統(tǒng)領(lǐng)域依然保持了強(qiáng)大的生命力。
NoSQL(NoSQL
=
Not
Only
SQL
),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲,相對于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。
隨著大數(shù)據(jù)的不斷發(fā)展,非關(guān)系型的數(shù)據(jù)庫現(xiàn)在成了一個(gè)極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展非常迅速?,F(xiàn)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲方面要有龐大的水平擴(kuò)展性,而NoSQL也正是致力于改變這一現(xiàn)狀。目前Google的
BigTable和Amazon
的Dynamo使用的就是NoSQL型數(shù)據(jù)庫,本文介紹了10種出色的NoSQL數(shù)據(jù)庫。
雖然NoSQL流行語火起來才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來越成熟——以至于原來很好的NoSQL數(shù)據(jù)存儲不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的NoSQL工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲庫。
給一個(gè)地址吧