九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MongoDB簡史

說到現(xiàn)代 Web 應(yīng)用程序開發(fā),不得不提到 MongoDB。如果你是一名全棧程序員,每天都會跟 MERN 打交道,其中 M 指的就是 MongoDB。MongoDB 開源社區(qū)版為大量的 Web 應(yīng)用程序提供支持。從 2007 年開始,MongoDB 走過了漫長的道路。它是 MongoDB 公司的主要產(chǎn)品,這家公司市值已經(jīng)超過 100 億美元。與很多產(chǎn)品一樣,在線廣告是推動 MongoDB 愿景和發(fā)展的關(guān)鍵催化劑。MongoDB 的故事很有趣,在本文中,我將帶你一起探索 MongoDB 的發(fā)展之旅。

1 開端:大型數(shù)據(jù)庫想法的萌芽

MongoDB 的故事開始于 2007 年。1995 年,Dwight Merriman 和 Kevin O'Connor 創(chuàng)辦了著名的在線廣告公司 DoubleClick。不久后,Kevin Ryan 也加入了這個團(tuán)隊(duì) (Dwight 和 Kevin 后來共同創(chuàng)辦了 5 家公司——Gilt、10gen、Panther Express、ShopWiki 和 Business Insider)。DoubleClick 很快就大獲成功,幾年之內(nèi),它的廣告流量達(dá)到了每秒 40 萬條。當(dāng)時的關(guān)系型數(shù)據(jù)庫技術(shù)還沒有預(yù)料到會有如此大規(guī)模的流量。配備如此規(guī)模的關(guān)系數(shù)據(jù)庫需要大量的資金和硬件資源。因此,Dwight(他是當(dāng)時的 CTO) 和他的團(tuán)隊(duì)開發(fā)了自定義數(shù)據(jù)庫實(shí)現(xiàn)來擴(kuò)展 DoubleClick,以應(yīng)對流量的激增。

2003 年,Eliot Horowitz 在大學(xué)畢業(yè)之后加入 DoubleClick 的研發(fā)部門,成為一名軟件工程師。兩年后,他離開了 DoubleClick,和 Dwight 一起創(chuàng)辦了 ShopWiki。他們都意識到,他們在一次又一次地解決同樣的水平伸縮性問題。因此,2007 年,Dwight、Eliot 和 Kevin Ryan 一起創(chuàng)辦了一家叫作 10gen 的新公司。10gen 專注于提供一個帶有自有應(yīng)用程序和數(shù)據(jù)庫棧的 PaaS 托管解決方案。10gen 很快引起了風(fēng)險(xiǎn)投資人 Albert Wenger(Union Square Ventures) 的注意,他向 10gen 投資了 150 萬美元。以下是 Albert Wenger 在 2008 年寫的有關(guān) 10gen 投資的文字:

今天,我們很高興地宣布,我們將為一支特立獨(dú)行的團(tuán)隊(duì)提供支持,也就是 10gen 的一班天才們。他們匯聚了構(gòu)建互聯(lián)網(wǎng)規(guī)模系統(tǒng)的經(jīng)驗(yàn),比如 DART、Panther Express CDN,廣泛參與了開源活動,包括 Apache 軟件基金會。他們正在為云計(jì)算構(gòu)建一個開源技術(shù)棧,包括一個應(yīng)用服務(wù)器和一個數(shù)據(jù)庫,它們都是基于現(xiàn)代硬件能力和構(gòu)建 Web 站點(diǎn)或服務(wù)的經(jīng)驗(yàn)從頭開始開發(fā)的。應(yīng)用服務(wù)器最初支持服務(wù)器端 JavaScript 和 Ruby(實(shí)驗(yàn)性的)。數(shù)據(jù)庫采用了一種有趣的設(shè)計(jì)來存儲對象,這種設(shè)計(jì)在快速隨機(jī)訪問和高效的集合掃描之間做出了平衡。

