1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4033字,需瀏覽 9分鐘

         ·

        2021-07-14 20:40

        【NoSQL| 整理/Edison Zhou

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

        1關(guān)于MongoDB

        通過下面幾個問題,我們來快速地認(rèn)識一下MongoDB吧。

        什么是MongoDB?

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

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

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

        是誰開發(fā)的MongoDB?

        一個名叫 MongoDB Inc 的科技公司,總部在美國紐約。

        MongoDB的主要用途是什么?

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

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

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

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

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

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

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

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

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

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

        MongoDB各版本有什么變遷?

        一圖勝前言:

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

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

        一表勝前言:

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

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

        特色:靈活的文檔模型

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

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

        這個對象模型就是我們常說的JSON文檔文檔模型,它具有以下幾個特性:

        (1)數(shù)據(jù)庫引擎只需要在一個存儲區(qū)讀寫;

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

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

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

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

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

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

        3快速安裝MongoDB

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

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

        前置條件

        一臺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)建這個目錄:

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

        然后,進(jìn)入 source 目錄下解壓,并將壓縮后的所有文件移動到 /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è)置開機(jī)啟動項(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開機(jī)自啟動

        systemctl enable mongodb.service

        這時開機(jī)自啟動配置完成,reboot一下驗(yàn)證看看。

        試玩MongoDB

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

        mongo

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

        show dbs

        接下來,我們來創(chuàng)建一個 students 數(shù)據(jù)庫并新增一個文檔 用于把玩:
        > 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"}
        暫且先不用管這個語法,你只需要知道它向test數(shù)據(jù)庫的students集合中新增了一行記錄 并 通過find查詢到了這一行記錄 即可。

        使用Compass客戶端

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

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

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

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

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

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

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

        End總結(jié)

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

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


        參考資料

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

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

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

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

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中文字幕无码视频 | 欧美精品八区 | 亚洲黄色小视频 | A∨在线免费观看 | 99这里有精品视频 | 国内自拍偷拍第一页 | 日本伦理中文字幕 | 婷婷丁香一区二区三区 | 台湾无码一区二区三区 | 亚洲AV无码秘 翔田 |