亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是NoSQL,它是如何工作的,它提供了什么好處?

什么是NoSQL,它是如何工作的,它提供了什么好處?

至尊寶的傳說 2019-09-18 14:51:54
我一直在聽NoSQL的事情,它最終可能成為SQL DB存儲方法的替代品,因為數據庫交互通常是網絡速度的瓶頸。所以我只有幾個問題:究竟是什么?它是如何工作的?為什么它比使用SQL數據庫更好?它有多好?這項技術是否太新,無法開始實施,還是值得研究一下?
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

  1. 究竟是什么?

    一方面,一個特定的系統,但它也成為不遵循關系數據庫模型的各種新數據存儲后端的通用詞。

  2. 它是如何工作的?

    標有通用名稱的每個系統的工作方式不同,但基本思想是通過使用不支持通用RDBMS的所有功能的DB模型來提供更好的可伸縮性和性能,但仍然有足夠的功能。在某種程度上,它就像MySQL,它曾一度缺乏對事務的支持,但正因為如此,它成功地超越了其他數據庫系統。如果您可以以不需要交易的方式編寫應用程序,那就太棒了。

  3. 為什么它比使用SQL數據庫更好?它有多好?

    如果您的站點需要如此大規模地擴展以使最好的RDBMS運行在您能夠承受的最佳硬件上并且盡可能地優化而無法跟上負載,那就更好了。它的好壞取決于具體的用例(大量的更新活動與大量的連接相結合對于“傳統的”RDBMS來說非常困難) - 在極端情況下很可能是1000的因素。

  4. 這項技術是否太新,無法開始實施,還是值得研究一下?

    主要取決于你想要實現的目標。它當然足夠成熟,可以使用。但很少有應用程序確實需要大規模擴展。對于大多數人來說,傳統的RDBMS就足夠了。然而,隨著互聯網的使用越來越普遍,很可能應用程序會變得更加普遍(盡管可能不是主導)。



查看完整回答
反對 回復 2019-09-18
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

NoSQL沒有這樣的東西!

NoSQL是一個流行語。

幾十年來,當人們談論數據庫時,他們意味著關系數據庫。當人們談論關系數據庫時,他們意味著你用Edgar F. Codd的結構化查詢語言控制的那些數據庫。以其他方式存儲數據?瘋狂!其他任何東西都只是flatfiles。

但在過去的幾年里,人們開始質疑這個教條。人們想知道具有行和列的表是否真的是表示數據的唯一方式。人們開始思考和編碼,并提出了許多關于如何組織數據的新概念。他們開始創建新的數據庫系統,專為這些處理數據的新方法而設計。

所有這些數據庫的哲學都不同。但是所有這些數據庫有一個共同點,就是結構化查詢語言不再適合使用它們。因此,每個數據庫都用自己的查詢語言替換SQL。因此,NoSQL這個術語誕生了,作為所有數據庫技術的標簽,它違背了傳統的關系數據庫模型。

那么NoSQL數據庫有什么共同之處呢?

實際上,并不多。

你經常聽到這樣的短語:

  • NoSQL是可擴展的!

  • NoSQL適用于BigData!

  • NoSQL違反了ACID!

  • NoSQL是一個美化的鍵/值存儲!

真的嗎?好吧,其中一些語句可能適用于一些通常稱為NoSQL的數據庫,但每一個數據庫對于至少一個其他數據庫也是假的。實際上,NoSQL數據庫唯一的共同點就是它們是不使用SQL的數據庫。而已。唯一定義它們的是使它們彼此分開的原因。

那么是什么讓NoSQL數據庫與眾不同?

因此,我們明確指出,所有通常稱為NoSQL的數據庫都不同,無法將它們一起評估。需要對它們中的每一個進行單獨評估,以確定它們是否適合解決特定問題。但是我們從哪里開始呢?值得慶幸的是,NoSQL數據庫可以分為特定類別,適用于不同的用例:

文檔導向

示例:MongoDB,CouchDB

優勢:異構數據,面向工作對象,敏捷開發