Albert 所說的“采用了有趣的設(shè)計(jì)的數(shù)據(jù)庫”實(shí)際上指的就是 MongoDB。從 2007 年到 2009 年,這個新數(shù)據(jù)庫迅速發(fā)展。Dwight 第一次提交的 MongoDB 代碼可以在這里看到。

https://github.com/mongodb/mongo/commit/e73188b5512c82290a4070af4afddac20d0b981e

MongoDB 的核心引擎是用 C++ 開發(fā)的。之所以把這個數(shù)據(jù)庫叫作 MongoDB,是因?yàn)樗麄兿胗盟鼇頌橐恍┑湫偷膽?yīng)用場景 (如內(nèi)容服務(wù)) 提供海量數(shù)據(jù)的存儲服務(wù)。最初,這個團(tuán)隊(duì)只有 4 名工程師 (包括 Dwight 和 Eliot),并只專注于 MongoDB 數(shù)據(jù)庫。他們的商業(yè)理念是通過開源免費(fèi)下載的方式來發(fā)布數(shù)據(jù)庫,并在這個基礎(chǔ)上提供商業(yè)支持和培訓(xùn)服務(wù)。

MongoDB 1.0 于 2009 年 2 月發(fā)布。最初的版本提供了一種具有文檔模型、索引和基本復(fù)制功能的查詢語言,還提供了實(shí)驗(yàn)版的分片功能,但生產(chǎn)版本的分片集群功能在一年后發(fā)布的 1.6 版本中才有。

以下是 Dwight 對于“Mongo 是否適用于高度可伸縮系統(tǒng)”的問題的回答:

在水平伸縮方面,可以使用自動分片功能來構(gòu)建大型的 MongoDB 集群。現(xiàn)在是 alpha 版,但如果你的項(xiàng)目才剛剛啟動,那么當(dāng)你需要它的時候,它可能已經(jīng)生產(chǎn)就緒了。

2 MongoDB 早期的設(shè)計(jì)哲學(xué)

在早期,MongoDB 的基本設(shè)計(jì)原則如下:

  • 快速和簡單的數(shù)據(jù)模型,實(shí)現(xiàn)更快的編程——支持 CRUD 的文檔模型。

  • 使用熟悉的編程語言和格式——JavaScript/JSON。

  • 無模式文檔——方便敏捷迭代開發(fā)。

  • 為了快速開發(fā)和更易于伸縮,只提供必要的功能,沒有連接和跨集合的事務(wù)。

  • 支持簡單的水平伸縮和持久性 / 可用性 (復(fù)制 / 分片)。

在 2011 年的一次“NoSQL 以及為什么我們要開發(fā) MongoDB”的 ZendCon 演講中,Dwight 詳細(xì)介紹了這些原則。大約在 42 分鐘的時候,還出現(xiàn)了一個有關(guān)復(fù)制和分片之間區(qū)別的討論。隨著代碼的成熟和 MongoDB 成為主流,這些原則當(dāng)中有很多都被明顯淡化了。最新的 MongoDB(從 4.2 開始)可以在一定程度上支持連接,甚至是支持分布式事務(wù)!

https://youtu.be/hOOQJpGu1kY?t=2408

3 什么是 MongoDB?

在詳細(xì)講述 MongoDB 的歷史和發(fā)展歷程之前,我們先簡單地了解一下 MongoDB!

MongoDB 是一個基于文檔的 NoSQL 數(shù)據(jù)庫。它可以在所有主流平臺上運(yùn)行 (Windows、Linux、Mac),并且可以免費(fèi)下載它的開源版本。MongoDB 將數(shù)據(jù)實(shí)體存儲在集合中,存儲的每一個數(shù)據(jù)塊都是 JSON 格式。例如,如果一個用戶提交了一個在線訂單,該訂單的全部細(xì)節(jié) (訂單號、訂單項(xiàng)、收獲地址等) 將保存在一個 JSON 文檔中,然后將其保存到“customer_order”集合中。

