小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MongoDB 4.2 新特性解讀

 曾淼Mark 2019-06-25

作者 張友東,阿里云高級(jí)技術(shù)專家

MongoDB World 2019 上發(fā)布新版本 MongoDB 4.2 Beta,包含多項(xiàng)數(shù)據(jù)庫(kù)新特性,本文嘗試從技術(shù)角度解讀。

Full Text Search

MongoDB 4.2 之前,全文搜索(Full Text Search)的能力是靠 Text Index 來(lái)支持的,在 MongoDB-4.2 里,MongoDB 直接與 Lucene 等引擎整合,在 Atlas 服務(wù)里提供全文建索的能力。

MongoDB FTS 原理

  1. 用戶可以在 Atlas 上,對(duì)集合開啟全文索引,后臺(tái)會(huì)開起 Lucene 索引引擎(索引引擎、查詢引擎均可配置),對(duì)存量數(shù)據(jù)建立索引。

  2. 對(duì)于開啟全文建索的集合,新寫入到 MongoDB 的數(shù)據(jù), 后臺(tái)的服務(wù)會(huì)通過(guò) Change Stream 的方式訂閱,并更新到 Lucene 索引引擎里。

  3. 索引的查詢直接以 MongoDB Query 的方式提供,Mongod 收到請(qǐng)求會(huì)把請(qǐng)求轉(zhuǎn)發(fā)到 Lucene 引擎,收到建索結(jié)果后回復(fù)給客戶端。

Full Text Search 示例

下面是一個(gè) Full Text Search 使用的簡(jiǎn)單示例,整個(gè)使用體驗(yàn)非常簡(jiǎn)單,除了需要在 Atlas 控制臺(tái)上建索引,其他跟正常使用 MongoDB 毫無(wú)差別,隨著這塊能力的完善,能覆蓋很多 Elastic Search 的場(chǎng)景。

Step1: 準(zhǔn)備數(shù)據(jù)

Step2: Atlas 上創(chuàng)建 FTS 索引

Step3: 使用 MongoDB 客戶端做搜索,支持 Wildcard、Prefix 等多種搜索能力

Distributed Transaction

MongoDB 4.0 支持副本集事務(wù),極大的豐富了應(yīng)用場(chǎng)景;4.0 的事務(wù)存在最大修改 16MB、事務(wù)執(zhí)行時(shí)間不能過(guò)長(zhǎng)的限制,在 4.2 支持分布式事務(wù)的這些問(wèn)題都解決了。分布式事務(wù)的支持也意味用戶修改分片key的內(nèi)容成為可能,因?yàn)樾薷姆制琸ey的內(nèi)容,可能會(huì)導(dǎo)致key要遷移到其他shard,而在4.2之前,無(wú)法保證這個(gè)遷移動(dòng)作(目標(biāo)上新寫、源上刪掉)的原子性,而借助分布式事務(wù),這個(gè)問(wèn)題也就迎刃而解。

4.2 支持的分布式事務(wù)是硬核技術(shù),目前具備這個(gè)能力的開源數(shù)據(jù)庫(kù)本身也不多,MongoDB 采用二階段提交的方式(細(xì)節(jié)以后再分析),實(shí)現(xiàn)在多個(gè) Shard 間發(fā)生的修改,要么同時(shí)發(fā)生,要么都不發(fā)生,保證事務(wù)的 ACID 特性。

在使用上,4.2 的分布式事務(wù)跟 4.0 副本集事務(wù)使用方式完全一樣,用戶無(wú)需關(guān)心后端數(shù)據(jù)如何分布。

High Availablity

MongoDB 在保證數(shù)據(jù)庫(kù)服務(wù)可用性方面持續(xù)努力,在 4.0 提供了 Retryable Write 功能,在新的 4.2 版本,MongoDB 增加了 Retryable Read 功能,對(duì)于一些臨時(shí)的網(wǎng)絡(luò)問(wèn)題,用戶無(wú)需自己實(shí)現(xiàn)重試邏輯,MongoDB 會(huì)自動(dòng)重試處理,保證用戶業(yè)務(wù)的連續(xù)性。

Improved Query Language

MongoDB 4.2 在查詢語(yǔ)言的表達(dá)能力上進(jìn)一步增強(qiáng),update、aggregation、index 等方面都有巨大的提升,具體細(xì)節(jié)等 4.2 正式版文檔發(fā)出可以詳細(xì)了解。

Update 能力增強(qiáng)

4.2 之前,Update 操作基本上都是用確定的值更新某個(gè)字段,在新版本里,Update 能根據(jù)文檔現(xiàn)有的字段內(nèi)容來(lái)生成新的更新內(nèi)容,如下的實(shí)例,根據(jù)文檔 pay、tax 字段,加起來(lái)生成一個(gè) total 字段;這個(gè)在 4.2 之前,用戶需要先讀取文檔內(nèi)容,獲取 pay、tax 字段得到結(jié)果,然后調(diào)用 Update 設(shè)置新的字段。類似的特性還有很多,基本上 Aggregation 里能表達(dá)的更新操作,4.2 的 Update 命令都能支持。

