成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

碼農(nóng)寶典:您對MongoDB知多少?

譯文
數(shù)據(jù)庫 其他數(shù)據(jù)庫 MongoDB
MongoDB是一種領先的NoSQL解決方案,兌現(xiàn)了靈活模式數(shù)據(jù)存儲系統(tǒng)的承諾,為開發(fā)人員提供了一種更快速、更輕松、更自然的方式來構建應用程序。

[[410595]]

【51CTO.com快譯】NoSQL數(shù)據(jù)存儲讓數(shù)據(jù)管理方式更加靈活,徹底改變了軟件開發(fā)的狀況。MongoDB是知名的NoSQL解決方案之一,這是一種面向文檔的數(shù)據(jù)存儲系統(tǒng)。本文探討MongoDB是什么以及它如何滿足您的應用需求。

MongoDB:文檔數(shù)據(jù)存儲系統(tǒng)

關系數(shù)據(jù)庫將信息存儲在嚴格監(jiān)管的表和列中。MongoDB是一種文檔存儲系統(tǒng),將信息存儲在集合和文檔中。這里的主要區(qū)別在于集合和文檔是非結構化的,有時稱為無模式。這意味著MongoDB實例(集合和文檔)的結構不是預定義的,可靈活適應放入其中的任何數(shù)據(jù)。

文檔是一個鍵值集,其行為與JavaScript等代碼中的對象非常相似:它的結構根據(jù)放入其中的數(shù)據(jù)而變化。這使得針對MongoDB等數(shù)據(jù)存儲系統(tǒng)進行編程比針對關系數(shù)據(jù)存儲系統(tǒng)進行編程來得更容易、更靈活。簡而言之,應用程序代碼和文檔數(shù)據(jù)存儲系統(tǒng)之間的交互感覺更自然。

圖1直觀地顯示了MongoDB數(shù)據(jù)庫、集合和文檔的結構。

圖1. MongoDB文檔存儲系統(tǒng)

這種類型的數(shù)據(jù)建模繼承的靈活性意味著可以在更加按需使用的基礎上處理數(shù)據(jù),從而實現(xiàn)此處所述的性能優(yōu)勢。

想具體了解這種差異,不妨比較以下兩種實現(xiàn)相同任務(創(chuàng)建記錄,然后從應用程序添加字段)的方法,先用關系數(shù)據(jù)庫,之后用MongoDB。

關系數(shù)據(jù)庫中的步驟:

  1. create a database
  2. CREATE DATABASE menagerie; 
  3. create a table in the database:  
  4. USE menagerie; CREATE TABLE pet (name VARCHAR(20)); 
  5. connect to the database in app and issue insert:  
  6. INSERT INTO pet (nameVALUES ('Friar Tuck'); 
  7. add a column:  
  8. ALTER TABLE pet ADD type VARCHAR(20)); 
  9. update existing record:  
  10. UPDATE pet SET type = 'cat' WHERE name = 'Friar Tuck' 

現(xiàn)在用MongoDB執(zhí)行同樣的過程:

  1. connect to the database in app and issue insert:  
  2. use menagerie; db.pet.insertOne({name:"friar tuck"}); 
  3. # issue update:  
  4. db.pet.updateOne({ name:'friar tuck' }, { $set:{ type: 'cat' } } ); 

從前面您可以了解使用MongoDB的開發(fā)體驗有多流暢。

這種靈活性當然將避免模式臃腫的負擔加在了開發(fā)人員的身上。駕馭大型應用程序的文檔結構至關重要。

MongoDB中的ID字段

關系型數(shù)據(jù)庫中有主鍵這個概念,這通常是一個合成ID列(也就是說,與業(yè)務數(shù)據(jù)無關的生成值)。在MongoDB中,每個文檔都有一個用途相似的_id字段。如果開發(fā)人員在創(chuàng)建文檔時沒有提供 ID,MongoDB引擎將自動生成一個ID(作為 UUID)。

與主鍵一樣,_id 字段自動索引,而且必須是唯一的。

MongoDB中的索引

MongoDB中的索引其行為類似關系數(shù)據(jù)庫中的索引:它創(chuàng)建有關文檔字段的額外數(shù)據(jù),以加快依賴該字段的查詢。MongoDB使用 B 樹索引。

可以使用如下語法創(chuàng)建索引:

  1. db.pet.createIndex( { name: 1 } ) 

參數(shù)中的整數(shù)表示索引是升序(1) 還是降序(-1)。

MongoDB中嵌套文檔

MongoDB面向文檔結構的一個強大方面是文檔可以嵌套。比如說,您可以創(chuàng)建嵌套文檔,而不是創(chuàng)建另一個表來存儲寵物文檔的地址信息,結構如代碼片段1所示。

代碼片段1. 嵌套文檔示例

  1.   "_id""5cf0029caff5056591b0ce7d"
  2.   "name""Friar Tuck"
  3.   "address": { 
  4.     "street""Feline Lane"
  5.     "city""Big Sur"
  6.     "state""CA"
  7.     "zip""93920" 
  8.   }, 
  9.   "type""cat" 

MongoDB中的非規(guī)范化

MongoDB等文檔存儲系統(tǒng)對連接的支持有限,也沒有外來鍵的概念。兩者都是數(shù)據(jù)結構動態(tài)特性的結果。MongoDB中的數(shù)據(jù)建模傾向于非規(guī)范化,即復制文檔中的數(shù)據(jù),而不是將數(shù)據(jù)嚴格保存在表孤島中。這提高了查找速度,不過以增加數(shù)據(jù)一致性維護為代價。