MongoDB 還附帶了一個控制臺客戶端,這是一個功能齊全的 JavaScript 環(huán)境,你可以用它添加、刪除、編輯或查詢數(shù)據(jù)庫中的文檔數(shù)據(jù)。

4 MongoDB 架構(gòu)

下面是 MongoDB 服務(wù)器主要組件的架構(gòu)視圖。

MongoDB 目前為 13 種編程語言提供了驅(qū)動程序,包括 Java、Node.JS、Python、PHP 和 Swift。存儲引擎 MMAPv1 從 4.2 版本開始就被移除了。加密存儲引擎只在商業(yè)版中提供。

MongoDB 的美妙之處在于它的開源免費(fèi)社區(qū)版為你提供了這些能力:

  • 一個簡單的單機(jī)實(shí)例就可以滿足大多數(shù)小型應(yīng)用程序的需求。

  • 一個多機(jī)實(shí)例可以為大多數(shù)商業(yè)應(yīng)用程序提供持久性 / 高可用性。

  • 一個具有水平伸縮能力的大型集群 (分片集群) 可以處理非常大的數(shù)據(jù)集和大量的查詢。MongoDB 提供了自動化基礎(chǔ)設(shè)施,用于實(shí)現(xiàn)分布式的數(shù)據(jù)分布和處理。

下面的這些圖表演示了各種運(yùn)行 MongoDB 實(shí)例的方式。

5 單服務(wù)器 / 容錯設(shè)置

對于小型應(yīng)用程序,單臺服務(wù)器就足以滿足頻繁的數(shù)據(jù)備份需求了。如果需要容錯,可以使用副本集。在容錯配置中,通常有 3 個或更多的 MongoDB 實(shí)例。這些實(shí)例當(dāng)中只有一個作為主實(shí)例,如果它發(fā)生故障,其他兩個輔助實(shí)例中的一個將成為主實(shí)例。這些實(shí)例中的數(shù)據(jù)都是一樣的。

6 具有水平伸縮能力的分片集群

對于同時要求具備水平伸縮能力和容錯能力的大型數(shù)據(jù)庫,需要使用 MongoDB 分片集群。從下圖可以看出,一個容錯分片集群推薦的最小機(jī)器數(shù)量是 14 臺!每一個容錯副本集只處理數(shù)據(jù)的一個子集,數(shù)據(jù)分區(qū)是由 MongoDB 引擎自動完成的。

在下載最新版本的 MongoDB(4.4) 并解壓縮之后,你會發(fā)現(xiàn)它只包含以下三個主要文件:

  • mongo——MongoDB Shell,使用基于 JavaScript 的命令與服務(wù)器發(fā)生交互。

  • mongod——運(yùn)行 MongoDB 的主文件,可以作為單個數(shù)據(jù)庫實(shí)例、分片集群的成員或分片集群的配置服務(wù)器運(yùn)行。

  • mongos——一個路由器應(yīng)用程序,用在具有水平伸縮能力的數(shù)據(jù)庫服務(wù)器集群中。

在 Mac 上,這 3 個可執(zhí)行文件的總大小約為 150MB。對于任意類型的 MongoDB 部署,都只需要這幾個組件!在一個軟件膨脹的世界里,這是一種很受歡迎的變革!這種簡單和優(yōu)雅讓 MongoDB 變得強(qiáng)大而可靠。

7 MongoDB 的演化史 (2009 年——2020 年)

MongoDB 1.0 是在 2009 年 2 月發(fā)布的,提供了大部分基本的查詢功能。MongoDB 1.2 是在 2009 年 12 月發(fā)布的,引入了 map-reduce,支持大規(guī)模數(shù)據(jù)處理。在看到 MongoDB 的巨大潛力之后,10gen 公司迅速壯大了團(tuán)隊(duì)。MongoDB 1.4(2010 年 3 月) 引入了后臺索引創(chuàng)建,MongoDB 1.6(2010 年 8 月) 引入了一些主要特性,比如用于水平伸縮的分片、具備自動故障轉(zhuǎn)移能力的副本集以及對 IPv6 的支持。

