MongoDB应用实践思考

MongoDB分片综合应用及实践 MongoDB的分片是将数据水平拆分成多个部分(称为“chunks”),并将这些chunks分散存储在不同的MongoDB实例上。每个实例称为一个分片(Shard),它们共同组成了一个分片集群。MongoDB的分片集群由一个或多个mongos路由实例、多个分片实例以及一个或多个配置服务器(Config Servers)组成。mongos负责接收客户端的请求,并将请求路由到相应的分片上;配置服务器则存储了分片集群的元数据和配置信息。接下来,我们需要为sales集合定义一个分片键。在这个示例中,我们将使用。 阅读详情
最近研究MongoDB,利用其可以简单快速地搭建一套灵活的no schema存储系统。
本文通过论证和分析需求,利用MongoDB快速搭建了一套具有良好性能及可用性满足上亿规模的存储系统。
在关于NoSQL数据库的选型上,需要结合自身数据模型、访问方式以及成本等方面的考虑作一个权衡(trade off)。

那么经过研究MongoDB(2.6.4版本)有如下特点:
可用性:
1.支持高可用灵活的服务集群配置,有主从、副本集、自动分片模式。
2.基于文档的查询,高性能,简单查询上万的QPS。
3.支持全文检索。

一致性:
1.支持文档内更新模式,效率高。
2.当前最新的2.6版本采用读写锁、写锁优先,锁的粒度为collection级别。

易用性:
1.近似传统关系型数据库的SQL使用。
2.丰富的管理配置工具。
3.支持基于用户角色的权限管理体系。

存储机制:
采用mmap file + 内存索引的方式。内存与缓存管理由操作系统负责,当使用数据集大小超出时,性能下降。
Linux下内存控制可以通过配置用户ulimit -u 实现。

现实需求:
1. 需要存储字段灵活的半结构化数据。
2. 1~2亿条记录的存储规模,平均每条记录20k上限。
3. 读需求远大于写(以8:2计算),写以批量写入的方式,读需支持灵活复杂的查询方式。
4. 写性能:5000qps 读性能:2W qps

由于MongoDB灵活的存储和访问方式,以及良好的查询性能与伸缩性及维护成本,故想到利用MongoDB来存储这约2亿的数据量。
根据需求分析如下:
1. 以2亿规模计算,总存储量约4TB。现在市面上服务器硬盘最大有2TB规格的,部署时可以考虑以LVM方式,先安装1~2TB磁盘,待容量增长时根据需求方便地做扩容。
2. 在已存在1亿数据量的情况下插入1000W条记录,每次写入4条索引,qps能达到8000满足写性能的5000 qps需求。
3. 单线程简单读情况下qps能达到8W qps,换做多线程并发读取总性能也接近8W qps可满足2W qps的查询性能,后续若对读性能有增长需求可考虑从节点开启读权限分摊读压力。在测试中,读延迟 < 1ms。

根据需求论证的结果,利用MongoDB来存储这2亿条记录的方案是可行的。在实际部署当中,MongoDB支持多种方式有主从、副本集、分片。其中副本集相对于主从模式有自动故障迁移的优势,但是其也带来了复杂性和机器成本增加的劣势。
故综合考虑后,选用主从模式进行部署,选用服务器配置为16物理核 + 256G内存 + 2TB硬盘的机器两台搭建主备节点。
其中,从节点开启读权限,一方面应用层在主不可读时可向从节点发起读请求,另一方面前端可根据负载把部分读请求分摊到从节点上。
由于数据的写入求属于离线操作,故只需监控好主从节点的状态,能够及时恢复好服务状态即可。

通过以上实践,即完成了利用MongoDB快速搭建满足上亿级别存储的需求。

MongoDB数据库在教育领域的应用实践 本文章旨在深入探讨MongoDB数据库在教育领域的具体应用实践。通过对MongoDB的特性和教育领域数据特点的结合分析,详细阐述如何利用MongoDB解决教育领域的数据管理和分析问题。范围涵盖了从学生信息管理、课程安排到教学评估等多个教育环节的数据处理。本文将按照以下结构进行阐述:首先介绍MongoDB数据库和教育领域数据管理的相关背景知识;接着讲解核心概念与联系,包括MongoDB的数据模型和与教育数据的关联;然后详细说明核心算法原理和操作步骤,并给出Python代码示例; 阅读详情

相关推荐

MongoDB控制台应用的创建与实践

本文还有配套的精品资源,点击获取 简介:本文介绍了一个基于C#的MongoDB控制台应用程序,它通过命令行界面提供与MongoDB数据库的交互功能。介绍了MongoDB的特性、C#开发环境和MongoDB C#驱动程序的使用。文章强调了数据库操作、查询与聚合、索引管理、复制集与分片以及错误处理和命令行界面设计的核心知识点,并简要提及了版本控制在项目中的重要性。 1. ...

weixin_42186387的博客 999

MongoDB事务的理解和思考

3.2版本开始引入Read Concern,解决了脏读,支持Read Commit 3.6版本引入Session,支持多个请求共享上下文,为后续的事务支持做准备 4.0支持多行事务,但4.0的事务只是个过渡的版本 4.2开始支持多文档事务

