<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NoSQL | MongoDB入門實(shí)戰(zhàn)教程(1)

          共 4033字,需瀏覽 9分鐘

           ·

          2021-07-14 20:40

          【NoSQL| 整理/Edison Zhou

          對(duì)于后端開(kāi)發(fā)工程師,NoSQL是一個(gè)需要掌握的技術(shù)點(diǎn),而NoSQL中比較火熱的技術(shù)當(dāng)屬M(fèi)ongoDB。歡迎入門MongoDB,進(jìn)入無(wú)模式的文檔數(shù)據(jù)庫(kù)世界。

          1關(guān)于MongoDB

          通過(guò)下面幾個(gè)問(wèn)題,我們來(lái)快速地認(rèn)識(shí)一下MongoDB吧

          什么是MongoDB?

          一個(gè)以JSON為數(shù)據(jù)模型的文檔數(shù)據(jù)庫(kù)。

          為什么叫文檔數(shù)據(jù)庫(kù)?

          這里的文檔來(lái)自于“JSON Document”,而不是我們一般理解的PDF、WORD等文檔。

          是誰(shuí)開(kāi)發(fā)的MongoDB?

          一個(gè)名叫 MongoDB Inc 的科技公司,總部在美國(guó)紐約。

          MongoDB的主要用途是什么?

          應(yīng)用數(shù)據(jù)庫(kù),類似于MySQL、Oracle、MSSQL等。

          海量數(shù)據(jù)處理,數(shù)據(jù)平臺(tái)等。

          MongoDB的主要特點(diǎn)是什么?

          建模不再是必選,而是可選;

          JSON數(shù)據(jù)模型比較適合開(kāi)發(fā)者快速迭代;

          橫向擴(kuò)展可以支撐很大的數(shù)據(jù)量和并發(fā)量;

          MongoDB是免費(fèi)的么?

          MongoDB有兩個(gè)發(fā)布版本:社區(qū)版 和 企業(yè)版;

          社區(qū)版是基于SSPL協(xié)議,這是一種和AGPL協(xié)議類似的開(kāi)源協(xié)議,對(duì)于云廠商封裝云產(chǎn)品有一定限制,其他場(chǎng)景均無(wú)限制,免費(fèi)使用;

          企業(yè)版則是基于商業(yè)協(xié)議,需要付費(fèi)使用;

          MongoDB各版本有什么變遷?

          一圖勝前言:

          值得一提的是,4.x 版本開(kāi)始支持事務(wù)了。

          MongoDB和關(guān)系型DB有什么異同點(diǎn)?

          一表勝前言:

          對(duì)于基本概念術(shù)語(yǔ),MongoDB與關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別如下表:

          可以看到,在MongoDB中每一行被稱做一個(gè)文檔,這也是MongoDB被稱為文檔型數(shù)據(jù)庫(kù)的最大特點(diǎn)。
          2MongoDB的特色和優(yōu)勢(shì)

          特色:靈活的文檔模型

          在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,我們往往需要建立錯(cuò)綜復(fù)雜的關(guān)系模型。

          而在MongoDB中,我們只需要簡(jiǎn)單快速的創(chuàng)建一個(gè)對(duì)象模型即可。

          這個(gè)對(duì)象模型就是我們常說(shuō)的JSON文檔文檔模型,它具有以下幾個(gè)特性:

          (1)數(shù)據(jù)庫(kù)引擎只需要在一個(gè)存儲(chǔ)區(qū)讀寫(xiě);

          (2)反范式、無(wú)關(guān)聯(lián)的組織極大優(yōu)化查詢速度;

          (3)動(dòng)態(tài)數(shù)據(jù)模式,支持應(yīng)用開(kāi)發(fā)快速迭代;

          優(yōu)勢(shì):原生的高可用和橫向擴(kuò)展能力

          在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,我們往往需要借助一些組件花費(fèi)很多功夫才能做到高可用和橫向擴(kuò)展,而這些在MongoDB中就是與生俱來(lái)的,你不需要花費(fèi)很多功夫就可以實(shí)現(xiàn)。

          例如,可以直接借助MongoDB提供的復(fù)制集的能力實(shí)現(xiàn)高可用,最大可支持50個(gè)復(fù)制集,完全可以實(shí)現(xiàn)多中心的容災(zāi)能力。

          此外,還可以直接借助MongoDB提供的分片集的能力實(shí)現(xiàn)橫向擴(kuò)展,我們要做的只是在需要的時(shí)候無(wú)縫擴(kuò)展,它支持多種數(shù)據(jù)分布策略(Hash、范圍等),可以較為輕松地支持TB到PB級(jí)的數(shù)據(jù)量。

          3快速安裝MongoDB

          MongoDB支持多種安裝方式和多平臺(tái)(Windows/Linux),還支持Docker部署。這里為了快速演示,我們來(lái)在Linux下安裝一個(gè)適用于開(kāi)發(fā)測(cè)試環(huán)境的MongoDB社區(qū)版實(shí)例。

          此外,你也可以通過(guò)官方提供的云托管服務(wù)來(lái)創(chuàng)建一個(gè)免費(fèi)的MongoDB集群用于學(xué)習(xí),這也是一個(gè)快速學(xué)習(xí)MongoDB的方式,限制是免費(fèi)集群的存儲(chǔ)大小只有512MB。
          當(dāng)然,你還可以通過(guò)Docker來(lái)部署一個(gè)MongoDB社區(qū)版實(shí)例,不過(guò)我的習(xí)慣一般是數(shù)據(jù)庫(kù)類有狀態(tài)服務(wù)的運(yùn)行環(huán)境都不用Docker來(lái)部署,開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境可以考慮采用Docker來(lái)部署。

          前置條件

          一臺(tái)Linux主機(jī) 或 虛擬機(jī) 或 云主機(jī),建議 CentOS 7.x 版本。

          配置好靜態(tài)IP、關(guān)閉防火墻、主機(jī)名等基本操作,不再贅述。

          下載安裝包

          從官網(wǎng)(https://www.mongodb.com/try/download/community)下載MongoDB 4.4.5的tgz包:

          下載完成后將其拷貝到Linux中,這里我們暫且將其拷貝到 /usr/local/mongodb/source 目錄下。

          當(dāng)然,你要先創(chuàng)建這個(gè)目錄:

          mkdir /usr/local/mongodbmkdir /usr/local/mongodb/source

          然后,進(jìn)入 source 目錄下解壓,并將壓縮后的所有文件移動(dòng)到 /usr/local/mongodb 目錄下

          mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb

          準(zhǔn)備Mongo目錄與配置文件

          首先,在 /usr/local/mongodb 目錄下分別創(chuàng)建db目錄 和 log目錄:

          mkdir /usr/local/mongodb/data/dbmkdir /usr/local/mongodb/logs/mkdir /usr/local/mongodb/logs/mongodb.log

          然后,創(chuàng)建最核心的mongo配置文件:

          vi /usr/local/mongodb/mongodb.conf

          配置文件內(nèi)容如下:

          systemLog:  destination: file  path: /usr/local/mongodb/logs/mongodb.log # log path  logAppend: truestorage:  dbPath: /usr/local/mongodb/data/db # data directorynet:  bindIp: 0.0.0.0  port: 27017 # portprocessManagement:  fork: true

          修改環(huán)境變量

          執(zhí)行以下命令修改環(huán)境變量:

          export PATH=$PATH:/usr/local/mongodb/binsource /etc/profile

          驗(yàn)證一下:

          mongo -version

          設(shè)置開(kāi)機(jī)啟動(dòng)項(xiàng)

          首先,進(jìn)入 /lib/systemd/system 目錄下,執(zhí)行以下命令:

          cd /lib/systemd/systemcat >>mongodb.service<<"EOF"在>提示下拷貝以下內(nèi)容:[Unit]Description=mongodbAfter=network.target remote-fs.target nss-lookup.target
          [Service]Type=forkingExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.confPrivateTmp=true
          [Install]WantedBy=multi-user.targetEOF

          設(shè)mongodb.service執(zhí)行權(quán)限

          chmod +x mongodb.service

          設(shè)置mongodb.service開(kāi)機(jī)自啟動(dòng)

          systemctl enable mongodb.service

          這時(shí)開(kāi)機(jī)自啟動(dòng)配置完成,reboot一下驗(yàn)證看看。

          試玩MongoDB

          首先,執(zhí)行以下命令進(jìn)入Mongo Shell:

          mongo

          然后,執(zhí)行以下命令可以看到目前已有的數(shù)據(jù)庫(kù):

          show dbs

          接下來(lái),我們來(lái)創(chuàng)建一個(gè) students 數(shù)據(jù)庫(kù)并新增一個(gè)文檔 用于把玩:
          > use studentsswitched to db students> db.records.insertOne({name:"Edison", gender:"Male"}){  "acknowledged" : true,  "insertedId" : ObjectId("6092aa664e88a1d766523bc4")}> db.records.find().pretty(){  "_id" : ObjectId("6092aa664e88a1d766523bc4"),  "name" : "Edison",  "gender" : "Male"}
          暫且先不用管這個(gè)語(yǔ)法,你只需要知道它向test數(shù)據(jù)庫(kù)的students集合中新增了一行記錄 并 通過(guò)find查詢到了這一行記錄 即可。

          使用Compass客戶端

          MongoDB除了提供了shell命令供我們使用,還提供了一個(gè)免費(fèi)的圖形化客戶端工具Compass。

          下載地址:https://www.mongodb.com/products/compass

          安裝完成后,配置一下連接參數(shù):

          即可所有的數(shù)據(jù)庫(kù)和集合了:

          通過(guò)Compass查看剛剛把玩的students數(shù)據(jù)庫(kù):

          當(dāng)然,除了Compass之外呢,可以選擇的可視化工具還有Robo 3T 以及 Navicat,如果你已經(jīng)安裝了Navicat,那就直接使用Navicat連接也是一個(gè)不錯(cuò)的選擇。

          OK,到此試玩結(jié)束。

          End總結(jié)

          本文總結(jié)了MongoDB的基本概念、文檔模型 及 技術(shù)優(yōu)勢(shì),并介紹了如何在Linux下快速部署安裝一個(gè)MongoDB實(shí)例 以及 使用Compass客戶端工具連接MongoDB。

          下一篇,我們會(huì)學(xué)習(xí)如何在Linux下安裝部署一個(gè)三節(jié)點(diǎn)MongoDB的高可用復(fù)制集集群,有興趣的童鞋可以繼續(xù)關(guān)注。


          參考資料

          唐建法,《MongoDB高手課》(極客時(shí)間)

          郭遠(yuǎn)威,《MongoDB實(shí)戰(zhàn)指南》(圖書(shū))

          △推薦訂閱學(xué)習(xí)

          歡迎各位讀者加入微信群一起學(xué)習(xí)交流,
          在公眾號(hào)后臺(tái)回復(fù)“加群”即可~~

          瀏覽 62
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人性生交大片免费看网站2023年 | 91探花国产视频 | 在线a视频免费观看 | 日本黄色电影网 | 色一区二区三区 |