返回顶部
首页 > 资讯 > 精选 >MongoDB如何高效读写海量数据
  • 568
分享到

MongoDB如何高效读写海量数据

2023-06-29 04:06:48 568人浏览 安东尼
摘要

本文小编为大家详细介绍“MongoDB如何高效读写海量数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“mongoDB如何高效读写海量数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MonGoDB 

本文小编为大家详细介绍“MongoDB如何高效读写海量数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“mongoDB如何高效读写海量数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

MonGoDB 简介

高性能,易部署,易使用

常见应用场景

大数据时代的3V

  • 海量 Volume

  • 多样 Variety

  • 实时 Velocity

数据库时代的3高

MongoDB 集群

1. 一主一从

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

注意: 默认从库是不能读取,需要设置 SlaveOk 的状态:

docker-compose up -ddocker psdocker exec -it masterid /bin/bashmongo> show databases;> use test;> db.userinfo.insert({"name":"master"});> db.userinfo.find({});exitdocker exec -it slaveid /bin/bashmongo> show databases;> db.getMongo().setSlaveOk();> use test;> db.userinfo.find({});docker-compose rm

缺点: 当主库挂了,需要手动切换到从库

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

设置: 安排 rs1 进主节点,rs2rs3 进从节点。

docker-compose up -ddocker ps docker exec -it rs1id /bin/bashmongo> 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({});exitdocker exec -it rs2id /bin/bashmongomyset:SECONDARY> rs.status();myset:SECONDARY> rs.slaveOk();myset:SECONDARY> show databases;myset:SECONDARY> use test;myset:SECONDARY> db.userinfo.find({});exitdocker exec -it rs3id /bin/bashmongomyset:SECONDARY> rs.slaveOk();myset:SECONDARY> show databases;myset:SECONDARY> use test;myset:SECONDARY> db.userinfo.find({});

测试: 强行停止主库 rs1,检查从库是否能分配并切换到主库 ,在继续强行停止分配后的主库 rs2

docker stop rs1iddocker exec -it rs2id /bin/bashdocker stop rs2iddocker exec -it rs3id /bin/bashdocker-compose rm

结论:

当主节点 rs1 挂了,会有从节点过来替代原有主库的位置,但是当仅剩最后一个从库时,无法切换为主库。

当主节点 rs1 重新启动恢复后,只会立马变为从库,不再是主库。除非等到现在的主库挂了,才有可能重新回到主库的位置。

问题: 当主节点 rs1 挂了,会有从节点过来替代原有主库的位置,但是具体是哪一个从库没有办法控制。所以我们需要添加一个冲裁 来解决这个问题。

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 -ddocker ps docker exec -it masterid /bin/bashmongo> 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({});exitdocker exec -it slaveid /bin/bashnewset:SECONDARY> res.slaveOk();newset:SECONDARY> use test;newset:SECONDARY> db.userinfo.find({});exitdocker exec -it arbiterid /bin/bashnewset:ARBITER> res.slaveOk();newset:ARBITER> show databases;newset:ARBITER> db.userinfo.find({});

注意: 当存在 arbiter节点 (只是仲裁,并不存储数据)

读到这里,这篇“MongoDB如何高效读写海量数据”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: MongoDB如何高效读写海量数据