李姓门徒 1466

AI Olympics:面向真实决策的不完全信息博弈评测框架

在人工智能落地实践中,传统基准测试(如MMLU、GSM8K)擅长评估知识调用与静态推理能力,却难以衡量模型在动态、模糊、高代价的真实场景中的策略决策水平。AI Olympics正是为弥补这一断层而生——它以扑克、狼人杀等社会性博弈为载体,系统考察模型在不完全信息下的对手建模、欺骗检测、多步序贯推理与代价敏感执行等核心能力。其技术价值在于将‘黑箱决策’转化为可追踪、可归因、可压力测试的动态思维图谱(DTG),支撑金融风控、智能客服、交通调度等强交互业务场景的能力诊断与持续优化。

weixin_30983965的博客 298

MongoDB的使用及思考

1T格式化的文本,使用Mongo,失去了其schema free的特性。 而且 1. 数据膨胀严重 2. 分shard后索引过程较缓慢 3. 底层数据文件IO使用了mmap(),现在看来吃掉很多内存。似乎还有swap颠簸的问题。使系统不够稳定,特别是与其他服务共享一台物理机的时候。 4. 数据均衡时不太稳定 考虑是否用分布式的mysql,搞的健壮一些。

SG的专栏 943

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 249

【深度学习】基于BERT模型的情感分析(附实战完整代码+数据集)

情感分类是一个快速发展的研究领域,尽管众多模型和数据集在二分类任务中显示出很高的准确性,但细粒度的情感分类任务仍然是一个很大改进空间的领域。分析SST-5数据集,Munikar等人的先前工作表明,嵌入工具BERT允许使用简单的模型来实现最新的准确性。

aaaa_hsjsueu的博客 2万+

MongoDB 最佳实践 – 持续更新版

前言 作为MongoDB的一名方案架构师,我的大部分时间都是在和MongoDB的客户和用户交互。在这里,我希望通过一个不断更新的活文章的方式来为大家收集整理一下MongoDB开发及维护时候值得了解或者遵从的一些最佳实践。我非常真切地希望您也可以参与进来,共同维护这个文档,让更多的用户受惠(可以通过文末微信号联系我) 本文包括以下几个方面: - 安全措施 - 部署架构 - 系统优化 -

infi 3490

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 810

MongoDB 入门教程

最近有好多同事都在用mongodb,一个新的面向文档型介于面向对象与关系型之间免费的数据库,据说有拥有比传统数据库更高的性能。趁今天早上有空,就研究了一下。       首先上mongodb官网(www.mongodb.org)看了一下开始文档,下了个windows版的,装了一下,并且写了几个简单的例子,测试了一下,经过测试,mongodb确实好用,也很简单,当然其中也遇到了很多问题,因此

A梦先生的专栏 3125

电磁场仿真:电磁场基础理论_(13).微波技术基础

微波是指频率在300 MHz到300 GHz之间的电磁波。这一频率范围对应的波长为1米到1毫米。

2401_87715305的博客 1318

将GroundDINO、EdgeMTAM和FoundationPose的ONNX模型转换为TensorRT格式并部署到NVIDIA Jetson Orin平台的完整技术指南

TensorRT模型部署指南:从ONNX到Jetson Orin的优化实践 本文详细介绍了将GroundDINO、EdgeMTAM和FoundationPose模型从ONNX格式转换为TensorRT引擎并在Jetson Orin平台部署的全流程。主要内容包括: 环境配置:JetPack 5.1.2+环境搭建,TensorRT工具链安装,存储与交换空间优化 模型转换:动态尺寸处理、自定义算子实现、层融合策略及INT8量化校准 部署优化:引擎序列化加密、多模型并行推理架构设计、CUDA流异步执行 实战技巧。

huanghm88的专栏 437

MongoDB(一)