它們的優點是它們不需要一致的數據結構。當您的需求和數據庫布局不斷變化,或者處理屬于一起但看起來非常不同的數據集時,它們非常有用。當你有很多表有兩列名為“key”和“value”的表時,這些可能值得研究。

圖數據庫

示例:Neo4j,GiraffeDB。

優勢:數據挖掘

雖然大多數NoSQL數據庫放棄了管理數據關系的概念,但這些數據庫比那些所謂的關系數據庫更能接受它。

他們的重點是通過與其他數據的關系來定義數據。如果你有很多帶有主鍵的表,這些表是另外兩個表的主鍵(也許還有一些描述它們之間關系的數據),那么這些表可能適合你。

鍵值商店

示例:Redis,Cassandra,MemcacheDB

優點:通過已知密鑰快速查找值

它們非常簡單,但這使它們快速且易于使用。如果您不需要存儲過程,約束,觸發器和所有這些高級數據庫功能,并且只是想快速存儲和檢索數據,那么這些都適合您。

不幸的是,他們認為你確切地知道你在尋找什么。您需要User157641的個人資料嗎?沒問題,只需幾微秒。但是當你想要年齡在16到24歲之間的所有用戶的名字時,有什么“華夫餅”作為他們最喜歡的食物并且在過去的24小時內登錄了什么?倒霉。當您沒有明確且唯一的特定結果密鑰時,您無法輕松地將其從KV商店中取出。

SQL過時了嗎?

一些NoSQL支持者聲稱他們最喜歡的NoSQL數據庫是新的做事方式,SQL已經成為過去。

他們是對的嗎?

不,當然不是。雖然SQL不適合存在問題,但它仍然有其優勢。許多數據模型最好表示為相互引用的表的集合。特別是因為大多數數據庫程序員都經過數十年的訓練才能以關系的方式思考數據,并且試圖將這種思維方式轉變為一種新技術,而這項技術并非為此而設。

NoSQL數據庫不是SQL的替代品 - 它們是替代品。

圍繞不同NoSQL數據庫的大多數軟件生態系統還不夠成熟。雖然有了進步,但您仍然沒有像流行的SQL數據庫那樣成熟和強大的補充工具。

此外,SQL還有更多的專業知識。幾代計算機科學家將他們幾十年的職業生涯投入到關注數據庫的研究中,它表明:關于SQL數據庫和關系數據建模的文獻,無論是實踐還是理論,都可以填滿多個圖書館。如何為您的數據構建關系數據庫是一個如此深入研究的主題,很難找到一個沒有普遍接受的書本最佳實踐的極端情況。

另一方面,大多數NoSQL數據庫仍然處于起步階段。我們仍然在找出使用它們的最佳方法。


查看完整回答
反對 回復 2019-09-18
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

既然有人說我以前的帖子是偏離主題的,我會盡力補償:-) NoSQL不是,而且從來沒有打算成為更主流的SQL數據庫的替代品,但是為了獲得正確的觀點。


在的非常心臟的NoSQL理念撒謊說,可能是商業性和便攜性的原因,SQL引擎往往忽視了UNIX操作系統及其衍生物的巨大力量的考慮。


使用基于文件系統的數據庫,您可以立即利用底層操作系統不斷增強的功能和強大功能,這些操作系統已根據摩爾定律多年來穩步增長。使用這種方法,許多操作系統命令也自動成為“數據庫操作員”(想想“ls”“sort”,“find”和其他無數的UNIX shell實用程序)。


考慮到這一點,以及一點創造力,您確實可以設計一個基于文件系統的數據庫,它能夠克服許多常見SQL引擎的限制,至少對于特定的使用模式,這是NoSQL的理念背后的全部要點,我看到它的方式。


我運行了數百個網站,他們都或多或少地使用NoSQL。實際上,它們并不存儲大量數據,但即使其中一些數據存在,我也可能會想到NoSQL和文件系統的創造性使用以克服任何瓶頸。傳統的SQL“jails”可能會更加困難。我敦促你谷歌為“unix”,“manis”和“shaffer”來理解我的意思。


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 918 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號