NoSQL最初參照非SQL或非關(guān)系是,提供了一種用于存儲(chǔ)和檢索數(shù)據(jù)的機(jī)構(gòu)的數(shù)據(jù)庫(kù)中。此數(shù)據(jù)使用關(guān)系數(shù)據(jù)庫(kù)中使用的表格關(guān)系以外的方式建模。這樣的數(shù)據(jù)庫(kù)在20世紀(jì)60年代后期出現(xiàn),但直到二十一世紀(jì)初的人氣激增才獲得NoSQL綽號(hào)。NoSQL數(shù)據(jù)庫(kù)用于實(shí)時(shí)Web應(yīng)用程序和大數(shù)據(jù),并且它們的使用隨著時(shí)間的推移而增加。NoSQL系統(tǒng)有時(shí)也稱為SQL,不僅強(qiáng)調(diào)它們可能支持類似SQL的查詢語(yǔ)言這一事實(shí)??。
NoSQL數(shù)據(jù)庫(kù)包括簡(jiǎn)單的設(shè)計(jì),更簡(jiǎn)單的水平擴(kuò)展到機(jī)器集群和更好的可用性控制。NoSQL數(shù)據(jù)庫(kù)使用的數(shù)據(jù)結(jié)構(gòu)與關(guān)系數(shù)據(jù)庫(kù)中默認(rèn)使用的數(shù)據(jù)結(jié)構(gòu)不同,這使得NoSQL中的某些操作更快。給定NoSQL數(shù)據(jù)庫(kù)的適用性取決于它應(yīng)該解決的問(wèn)題。NoSQL數(shù)據(jù)庫(kù)使用的數(shù)據(jù)結(jié)構(gòu)有時(shí)也被視為比關(guān)系數(shù)據(jù)庫(kù)表更靈活。
許多NoSQL存儲(chǔ)都會(huì)犧牲一致性,支持可用性,速度和分區(qū)容錯(cuò)。更多采用NoSQL存儲(chǔ)的障礙包括使用低級(jí)查詢語(yǔ)言,缺乏標(biāo)準(zhǔn)化接口以及對(duì)現(xiàn)有關(guān)系數(shù)據(jù)庫(kù)的大量先前投資。大多數(shù)NoSQL商店缺乏真正的ACID(原子性,一致性,隔離性,耐久性)交易,但一些數(shù)據(jù)庫(kù),如MarkLogic,Aerospike,F(xiàn)airCom c-treeACE,Google Spanner(雖然技術(shù)上是一個(gè)NewSQL數(shù)據(jù)庫(kù)),Symas LMDB和OrientDB已經(jīng)制作了它們他們的設(shè)計(jì)的核心。
大多數(shù)NoSQL數(shù)據(jù)庫(kù)提供了最終一致性的概念,其中數(shù)據(jù)庫(kù)更改傳播到所有節(jié)點(diǎn),因此對(duì)數(shù)據(jù)的查詢可能不會(huì)立即返回更新的數(shù)據(jù),或者可能導(dǎo)致讀取不準(zhǔn)確的數(shù)據(jù),這是一個(gè)被稱為過(guò)時(shí)讀取的問(wèn)題。此外,一些NoSQL系統(tǒng)可能會(huì)出現(xiàn)丟失寫入和其他形式的數(shù)據(jù)丟失。一些NoSQL系統(tǒng)提供諸如預(yù)寫日志記錄之類的概念以避免數(shù)據(jù)丟失。對(duì)于跨多個(gè)數(shù)據(jù)庫(kù)的分布式事務(wù)處理,數(shù)據(jù)一致性是一個(gè)更大的挑戰(zhàn)。這對(duì)NoSQL和關(guān)系數(shù)據(jù)庫(kù)都很困難。即使是當(dāng)前的關(guān)系數(shù)據(jù)庫(kù)也不允許引用完整性約束來(lái)跨越數(shù)據(jù)庫(kù)。很少有系統(tǒng)維護(hù)X / Open XA標(biāo)準(zhǔn)和ACID事務(wù)以進(jìn)行分布式事務(wù)處理。








暫無(wú)數(shù)據(jù)