MongoDB 是一个基于分布式文件存储的数据库。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 MongoDB 将数据存储为一个文档,数据结构由键值(key=&amp;gt;value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 MongoDB创建数据库 格式: use DATABASE_...

zz60708320的博客 250

Python爬虫实战:利用最新技术爬取B站视频信息

本文详细介绍了如何使用Python最新技术构建一个功能完善的B站视频信息爬虫。我们从基础爬取开始,逐步深入到反反爬策略、异步处理、数据存储和分析等高级主题。更智能的反反爬策略:使用机器学习识别验证码更高效的分布式架构:结合Kubernetes实现弹性伸缩实时数据管道:将爬取的数据实时推送到数据分析平台多平台支持:扩展支持抖音、YouTube等其他视频平台。

2201_76125261的博客 1040

MongoDB技术实践与应用案例征集中

为了邀请更多用户朋友分享自己的实践与见解,原定于2021年11月30日截止的MongoDB技术实践与应用案例征集活动截稿现已延期至2021年12月20日。

MongoDB中文社区 298

Linux内核配置选项详解及编译过程

在内核编译完成后,可以通过重启系统并选择新编译的内核来使用它。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。可以选择需要的网络协议和功能,并根据需要启用或禁用相应的选项。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。

TechGlide的博客 747

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【MCP探索实践】MCP MongoDB Server:让LLM与MongoDB无缝交互

MCP MongoDB Server是一个基于Model Context Protocol(模型上下文协议)的服务器,它允许语言模型(LLM)与MongoDB数据库进行交互。通过标准化的接口,MCP MongoDB Server提供了检查集合模式和执行MongoDB操作的能力。无论是查询文档、执行聚合管道,还是创建索引,MCP MongoDB Server都能轻松应对。

寻道AI,探索AI无限可能! 3646

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MongoDB技术实践与应用案例征集活动

B中文社区从成立以来就认识到博客的价值,专注于建设国内最大的MongoDB技术交流平台(mongoing.com​)。10月13日,社区开启MongoDB技术实践与应用案例征集活动,面向广大MongoDB用户朋友收录MongoDB技术实践经验与应用案例,将技术实践分享给社区用户,提高用户对MongoDB应用场景及技术的了解。 在征集过程我们也将挖掘MongoDB深度用户,促进技术传播与交流,为更多MongoDB数据库用户提供技术应用参考,同时为MongoDB深度用户提供分享平台,建立自身在MongoD..

MongoDB中文社区 294

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MongoDB 中文文档指南及应用实践

MongoDB 中文文档指南及应用实践 一、项目介绍 MongoDB是一种基于分布式文件存储的数据库系统,以其高性能、可扩展性、易于部署和使用的特性著称。它提供了高效的数据存储能力,对数据的操作变得极为简便。本项目旨在提供详细的MongoDB中文文档,覆盖从安装到高级功能运用的各个方面。 关键特性: 高性能:快速读写速度,适用于大量数据处理。 可扩展性:支持水平和垂直扩展,满足不同规模的应用需求...

gitblog_00740的博客 917

MongoDB 入门及实践

MongoDB 是一个开源的文档数据库管理系统,属于 NoSQL 数据库的一种类型。它使用 JSON-BSON(Binary JSON)格式来存储数据,提供了高性能、高可用性和易于扩展的特点。MongoDB 支持灵活的文档结构,允许不同的数据存储在同一集合中,并提供丰富的查询语言来进行数据操作。

weixin_42564451的博客 1676

MongoDB索引原理及实践

MongoDB索引原理及实践

dba成长之路 2802

Dataherald MongoDB存储:NoSQL数据库的应用实践

在当今数据驱动的时代,企业面临着从海量结构化数据中提取有价值信息的挑战。Dataherald作为一个自然语言到SQL的转换引擎,通过AI技术让业务用户能够用自然语言查询数据库。而在这个强大的引擎背后,MongoDB作为NoSQL数据库发挥着关键作用,为整个系统提供高效、灵活的数据存储解决方案。 本文将深入探讨Dataherald项目中MongoDB的应用实践,从架构设计到具体实现,为您展示NoS...

gitblog_00572的博客 1052

2021MongoDB技术实践与应用案例征集活动获奖通知

MongoDB中文社区携手MongoDB官方和Tapdata开展MongoDB技术实践与应用案例征集活动圆满结束。我们从创新性和应用价值的维度进行评选,评出本次案例征集活动最佳创新案例和优秀应用案例。 下面是获奖名单,恭喜获奖的各位朋友!接下来我们也会在社区平台上分享部分案例,以飨读者。 最佳应用案例奖: 《纯MongoDB实现中文全文搜索》作者:赖勇浩 最佳优秀案例奖: 《multi-key和wildCard索引场景比较》作者:雷彻 《MongoDB运维管理-WireTiger

MongoDB中文社区 1627

MongoDB入门以及MongoDB项目实践

MongoDB通过key-value的形式存储 数据,而value的值可以是字符串,也可以是文档。下面我们将从一下几个方面进行商讨交流。

猫猫学Java - 的博客 1551

MongoDB 高性能应用场景与实践

MongoDB 以其高性能和灵活性成为了众多企业的首选数据库解决方案。无论是电商、内容管理还是物联网,MongoDB 都能提供卓越的支持。通过合理的数据模型设计、充分的索引利用以及持续的监控与调优,我们可以最大化 MongoDB 的性能优势,为企业创造更大的价值。版权声明:本文由作者原创,转载请注明出处。```

2501_90690929的博客 1719

【译】MongoDB 性能最佳实践指南

MongoDB 是面向开发高性能应用程序的现代开发人员的主要 NoSQL 文档数据库。MongoDB 采用类似 JSON 的文档,以水平扩展和负载平衡著称,为开发人员提供了定制化和可扩展性之间的绝佳平衡。但是,与其他高性能工具一样,MongoDB 在熟悉业务的专家手中才能发挥最佳性能。性能问题可能表明数据库没有尽最大努力工作,而特定的优化可以带来更好的性能。在本篇文章中,我们将重点介绍如何使用 MongoDB 实现大规模性能。请记住,我们要介绍的最佳实践并不是详尽无遗的(这需要更长的篇幅)。

markvivv随笔 2038
上一篇: 软件设计的思考
下一篇: Linux磁盘管理之LVM与RAID(转载)
EricGogh
博客等级 码龄19年 24粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值