分析能力增強(qiáng)

Aggregation 方面,MongoDB 也做了大量的改進(jìn),來(lái)更好的支持業(yè)務(wù)分析場(chǎng)景;比如增加merge操作符,能不斷的將增量分析結(jié)果與原來(lái)的結(jié)果進(jìn)行匯總(老的版本只支持out,把當(dāng)次分析結(jié)果寫到某個(gè)集合)。

Index 能力增強(qiáng)(Wildcard Index)

使用 MongoDB 時(shí),經(jīng)常會(huì)遇到一些場(chǎng)景,某個(gè)字段包含很多個(gè)屬性,很多屬性都可能需要用于查詢,現(xiàn)在的解決方案時(shí),針對(duì)每個(gè)屬性,必須提前知道它的訪問(wèn)行為,建立必要的索引;MongoDB 4.2 引入 Wildcard Index,可以針對(duì)一系列的字段自動(dòng)建索引,滿足豐富的查詢需求。

如下面的例子所示,書籍的 attribute 字段里包含很多熟悉,包括顏色、大小等信息,如果經(jīng)常需要根據(jù)屬性查找,可以針對(duì) attribute 字段建立 Wildcard index。

Field Level Encrytion

MongoDB 除了支持 SSL、TDE 等安全機(jī)制,在 4.2 引入「字段級(jí)加密」的支持,實(shí)現(xiàn)對(duì)用戶JSON文檔的Value 進(jìn)行自動(dòng)加密。整個(gè)過(guò)程在 Driver 層完成,傳輸、存儲(chǔ)到服務(wù)端的文檔Value都是密文,MongoDB 4.2 Drvier 支持豐富的加密策略,可以針對(duì)集合、字段維度開啟加密,加密過(guò)程對(duì)開發(fā)者完全透明。

MongoDB and Kubernetes

Kubernetes 是工業(yè)級(jí)的容器編排管理平臺(tái),可以使用 Kubernetes 管理 MongoDB 集群的整個(gè)生命周期,但隨著業(yè)務(wù)部署環(huán)境越來(lái)越復(fù)雜多樣化,有的可能是私有云部署、有的是公有云的部署,使得集群的管理難度也越來(lái)越高。

在新版本 MongoDB Atlas(公有云), MongoDB Cloud Manager(私有云企業(yè)版管理) 都集成了 Kubernetes operators 的支持,使得用戶可以使用 Kubernetes 統(tǒng)一管理 MongoDB 資源。

MongoDB Chart

MongoDB Chart 在去年的 MongoDB World 已經(jīng)介紹過(guò)了,今年有做了多方面的增強(qiáng),算得上是一個(gè)功能比較完備的 BI 分析工具了。有了 Charts,MongoDB 也無(wú)需支持 SQL 來(lái)去對(duì)接 BI 工具了。

Charts 在使用上還是有一定學(xué)習(xí)成本的,不是特別直觀,需要配合教程,了解下運(yùn)作原理,才能得到想要的圖,比如這個(gè)例子里,針對(duì)電影集合,Released 的年份做了聚合分析,得到分布圖。

MongoDB Realm

MongoDB 在4月份的時(shí)候收購(gòu)了 Realm,一個(gè)為移動(dòng)端開發(fā)而設(shè)計(jì)的新型數(shù)據(jù)庫(kù)。MongoDB 去年發(fā)布了 MongoDB Mobile 來(lái)應(yīng)對(duì)移動(dòng)端的數(shù)據(jù)存儲(chǔ)需求,在收購(gòu) Realm 后,二者會(huì)進(jìn)行深度整合,Real Core 里會(huì)借助MongoDB提供的能力,增加非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到能力,比如 JSON、Dict、Set,讓 Realm 變得更強(qiáng)大,同時(shí)發(fā)揮 Realm 在移動(dòng)端生態(tài)以及 MongoDB 數(shù)據(jù)庫(kù)存儲(chǔ)的優(yōu)勢(shì)。

Atlas Data Lake (Beta)

在新版本 Atlas 服務(wù)里,提供了 Atlas Data Lake,能直接通過(guò) MongoDB API 訪問(wèn)存儲(chǔ)在 AWS S3 (未來(lái)支持 Azure、Google 的存儲(chǔ)服務(wù))里的數(shù)據(jù)。

云數(shù)據(jù)庫(kù) MongoDB 版

基于飛天分布式系統(tǒng)和高性能存儲(chǔ),提供三節(jié)點(diǎn)副本集的高可用架構(gòu),容災(zāi)切換,故障遷移完全透明化。并提供專業(yè)的數(shù)據(jù)庫(kù)在線擴(kuò)容、備份回滾、性能優(yōu)化等解決方案。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多