到了 2012 年,10gen 有 100 名員工,公司開始提供 24/7 服務(wù)。MongoDB 2.2 版本 (2012 年 8 月) 引入了聚合管道,可以將多個數(shù)據(jù)處理步驟組合成一個操作鏈。到了 2013 年,10gen 擁有 250 多名員工和 1000 多名客戶。為了挖掘商業(yè)潛力,10gen 更名為 MongoDB 公司,專注于數(shù)據(jù)庫產(chǎn)品。MongoDB 2.4 版本 (2013 年 3 月) 在 Mongo Shell 中引入了文本搜索和谷歌的 V8 JS 引擎等增強(qiáng)功能。除了 2.4 之外,還發(fā)布了 MongoDB 企業(yè)版,提供了監(jiān)控和安全集成等附加功能。

MongoDB 早期版本的一個主要問題是它用來保存和管理磁盤數(shù)據(jù)的存儲引擎相對較弱。于是,MongoDB 公司進(jìn)行了第一筆收購,收購了 WiredTiger 公司。這家公司有超級穩(wěn)定的存儲引擎產(chǎn)品 WiredTiger。MongoDB 拿下了這家公司的開發(fā)團(tuán)隊(duì)和產(chǎn)品,以及首席架構(gòu)師 Michael Cahill(也是 Berkeley DB 的架構(gòu)師之一),讓他擔(dān)任存儲工程總監(jiān)一職。WiredTiger 是一個高效的存儲引擎,使用了各種編程技術(shù),如風(fēng)險(xiǎn)指針(hazard pointer)、無鎖算法、快速鎖存(fast latch)和消息傳遞,與其他引擎相比,WiredTiger 可以在每個 CPU 內(nèi)核上執(zhí)行更多的任務(wù)。為了最小化磁盤開銷和 I/O,WiredTiger 使用了緊湊的文件格式和壓縮(可選)。

MongoDB 的下一個主要版本是 3.0(2015 年 3 月),其中包含了新的 WiredTiger 存儲引擎、可插拔存儲引擎 API、增加了 50 個副本集限制和安全改進(jìn)。同年,Glassdoor 將 MongoDB 公司列為最佳的雇主之一。同年晚些時候又發(fā)布了 3.2 版本,支持文檔驗(yàn)證、部分索引和一些主要的聚合增強(qiáng)。

2017 年,微軟發(fā)布了多模型 NoSQL 數(shù)據(jù)庫服務(wù) CosmosDB,作為微軟 Azure 云平臺的一部分。它提供了與 MongoDB 3.2 的協(xié)議兼容性,針對 MongoDB 3.2 的查詢也可以在 CosmosDB 上運(yùn)行,這加快了開發(fā)人員采用 CosmosDB 的速度。

截止 2016 年,MongoDB 公司擁有 500 多名員工,數(shù)據(jù)庫的下載量超過 2000 萬次。2017 年 10 月,MongoDB 公司上市,市值超過 10 億美元。MongoDB 3.6 在一個月后 (2017 年 11 月) 發(fā)布,為多集合連接查詢、變更流和使用 JSON 模式進(jìn)行文檔驗(yàn)證提供了更好的支持。MongoDB 3.6 是微軟 Azure CosmosDB 截至 2020 年 8 月能夠支持的最新版本。

2018 年,MongoDB 公司斥資 6800 萬美元收購了 mLab,這是 MongoDB 公司的第二筆收購。當(dāng)時,mLab 在云端提供 MongoDB 服務(wù) (DBaaS),并擁有大量的客戶。云計(jì)算是未來,MongoDB 公司迅速收購并集成了 mLab,將其作為 MongoDB Atlas 云平臺的一部分。然后,他們通過改變開源版本的許可條款來限制更多的 DBaaS 競爭者出現(xiàn)!

