
MongoDB篇
文章平均质量分 96
MongoDB篇
胡尚
只要学不死就往死里学
展开
-
MongoDB change stream 详解
Change Stream指数据的变化事件流,MongoDB从3.6版本开始提供订阅数据变更的功能。Change Stream 是 MongoDB 用于实现变更追踪的解决方案,类似于关系数据库的触发器,但原理不完全相同:**Change Stream 是基于 oplog 实现的,提供推送实时增量的推送功能。**它在 oplog 上开启一个 tailable cursor 来追踪所有复制集上的变更操作,最终调用应用中定义的回调函数。被追踪的变更事件主要包括:从MongoDB 6.0开始,change stre原创 2024-08-01 15:26:19 · 1367 阅读 · 0 评论 -
MongoDB性能调优
默认情况下该功能是关闭的,对某个业务库开启Profiler模块之后,符合条件的慢操作日志会被写入该库的system.profile集合中。Profiler模块所记录的日志都是已经发生的事情,db.currentOp()命令则与此相反,它可以用来查看数据库当前正在执行的一些操作。想象一下,当数据库系统的CPU发生骤增时,我们最想做的无非是快速找到问题的根源,这时db.currentOp就派上用场了。,以及多个分片的压力分布。该功能的设计非常类似于Linux系统中的vmstat命令,可以呈现出实时的状态变化。原创 2024-08-01 15:23:33 · 1616 阅读 · 0 评论 -
MongoDB开发规范与数据建模
那么到底选择哪个方案更合理呢?从理论分析上可以看出,不管是小时存储,还是分钟存储,都是利用了MongoDB的信息聚合的能力。原创 2024-08-01 15:18:20 · 1439 阅读 · 0 评论 -
MongoDB多文档事务详解
原子性(atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。隔离性(isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。持久性(durability):已被提交的事务对数据库的修改应该是永久性的。在MongoDB中,对单文档的操作是原子的。原创 2024-07-31 15:24:29 · 1390 阅读 · 0 评论 -
MongoDB两地三中心集群架构设计、全球多写集群架构设计
搭建简单,使用复制集机制,无需第三方软件使用Retryable Writes以后,即使出现数据中心故障,对前端业务没有任何中断 (Retryable Writes 在4.2以后就是默认设置)原创 2024-07-30 14:28:22 · 1199 阅读 · 0 评论 -
MongoDB分片集群的搭建与架构
当数据量非常大时,复制集提高了读的性能,而分片就提高了写的性能分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。MongoDB复制集实现了数据的多副本复制及高可用,但是一个复制集能承载的容量和负载是有限的。存储容量需求超出单机的磁盘容量。活跃的数据集超出单机内存容量,导致很多请求都要从磁盘读取数据,影响性能。写IOPS超出单个MongoDB节点的写服务能力。分片集群架构需要为各个分片节点的Primary进行复制集。原创 2024-07-30 12:49:37 · 1055 阅读 · 0 评论 -
MongoDB复制集底层原理
上述场景导致,Primary上的每次往数组里插入一个新元素(请求大概几百字节),oplog里就要记录整个数组的内容,Secondary同步时会拉取oplog并重放,Primary到Secondary同步oplog的流量是客户端到Primary网络流量的上百倍,导致主备间网卡流量跑满,而且由于oplog的量太大,旧的内容很快被删除掉,最终导致Secondary追不上,转换为RECOVERING状态。**对于写入的业务数据来说,如果已经被复制到了复制集的大多数节点,则可以避免被回滚的风险。原创 2024-07-29 15:23:48 · 957 阅读 · 0 评论 -
MongoDB复制集/集群搭建详解
Mongodb复制集(Replication Set)包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保证数据一致性。数据写入时将数据迅速复制到另一个独立节点上在接收写入的节点发生故障时自动选举出一个新的替代节点数据分发: 将数据从一个区域复制到另一个区域,减少另一个区域的读延迟读写分离: 不同类型的压力分别在不同的节点上执行。原创 2024-07-29 12:57:52 · 1956 阅读 · 0 评论 -
MongoDB索引详解、explain执行计划详细介绍
如果要定位某一行数据(key/value)的位置,可以先通过block的位置找到此page(相对于文件起始位置的偏移量),再通过page找到行数据的相对位置,最后可以得到行数据相对于文件起始位置的偏移量offsets。B+ Tree中的leaf page包含一个页头(page header)、块头(block header)和真正的数据(key/value),其中页头定义了页的类型、页中实际载荷数据的大小、页中记录条数等信息;通过对规划器隐藏索引,用户可以在不实际删除索引的情况下评估删除索引的潜在影响。原创 2024-07-28 22:39:43 · 1014 阅读 · 0 评论 -
MongoDB聚合操作详解
数组列存放的数据是来自被Join集合的适配文档,如果没有,集合为空(即 为[ ])操作具有两个阶段:处理每个文档并向每个输入文档发射一个或多个对象的map阶段,以及reduce组合map操作的输出阶段。投影操作, 将原始字段投影成指定名称,也就是mysql中的字段别名功能。筛选管道操作和其他管道操作配合时候时,尽量放到开始阶段,这样可以减少后续管道操作符要操作的文档数,提升效率。操作只会在过程中维持前n个结果,其中n是指定的限制,而MongoDB只需要将n个项存储在内存中。原创 2024-07-28 18:58:12 · 965 阅读 · 0 评论 -
MongoDB整合SpringBoot
注意关注MongoDB服务端和客户端之间的版本兼容问题:https://docs.spring.io/spring-data/mongodb/reference/preface.html。如果更新后的结果和更新前的结果是相同,返回0。连接配置参考文档:https://docs.mongodb.com/manual/reference/connection-string/的把多个条件组合在一起,就可以轻松地将多个方法标准和查询连接起来,方便我们操作查询语句。是标准查询的接口,可以引用静态的。原创 2024-07-28 18:49:07 · 989 阅读 · 0 评论