文章分类 -  MongoDB4.X+新特性

摘要:分片集群搭建 搭建配置服务器复制集: 早期版本的配置服务器只要一台即可 最新版本 MongoDB 要求配置服务器必须是一个复制集 搭建分片服务器复制集: 用于保存数据的多台电脑 搭建路由服务器: 用于建立配置服务器和分片服务器之间的关系 搭建配置服务器集群 编写配置文件 注意这里是下载了一台全新的 阅读全文
posted @ 2022-10-23 23:38 BNTang 阅读(280) 评论(1) 推荐(0)
摘要:!> 分片查询注意事项 用户的请求会发送给 mongos 路由服务器, 路由服务器会根据查询条件去配置服务器查询对应的数据段和属于哪个分片服务器, 如果用户查询的条件是分片片键字段, 那么路由服务器会返回保存在那一台分片服务器上, 路由服务器就会去对应的分片服务器获取数据, 并将取到的数据返回给用户 阅读全文
posted @ 2022-10-23 23:33 BNTang 阅读(425) 评论(1) 推荐(0)
摘要:数据段分裂 分片的主要目的就是将数据分配到不同的服务器中保存, 提升服务器的容量, 让数据更加的均衡, 更有效的降低服务器的压力, 但是随着时间推移, 某些数据段中保存的数据会越来越多, 所以为了保证个分片均衡, 当某个数据段数据过多或体积过大的时候, 系统就会自动在下一次操作这个数据段时(新增/更 阅读全文
posted @ 2022-10-23 23:28 BNTang 阅读(103) 评论(0) 推荐(0)
摘要:如何选择片键 使用分片的目的是为了将数据存储到不同的服务器上, 所以在选择片键的时候,应该选择取值范围更广的字段作为片键,因为如果取值范围太小, 那么划分出来的数据段就太少, 那么分配到不同服务器的概率就越小, 例如:取值如果只有 true 或 false, 那么就只能划分出两个数据段, 那么也就最 阅读全文
posted @ 2022-10-23 23:13 BNTang 阅读(134) 评论(0) 推荐(0)
摘要:?> 那么紧接着上一篇的文章内容,如何将数据存储到不同的分片服务器上的? 答:通过分片片键 什么是分片片键 可以将文档的一个或多个字设置成分片片键 设置完分片片键后, MongoDB 会自动对字段可能的取值进行划分, 划分出一个个的数据段 划分完数据段之后, MongoDB 会自动决定哪些分片服务器 阅读全文
posted @ 2022-10-23 11:25 BNTang 阅读(129) 评论(0) 推荐(0)
摘要:分片集群结构 分片服务器: 用于保存集合中的一部分数据 配置服务器: 用于保存分片数据的数据段和数据范围 mongos 路由(路由服务器): 用于分发请求到保存对应数据的分片服务器上 分片集群执行流程 用户发送请求到 'mongos路由' -> 'mongos路由' 去 '配置服务器' 查询数据在哪 阅读全文
posted @ 2022-10-23 11:18 BNTang 阅读(34) 评论(0) 推荐(0)
摘要:什么是复制集 '多台','保存了相同数据' 的MongoDB服务器组成 复制集解决的问题 高可用性, 服务器宕机不会影响我们继续使用 数据安全性,服务器损坏数据不会丢失 复制集不能解决的问题 服务器容量的问题 我们都知道一台服务器的容量是有上限的,所以我们只能通过增加服务器的台数来提升容量。 复制集 阅读全文
posted @ 2022-10-23 11:12 BNTang 阅读(28) 评论(0) 推荐(0)
摘要:MongoDB 复制集搭建 下载 MongoDB: https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6.zip 解压 MongoDB 安装包 在安装目录下新建 data/conf/log 3个文件夹,在conf文件 阅读全文
posted @ 2022-10-17 23:58 BNTang 阅读(153) 评论(0) 推荐(0)
摘要:投票节点 ?> 投票节点就是不保存任何数据, 只参与投票的节点 无论是初始化同步, 还是同步写库记录, 其实都会消耗服务器性能, 所以在企业开发中并不是副节点越多越好,所以在保证高可用性、数据库安全性的同时, 为了提升服务器的性能,我们还可以添加投票节点。 投票节点不保存任何数据, 所以就不存在同步 阅读全文
posted @ 2022-10-15 22:19 BNTang 阅读(61) 评论(0) 推荐(0)
摘要:初始化同步 将一个新的节点加入到复制集中时, 就需要进行初始化同步 初始化同步会先清空自己所有的内容, 保证将来自己和主节点一模一样 初始化同步会将主节点中现有所有的 '数据库', '集合', '文档', '索引' 全部拷贝过来 但是在拷贝的过程中主节点仍然可能会做一些其它操作, 新增一些其它的数据 阅读全文
posted @ 2022-09-24 17:44 BNTang 阅读(75) 评论(0) 推荐(0)
摘要:选举规则 一旦发现主节点没有响应 / 发送心跳请求, 那么副节点就会认为主节点挂了 一旦发现主节点挂了, 任意一个副节点都可以发起选举 (发起选举的节点我们称之为 候选节点, 每一个节点内部都有一个 选举计数器) 发起选举的节点会给自己先投一票, 然后将自己的票数依次发送给其它节点 其它节点收到投票 阅读全文
posted @ 2022-09-24 17:35 BNTang 阅读(50) 评论(0) 推荐(0)
摘要:MongoDB 复制集特点 !> 复制集中必须有一个主节点 主节点主要负责写入数据和读取 复制集中除了主节点以外的节点我们称之为 副节点: 副节点默认情况下只能读取数据, 不能写入数据 副节点主要负责从主节点不断复制数据 复制集中所有的节点都会不断的相互发送心跳请求: 心跳请求的目的是相互检查节点的 阅读全文
posted @ 2022-09-24 16:23 BNTang 阅读(44) 评论(0) 推荐(0)
摘要:MongoDB 高可用性 如果所有用户都从同一台MongoDB服务器上读写数据, 那么如果这台MongoDB服务器宕机了, 用户就不能进行读写了 如果我们有多台MongoDB服务器, 并且每台服务器中存储的内容都相同,那么即使有一台服务器宕机了, 用户依然可以进行读写数据, 因为用户还可以继续使用其 阅读全文
posted @ 2022-09-12 10:39 BNTang 阅读(32) 评论(0) 推荐(0)
摘要:本文是紧接着 Mongoose 的增加与查询的下集,所以在这里废话不多说直接上内容。 修改 根据条件更改: 第一个参数:需要更新的条件 第二个参数:更新的内容 第三个参数:更新的结果返回值 User.update({name: 'ls'}, {$set: {age: 888}}, (err, doc 阅读全文
posted @ 2022-09-12 10:31 BNTang 阅读(421) 评论(0) 推荐(0)
摘要:本文的内容是基于 Mongoose 开篇继续延续的,需要将 mongoose 的环境搭建好,我这里就直接上的是进行操作 MongoDB 的代码。 增加 单个增加: User.create({name: 'test666', age: 666}, (err, result) => { if (!err 阅读全文
posted @ 2022-09-11 17:30 BNTang 阅读(118) 评论(0) 推荐(0)
摘要:Mongoose 概述 Mongoose和MySQL的Sequelize一样, 都是NodeJS中操作数据库的对象模型工具 Mongoose使用面向对象的思想对原生的mongoDB命令进行了封装 ?> 官方文档: http://www.mongoosejs.net/ https://mongoose 阅读全文
posted @ 2022-09-10 20:39 BNTang 阅读(69) 评论(0) 推荐(0)
摘要:树形结构 在 MongoDB 中我们除了可以使用 '内嵌式结构' 和 '规范式结构' 来表示数据的关系以外, 由于MongoDB数据的灵活性, 我们还可以使用'树形结构'来表示数据之间的关系。 树形结构概述 Database | | | Relational No-Relational | | | 阅读全文
posted @ 2022-09-10 18:50 BNTang 阅读(675) 评论(0) 推荐(0)
摘要:文档多对多关系 一个学生有多个老师 一个老师有多个学生 内嵌式结构 学生与老师: db.students.insert([{name:'zs', teachers:[{name:'BNTang'}, {name:'Jonathan_Lee'}]}, {name:'ls', teachers:[{na 阅读全文
posted @ 2022-09-10 18:27 BNTang 阅读(217) 评论(0) 推荐(0)
摘要:文档一对多关系 一个人有多本书 内嵌式结构: db.person.insert({ name:'zs', age:'18', books:[{ name:'玩转HTML', price: 88 }, { name:'玩转CSS', price: 88 }] }) db.person.find({na 阅读全文
posted @ 2022-09-04 13:56 BNTang 阅读(123) 评论(0) 推荐(0)
摘要:文档一对一关系 一个人有一张身份证。 内嵌式结构: db.person.insert({ name:'zs', age:'18', card:{ num:'420626200002023556', date: 88 } }) db.person.find({name:'zs'}) 优势 一次查询就能 阅读全文
posted @ 2022-09-04 13:56 BNTang 阅读(84) 评论(0) 推荐(0)