本文链接: https://lsjlt.com/news/322764.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MongoDB如何高效读写海量数据
    本文小编为大家详细介绍“MongoDB如何高效读写海量数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“MongoDB如何高效读写海量数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MongoDB ...
    99+
    2023-06-29
  • MongoDB高效读写海量数据的方法
    MongoDB 简介 高性能,易部署,易使用 常见应用场景 分布式的日志收集: elk 单节点最多 32g , mongodb 越多越好传感器(电子产品) --- 数据库 ...
    99+
    2024-04-02
  • 玩转Redis-如何高效访问Redis中的海量数据
    1、前言   Redis以高性能著称,但性能再好,在面对海量数据时,若不正确的使用,也终将会有性能瓶颈,甚至造成服务宕机。 在实际项目中你是否会有以下疑问? 如何访问Redis中的海量数据,却不影响其他请求访问Redis? Redis中有...
    99+
    2018-01-16
    玩转Redis-如何高效访问Redis中的海量数据
  • 如何把海量数据从 Oracle 导入到 Mongodb
    一、背景 因为业务需求,现在需要把 Oracle 中几千万的数据转移到 Mongodb,如果通过 PL/SQL Develop 导出,速度会比较慢,而且也很占用带宽。发现一款软件 sqluldr2 数据导出...
    99+
    2024-04-02
  • MongoDB怎么处理海量数据
    要处理海量数据,可以采取以下措施来优化MongoDB的性能: 使用合适的索引:在MongoDB中,索引对于查询性能至关重要。确保...
    99+
    2024-05-07
    MongoDB
  • 如何给mongodb写数据
    要给MongoDB写数据,你可以使用MongoDB的驱动程序或客户端库来与数据库进行交互。以下是使用MongoDB驱动程序(Pyth...
    99+
    2023-08-24
    mongodb
  • 如何在 Golang 中高效地处理大量文件读写?
    如何高效处理文件读写?并发 io:利用协程并行处理文件块,提升效率。内存映射:将文件映射到进程内存,消除系统调用和文件系统操作开销。 如何在 Golang 中高效地处理大量文件读写? ...
    99+
    2024-05-16
    golang 文件读写
  • python如何读取mongodb数据
    要在Python中读取MongoDB数据,您可以使用PyMongo库。以下是一个简单示例:首先,确保您已经安装了PyMongo库。您...
    99+
    2023-08-23
    python mongodb
  • 如何在Linux系统中利用Java PATH高效地处理海量数据?
    在Linux系统中,Java是一种非常流行的编程语言,可以帮助我们高效地处理海量数据。而Java PATH是一种非常有用的工具,可以帮助我们更加方便地管理Java的环境变量,从而提高我们的工作效率。在本文中,我们将介绍如何在Linux系统中...
    99+
    2023-06-21
    path linux 大数据
  • PHP开发中如何使用Memcache进行高效的数据读写操作?
    在 PHP 开发中,使用 Memcache 缓存系统可以大大提高数据读写的效率。Memcache 是一种基于内存的缓存系统,它可以将数据缓存在内存中,避免频繁的读写数据库。本文将介绍如何在 PHP 中使用 Memcache 进行高效的数据读...
    99+
    2023-11-07
    PHP Memcache 数据读写
  • mongodb如何设置读写权限
    mongodb设置读写权限的方法:1、打开命令行;2、进入mongodb安装目录;3、在bin目录下执行“mongod”启动服务;4、使用可视化工具并打开shell窗口;5、使用“db.createUser()”方法创建一个用户;6、在创建...
    99+
    2024-04-02
  • mysql如何高效导入大批量数据
    要高效导入大批量数据到MySQL中,可以使用以下方法: 使用LOAD DATA INFILE语句:这是MySQL提供的一个高效的...
    99+
    2024-05-13
    mysql
  • PHP开发中如何使用Memcache进行高效的数据读写和查询?
    PHP开发中如何使用Memcache进行高效的数据读写和查询?Memcache是一个高性能的分布式内存对象缓存系统,它可以有效地处理数据的读写和查询操作,提高Web应用程序的性能和响应速度。在PHP开发中,使用Memcache可以极大地提升...
    99+
    2023-11-07
    Memcache 高效 数据读写
  • PHP开发中如何使用Memcache实现高效的数据读写和更新?
    PHP开发中如何使用Memcache实现高效的数据读写和更新?Memcache是一种内存缓存技术,可以提供高速的数据访问和存储。在PHP开发中,如果能够合理地使用Memcache,就可以大大提高数据的读取和更新效率。本文将介绍如何使用Mem...
    99+
    2023-11-07
    Memcache PHP开发 高效数据读写更新
  • mongodb如何批量更新数据
    在MongoDB中,可以使用updateMany方法来批量更新数据。该方法接受两个参数,第一个参数是查询条件,用来匹配需要更新的文档...
    99+
    2024-05-11
    mongodb
  • 如何提高大数据量分页的效率
    这篇文章主要讲解了“如何提高大数据量分页的效率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何提高大数据量分页的效率”吧! ...
    99+
    2024-04-02
  • 如何用 NumPy 处理海量数据?
    NumPy 是 Python 语言中的一个重要库,它提供了很多高效的数值计算工具,特别适合处理海量数据。在本文中,我们将介绍如何使用 NumPy 来处理海量数据。 一、NumPy 的基本概念 NumPy 是 Numerical Python...
    99+
    2023-07-29
    大数据 numy 自然语言处理
  • Python与大数据:如何处理海量数据?
    在当今信息化时代,数据已经成为了企业和个人获取竞争优势的重要手段。随着数据量的不断增加,数据的处理也变得越来越复杂。这时候,Python作为一种高级编程语言,可以帮助我们处理海量数据,并且使数据分析变得更加简单和高效。 Python处理大...
    99+
    2023-09-11
    二维码 大数据 数组
  • 如何编写高效的 Java 函数?
    Java 函数是 Java 程序中最基本的构建块之一。它们是一个或多个语句的代码块,可以在程序中重复使用。在编写 Java 函数时,编写高效的代码非常重要。本文将介绍如何编写高效的 Java 函数,包括函数签名、参数、返回值和函数体。 1....
    99+
    2023-07-05
    关键字 函数 npm
  • 阿里云服务器计算数据高效处理海量数据的利器
    阿里云服务器是目前市场上最受欢迎的云计算服务之一,其强大的计算能力使其能够处理大规模数据。本文将详细说明阿里云服务器如何计算数据。 在当今大数据时代,数据已经成为企业发展的关键。对于企业来说,如何有效管理和处理大量的数据是一项非常重要的任务...
    99+
    2023-11-18
    数据 高效 阿里
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作