欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB高效讀寫(xiě)海量數(shù)據(jù)的方法

 更新時(shí)間:2022年02月17日 11:59:47   作者:Run2948  
這篇文章介紹了MongoDB高效讀寫(xiě)海量數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

MongoDB 簡(jiǎn)介

高性能,易部署,易使用

常見(jiàn)應(yīng)用場(chǎng)景

  • 分布式的日志收集: elk 單節(jié)點(diǎn)最多 32g , mongodb 越多越好
  • 傳感器(電子產(chǎn)品) --- 數(shù)據(jù)庫(kù) --- MongoDB
  • 地理地圖
  • 網(wǎng)絡(luò)爬蟲(chóng)

大數(shù)據(jù)時(shí)代的3V

  • 海量 Volume
  • 多樣 Variety
  • 實(shí)時(shí) Velocity

大數(shù)據(jù)庫(kù)時(shí)代的3高

  • 高并發(fā)
  • 高可擴(kuò)
  • 高性能

MongoDB 集群

1. 一主一從

  • docker-compose.yml
version: '2'
services: 
  master: 
    image: mongo:3.4
    volumes:
      - /data/mongodbml/master:/data/db
    command: mongod --dbpath /data/db --master 
  slaver: image:mongo:3.4
    volumes:
      - /data/mongodbml/slaver:/data/db 
    command: mongod --dbpath /data/db --slave --source master:27017
    links:
      - master

注意: 默認(rèn)從庫(kù)是不能讀取,需要設(shè)置 SlaveOk 的狀態(tài):

docker-compose up -d

docker ps

docker exec -it masterid /bin/bash

mongo
> show databases;
> use test;
> db.userinfo.insert({"name":"master"});
> db.userinfo.find({});
exit

docker exec -it slaveid /bin/bash

mongo
> show databases;
> db.getMongo().setSlaveOk();
> use test;
> db.userinfo.find({});


docker-compose rm

缺點(diǎn): 當(dāng)主庫(kù)掛了,需要手動(dòng)切換到從庫(kù)

2. 一主二從

  • docker-compose.yml
version: '2'
services: 
  rs1: 
    image: mongo:3.4
    volumes:
      - /data/mongodbtest/replset/rs1:/data/db
    command: mongod --dbpath /data/db --replset myset 
  rs2: image:mongo:3.4
    volumes:
      - /data/mongodbtest/replset/rs2:/data/db
    command: mongod --dbpath /data/db --replset myset 
  rs3: image:mongo:3.4
    volumes:
      - /data/mongodbtest/replset/rs3:/data/db
    command: mongod --dbpath /data/db --replset myset

設(shè)置: 安排 rs1 進(jìn)主節(jié)點(diǎn),rs2、rs3 進(jìn)從節(jié)點(diǎn)。

docker-compose up -d

docker ps 

docker exec -it rs1id /bin/bash

mongo

> rs.initiate()

myset:SECONDARY> rs.add('rs2:27017'); 
myset:PRIMARY> rs.add('rs3:27017'); 
myset:PRIMARY> rs.conf()

myset:PRIMARY> show databases;
myset:PRIMARY> use test;
myset:PRIMARY> db.userinfo.insert({"name":"rs1"});
myset:PRIMARY> db.userinfo.find({});
exit

docker exec -it rs2id /bin/bash

mongo

myset:SECONDARY> rs.status();
myset:SECONDARY> rs.slaveOk();
myset:SECONDARY> show databases;
myset:SECONDARY> use test;
myset:SECONDARY> db.userinfo.find({});
exit

docker exec -it rs3id /bin/bash

mongo

myset:SECONDARY> rs.slaveOk();
myset:SECONDARY> show databases;
myset:SECONDARY> use test;
myset:SECONDARY> db.userinfo.find({});

測(cè)試: 強(qiáng)行停止主庫(kù) rs1,檢查從庫(kù)是否能分配并切換到主庫(kù) ,在繼續(xù)強(qiáng)行停止分配后的主庫(kù) rs2

docker stop rs1id

docker exec -it rs2id /bin/bash

docker stop rs2id

docker exec -it rs3id /bin/bash

docker-compose rm

結(jié)論:

當(dāng)主節(jié)點(diǎn) rs1 掛了,會(huì)有從節(jié)點(diǎn)過(guò)來(lái)替代原有主庫(kù)的位置,但是當(dāng)僅剩最后一個(gè)從庫(kù)時(shí),無(wú)法切換為主庫(kù)。

當(dāng)主節(jié)點(diǎn) rs1 重新啟動(dòng)恢復(fù)后,只會(huì)立馬變?yōu)閺膸?kù),不再是主庫(kù)。除非等到現(xiàn)在的主庫(kù)掛了,才有可能重新回到主庫(kù)的位置。

問(wèn)題: 當(dāng)主節(jié)點(diǎn) rs1 掛了,會(huì)有從節(jié)點(diǎn)過(guò)來(lái)替代原有主庫(kù)的位置,但是具體是哪一個(gè)從庫(kù)沒(méi)有辦法控制。所以我們需要添加一個(gè)沖裁 來(lái)解決這個(gè)問(wèn)題。

3. 一主一從一仲裁

  • docker-compose.yml