MongoDB 開源社區(qū)版和高級企業(yè)版都使用了相同的底層引擎。這意味著任何人都可以使用社區(qū)版,然后基于社區(qū)版提供付費(fèi)的云服務(wù)。對于 MongoDB 公司來說,它們的云產(chǎn)品 MongoDB Atlas 就多了很多直接競爭者。因此,在 2018 年 10 月,MongoDB 公司將社區(qū)版的許可從 GNU AGPLv3 (AGPL) 更改為服務(wù)器端公共許可 (SSPL)。許可中有一個條款用來防止未來 SaaS 競爭對手使用 MongoDB 并提供他們自己的 SaaS 版本:

如果您將本程序的功能或修改版本作為服務(wù)提供給第三方,必須將服務(wù)源代碼通過網(wǎng)絡(luò)下載的方式免費(fèi)提供給所有人。

這是一個由 MongoDB 公司自己提出的許可條款,并聲稱兼容 OSI。不過,該條款后來在開放源碼計(jì)劃 (OSI) 的審批過程中被撤回,不過開源版本的 MongoDB 仍然采用 SSPL 許可。

到了 2018 年,MongoDB 公司擁有 1000 多名員工。下一個主要版本 MongoDB 4.0(2018 年 6 月) 提供了跨文檔事務(wù)處理能力。這是一個重要的里程碑,MongoDB 已經(jīng)為高數(shù)據(jù)完整性需求做好了準(zhǔn)備。

云生態(tài)系統(tǒng)在快速增長,不久后,MongoDB 公司意識到他們需要發(fā)展成一個成熟的云平臺,而不只是提供數(shù)據(jù)庫服務(wù)。2019 年,MongoDB 公司進(jìn)行了第三筆收購,以 3900 萬美元收購了云計(jì)算移動數(shù)據(jù)庫公司 Realm。有意思的是,MongoDB 最初也是一種 PaaS 托管解決方案,而 12 年之后,它又回到了同樣的方向。同年,MongoDB 公司發(fā)布了帶有分布式事務(wù)支持的 MongoDB 4.2。

截至 2020 年 8 月,MongoDB 社區(qū)版版本是 4.4。值得注意的是,MongoDB 數(shù)據(jù)庫工具可以單獨(dú)下載。MongoDB 4.4 包含了一些主要的特性增強(qiáng),比如多集合聯(lián)合聚合、復(fù)合哈希分片鍵和對沖讀(Hedged Read)/ 鏡像讀。

8 現(xiàn)在的 MongoDB

截至 2020 年,MongoDB 的全球下載量達(dá)到了 1.1 億次。MongoDB 公司目前有 2000 多名員工,有超過 18000 名付費(fèi)客戶,其中有很多客戶同時使用 MongoDB Atlas 和 MongoDB 企業(yè)版。截至 2020 年 8 月,MongoDB 社區(qū)版版本是 4.4。大多數(shù)大公司在內(nèi)部的一些場景中使用社區(qū)版。MongoDB 社區(qū)版仍然是開源的,除了一些關(guān)鍵特性外,它與 MongoDB 企業(yè)版差不多。

MongoDB 企業(yè)版 (每個服務(wù)器每年的費(fèi)用在 1 萬美元左右) 提供了以下這些附加功能:

  • 內(nèi)存存儲引擎——適用于需要快速數(shù)據(jù)訪問而不需要持久存儲的場景。

  • 審計(jì)——數(shù)據(jù)庫管理員在部署時跟蹤系統(tǒng)活動。

  • 身份驗(yàn)證和授權(quán)——支持 Kerberos 身份驗(yàn)證和 LDAP 身份驗(yàn)證和授權(quán)。

  • 加密——WiredTiger 引擎提供了一個原生加密選項(xiàng)。默認(rèn)是 AES256,使用 OpenSSL。