非規(guī)范化不是必需的,在使用面向文檔的數(shù)據(jù)庫時更多地是一種傾向。這是由于處理復雜嵌套記錄的能力得到了提高,而不是SQL傾向于將數(shù)據(jù)規(guī)范化到特定的單值列中。

MongoDB查詢語言

MongoDB中的查詢語言面向JSON,就像文檔結構一樣。這有助于一種非常強大的表達式語法,甚至可以處理復雜的嵌套文檔。

比如說,您可以通過執(zhí)行db.pet.find({ "type" : "cat" })來查詢收錄所有貓咪的理論數(shù)據(jù)庫,或使用db.pet.find({ "type" : "cat" , "address.state": "CA" })來查詢加利福尼亞州的所有貓咪。請注意,查詢語言遍歷嵌套的地址文檔。

MongoDB更新語法

MongoDB的alter語法也使用類似JSON的格式,其中$set關鍵字表明將更改哪個字段、更改為什么值。set對象通過點表示法支持嵌套文檔,如代表片段2所示,可以在其中更改名為“Friar Tuck”的那只貓的郵政編碼。

代碼片段2. 更新嵌套文檔

  1. db.people.update
  2.   { 
  3.     "type""cat"
  4.     "name""Friar Tuck" 
  5.   }, 
  6.   { 
  7.      $set: { 
  8.        "address.zip""86004" 
  9.      } 
  10.   } 

可以從代碼片段2中看到,更新語法與SQL對應語法一樣強大,實際上更強大。

MongoDB云和部署選項

MongoDB為可擴展性和分布式部署而設計。它完全能夠處理大規(guī)模工作負載。

MongoDB公司在MongoDB Atlas中提供了多云數(shù)據(jù)庫集群解決方案。MongoDB Atlas就像一個托管數(shù)據(jù)庫,可以橫跨不同的云平臺,包括監(jiān)控和容錯等企業(yè)功能。

不難看出MongoDB的重要性,因此AWS的Amazon DocumentDB產(chǎn)品將MongoDB兼容性作為主要賣點。微軟的Azure Cosmos DB遵循類似的模式,支持MongoDB API。

MongoDB中的高可用性

MongoDB支持副本集以實現(xiàn)高可用性。核心思想是將數(shù)據(jù)一次寫入主實例,然后復制到二級存儲以便讀取。在此處(https://docs.mongodb.com/manual/replication/)可了解有關MongoDB中復制的更多信息。

結論是,MongoDB是一種領先的 NoSQL 解決方案,兌現(xiàn)了靈活模式數(shù)據(jù)存儲系統(tǒng)的承諾。可使用面向幾乎各種編程語言的高級驅動程序,您也可以利用眾多部署選項。

原文標題:What is MongoDB? A quick guide for developers,作者:Matthew Tyson

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:華軒 來源: 51CTO
相關推薦

2022-01-19 17:19:14

區(qū)塊鏈攻擊加密算法

2020-05-22 07:00:00

合成完整備份備份數(shù)據(jù)

2020-05-08 07:00:00

Linux色碼文件類型

2012-02-13 22:50:59

集群高可用

2024-08-06 10:07:15

2022-11-30 14:57:39

產(chǎn)業(yè)互聯(lián)網(wǎng)

2010-08-16 09:15:57

2021-12-04 11:17:32

Javascript繼承編程

2013-12-23 14:00:31

Windows 8.2Windows 8.1

2025-04-14 08:50:00

Google ADK人工智能AI

2017-07-14 10:51:37

性能優(yōu)化SQL性能分析

2013-11-14 13:58:06

硅谷碼農(nóng)

2009-05-13 17:31:06

DBAOracleIT

2020-09-08 10:56:55

Java多線程存儲器

2018-08-31 10:53:25

MySQL存儲引擎

2021-07-22 07:20:24

JS 遍歷方法前端

2012-09-10 16:38:40

Windows Ser

2013-08-02 09:42:37

BYODBYOC云存儲

2009-03-06 19:19:55

2021-12-09 06:41:56

Python協(xié)程多并發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩成人一区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 97精品超碰一区二区三区 | 日本成人中文字幕在线观看 | 五月天国产视频 | 韩日在线视频 | 日韩一区二区三区视频在线播放 | 久久精品久久久 | 免费高潮视频95在线观看网站 | 一级黄色录像毛片 | 国产精品久久久久一区二区三区 | 午夜久草 | 亚洲精品一区久久久久久 | 亚洲一区视频在线 | 国产日产精品一区二区三区四区 | 成人精品一区二区三区 | 九九精品在线 | 久久综合888| 欧美一区二区三区在线观看 | 成人免费淫片aa视频免费 | 99精品99久久久久久宅男 | 日韩精品一区二区三区中文字幕 | 国产精品亚洲综合 | 欧美jizzhd精品欧美巨大免费 | 91xh98hx 在线 国产 | 一级国产精品一级国产精品片 | 欧美在线视频网 | 国产激情视频 | 在线观看电影av | 懂色中文一区二区在线播放 | 人人干人人爽 | 久久久久久久一区二区三区 | 99草免费视频 | 亚洲一区二区在线播放 | 91精品久久久久久久久中文字幕 | 亚洲综合无码一区二区 | 日韩成人 | 亚洲首页 | 国产乱码精品一品二品 | 一区二区三区在线看 | 久久99视频这里只有精品 |