version: '2'
services: 
  master: 
    image: mongo:3.4
    volumes:
      - /data/mongodbnode/replset/rs1:/data/db
    command: mongod --dbpath /data/db --replset newset --oplogSize 128
  slave: image:mongo:3.4
    volumes:
      - /data/mongodbnode/replset/rs2:/data/db
    command: mongod --dbpath /data/db --replset newset --oplogSize 128
  arbiter: image:mongo:3.4
    command: mongod --dbpath /data/db --replset newset  --smallfiles --oplogSize 128

配置:

docker-compose up -d

docker ps 

docker exec -it masterid /bin/bash

mongo

> rs.initiate()

newset:SECONDARY> rs.add('slave:27017'); 
newset:PRIMARY> rs.add('arbiter:27017', true);
newset:PRIMARY> re.conf()

newset:PRIMARY> show databases;
newset:PRIMARY> use test;
newset:PRIMARY> db.userinfo.insert({"name":"master"});
newset:PRIMARY> db.userinfo.find({});
exit

docker exec -it slaveid /bin/bash
newset:SECONDARY> res.slaveOk();
newset:SECONDARY> use test;
newset:SECONDARY> db.userinfo.find({});
exit


docker exec -it arbiterid /bin/bash
newset:ARBITER> res.slaveOk();
newset:ARBITER> show databases;
newset:ARBITER> db.userinfo.find({});

注意: 當(dāng)存在 arbiter節(jié)點(diǎn) (只是仲裁,并不存儲(chǔ)數(shù)據(jù))

到此這篇關(guān)于MongoDB高效讀寫(xiě)海量數(shù)據(jù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決mongodb在ubuntu下啟動(dòng)失敗,提示couldn‘t remove fs lock errno:9 Bad file descriptor的錯(cuò)誤

    解決mongodb在ubuntu下啟動(dòng)失敗,提示couldn‘t remove fs lock errno:9 Bad

    之前MongoDB啟動(dòng)的時(shí)候是蠻正常的,不知道后來(lái)啟動(dòng)報(bào)錯(cuò)了,就把粘貼出來(lái)查詢了。經(jīng)過(guò)一番百度,才找的處理的辦法,分享給大家
    2014-08-08
  • mongodb數(shù)據(jù)庫(kù)入門學(xué)習(xí)筆記之下載、安裝、啟動(dòng)、連接操作解析

    mongodb數(shù)據(jù)庫(kù)入門學(xué)習(xí)筆記之下載、安裝、啟動(dòng)、連接操作解析

    這篇文章主要介紹了mongodb數(shù)據(jù)庫(kù)入門學(xué)習(xí)筆記之下載、安裝、啟動(dòng)、連接操作,結(jié)合簡(jiǎn)單示例形式分析了MongoDB數(shù)據(jù)庫(kù)的基本下載、解壓、啟動(dòng)服務(wù)、連接服務(wù)等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • MongoDB中的MapReduce簡(jiǎn)介

    MongoDB中的MapReduce簡(jiǎn)介

    這篇文章主要介紹了MongoDB中的MapReduce簡(jiǎn)介,MapReduce是一種計(jì)算模型,簡(jiǎn)單的說(shuō)就是將大批量的工作(數(shù)據(jù))分解(MAP)執(zhí)行,然后再將結(jié)果合并成最終結(jié)果(REDUCE),需要的朋友可以參考下
    2015-05-05
  • NoSQL優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫(kù)簡(jiǎn)介

    NoSQL優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫(kù)簡(jiǎn)介

    這篇文章介紹了NoSQL的優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫(kù),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 在PyCharm中安裝Mongo Plugin的詳細(xì)教程

    在PyCharm中安裝Mongo Plugin的詳細(xì)教程

    這篇文章主要介紹了在PyCharm中安裝Mongo Plugin的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • MongoDB 模式設(shè)計(jì)詳解

    MongoDB 模式設(shè)計(jì)詳解

    這篇文章主要介紹了MongoDB 模式設(shè)計(jì)詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Centos 7下Mongodb開(kāi)機(jī)無(wú)法自啟動(dòng)的解決方法

    Centos 7下Mongodb開(kāi)機(jī)無(wú)法自啟動(dòng)的解決方法

    這篇文章主要介紹了Centos 7下Mongodb開(kāi)機(jī)無(wú)法自啟動(dòng)的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • 1億條記錄的MongoDB數(shù)據(jù)庫(kù)隨機(jī)查詢性能測(cè)試

    1億條記錄的MongoDB數(shù)據(jù)庫(kù)隨機(jī)查詢性能測(cè)試

    這篇文章主要為大家分享下1億條記錄的MongoDB數(shù)據(jù)庫(kù)隨機(jī)查詢性能測(cè)試結(jié)果,需要的朋友可以參考下
    2013-12-12
  • MongoDB中唯一索引(Unique)的那些事

    MongoDB中唯一索引(Unique)的那些事

    這篇文章主要給大家介紹了關(guān)于MongoDB中唯一索引(Unique)的那些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • MongoDB數(shù)據(jù)庫(kù)用戶角色和權(quán)限管理詳解

    MongoDB數(shù)據(jù)庫(kù)用戶角色和權(quán)限管理詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫(kù)用戶角色和權(quán)限管理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論