除了社區(qū)版,MongoDB 公司還提供了以下這些產(chǎn)品:

  • MongoDB Database Tools——命令行工具集合,包括導(dǎo)入 / 導(dǎo)出 (mongodump、mongorestore 等) 和診斷工具 (mongostat、mongotop)。

  • MongoDB 企業(yè)服務(wù)器——企業(yè)版,提供額外的安全和審計(jì)功能。

  • MongoDB Atlas——基于云的 SaaS 版服務(wù)器。

  • Atlas Data Lake——一個基于云的數(shù)據(jù)湖工具,由 MongoDB 查詢語言提供支持,可以通過 MongoDB Atlas 和 AWS S3 查詢和分析數(shù)據(jù)。

  • Atlas Search——一個基于云的全文搜索引擎,基于 MongoDB Atlas。

  • MongoDB Realm——一個為移動應(yīng)用提供后端服務(wù)的托管云服務(wù)。

  • MongoDB Charts——一個云工具,用于創(chuàng)建 MongoDB 數(shù)據(jù)的可視化表示。

  • MongoDB Compass——可下載的 GUI 工具,用于連接 MongoDB 數(shù)據(jù)庫和查詢數(shù)據(jù)。

  • MongoDB Ops Manager——用于在自定義基礎(chǔ)設(shè)施上部署、備份和擴(kuò)展 MongoDB 的管理平臺。

  • MongoDB Cloud Manager——云版本的 Ops 管理器。

  • MongoDB Connectors——為其他平臺 / 工具提供的用于連接 MongoDB 的驅(qū)動程序。

9 前方的道路

由于在 SSPL 許可方面存在爭議,開發(fā)者社區(qū)中有一些人對 MongoDB 生態(tài)系統(tǒng)持謹(jǐn)慎態(tài)度。投資者還面臨著圍繞生態(tài)系統(tǒng)創(chuàng)收的壓力。如果你把 2008 年版和 2020 年版的 MongoDB 主頁放在一起看,這一點(diǎn)就顯而易見 (見下圖)。MongoDB 社區(qū)版下載頁面實(shí)際上也列出了企業(yè)版中才有的特性!

另外,MongoDB 公司還面臨來自云供應(yīng)商的激烈競爭。MongoDB 公司面臨的主要問題是數(shù)據(jù)存儲只是企業(yè)應(yīng)用程序的一部分,如果沒有一個令人信服的全棧云服務(wù),在未來可能很難與云供應(yīng)商競爭。

Eliot Horowitz (MongoDB 的關(guān)鍵人物) 于 2020 年 7 月離開了公司。盡管他還在擔(dān)任顧問的角色,但 MongoDB 的產(chǎn)品仍存在一些風(fēng)險(xiǎn),比如焦點(diǎn)被弱化、減少對免費(fèi)社區(qū)版的支持或進(jìn)一步修改許可條款。

10 寫在最后

MongoDB 是一個圍繞開源技術(shù)產(chǎn)品成功創(chuàng)辦一家公司的完美案例,也是在產(chǎn)品生命周期中如何選擇正確時機(jī)轉(zhuǎn)向的絕佳例子。MongoDB 的簡單性和較小的安裝體積可以在不增加很多開銷的情況下構(gòu)建復(fù)雜的系統(tǒng)。我希望 MongoDB 公司在未來幾年繼續(xù)為社區(qū)版提供支持。

英文原文

https://www.quickprogrammingtips.com/mongodb/mongodb-history.html

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MongoDB進(jìn)階之路:不僅僅是技術(shù)研究,還有優(yōu)化和最佳實(shí)踐
MongoDB官方發(fā)布的每次重大修改的版本特性總結(jié)
遇見未來 | MongoDB增強(qiáng)事務(wù)支持,向NewSQL的方向邁進(jìn)
什么是無服務(wù)器數(shù)據(jù)庫(優(yōu)點(diǎn)和缺點(diǎn))
用最少人力玩轉(zhuǎn)萬億級數(shù)據(jù),我用的就是MongoDB(問答篇)
OPPO百萬級高并發(fā)MongoDB集群性能數(shù)十倍提升優(yōu)化實(shí)踐(上)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服