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








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