mongoDB回顾笔记(一)

mongoDB学习要点回顾

  • 1、哪些mongoDB相关文章介绍不错?
  • 2、mongoDB数据库默认开启分片功能吗?
  • 3、分片键如何选择?
  • 4、分片策略
  • 5、多字段的组合分片设置,两者区别?
  • 6、MongoDB chunk和分片有什么区别
  • 7、造成jumboChunk原因?
  • 8、关联内容都塞到文档中,避免多次查询关联?
  • 9、mongoDB聚合分析
  • 10、全文检索
  • 11、MongoDB MapReduce
  • 12、TB级数据存储在副本集集群部署?

1、哪些mongoDB相关文章介绍不错?

个人无意看到杨亚洲的mongoDB系列相关文章,觉得挺不错

2、mongoDB数据库默认开启分片功能吗?

默认不开启

3、分片键如何选择?

可参考阿里云mongoDB云产品分片集群介绍,里面介绍到如何选择Shard Key。

场景举例:
某物联网应用使用MongoDB分片集群存储海量设备的工作日志。如果设备数量在百万级别,设备每10秒向MongoDB汇报一次日志数据,日志包含设备ID(deviceId)和时间戳(timestamp)信息。应用最常见的查询请求是查询某个设备某个时间内的日志信息。

查询需求举例:
查询某个设备某个时间内的日志信息。

方案一(推荐):组合设备ID和时间戳作为Shard Key,进行范围分片。
写入能均分到多个shard。
同一个设备ID的数据能根据时间戳进一步分散到多个chunk。
根据设备ID查询时间范围的数据,能直接利用(deviceId,时间戳)复合索引来完成。

另三种缺点明显
方案二: 时间戳作为Shard Key,进行范围分片。
所有设备新的写入为连续的时间戳,都会请求到同一个分片,写分布不均且压力负载大。

方案三: 时间戳作为Shard Key,进行哈希分片。
虽分布均衡,查询分散到各个分片,效率低。

方案四:设备ID作为Shard Key,进行哈希分片。
单设备的数据只能在一个分片上,没法进一步的细分。方案一算是该方案的进一步优化。
容易造成jumbo chunk。

4、分片策略

范围分片:对分片键值进行范围分片
哈希分片:对分片键值算出hash值,取余

5、多字段的组合分片设置,两者区别?

复合分片键:
sh.shardCollection(“yourDatabase.sensorData”, { “deviceId”: 1, “timestamp”: 1 });
适用场景:多维查询、时间序列数据
写入性能:可能会出现热点问题

哈希分片键:
sh.shardCollection(“yourDatabase.sensorData”, { “deviceId”: “hashed”, “timestamp”: 1 });
适用场景:高写入频率、均匀分布
写入性能:对写入性能友好,数据均匀分布

组合索引创建:
一般还要创建组合索引 (deviceId,timestamp);

6、MongoDB chunk和分片有什么区别

数据块(chunks):MongoDB 将数据划分为多个块(chunks),每个块包含一个范围的数据。
分片功能启用时,分片服务器节点增加或减少时,涉及到chunk块的迁移,以便达到新的均衡分布。

7、造成jumboChunk原因?

一个最小的chunk只包含一个唯一的shardKey的记录数据,这样的chunk不可以再进行分裂。shardKey选择不合理才会产生jumboChunk。
合理选择shardKey是关键,尽量避免选择数据记录中值频繁出现的字段(例如设备ID)作为shardKey,可以加上时间戳,设置组合键(设备ID HASHED, TIMESTAMP)。

8、关联内容都塞到文档中,避免多次查询关联?

要注意文档过大问题,过大时需要拆分成多个集合存储。

9、mongoDB聚合分析

聚合函数统计, 分组求和、平均值等

10、全文检索

可分词在多个字段内进行检索,与Elasticsearch比较,检索较弱

11、MongoDB MapReduce

MapReduce提供了强大的数据处理能力,用户可以根据需要自定义Map和Reduce函数,处理复杂的数据聚合和分析任务;
MongoDB支持分布式MapReduce,能够在多台服务器上并行处理数据,提高处理效率;
不需要将数据导出到其他处理平台,可以直接在MongoDB中进行数据处理,减少了数据迁移的复杂性。

缺点:
尽管MapReduce可以处理大规模数据,但在某些情况下,性能可能不如其他数据处理方式(如聚合框架);
自定义编写Map和Reduce函数有点复杂;
调试Map和Reduce函数可能比较困难。

12、TB级数据存储在副本集集群部署?

应该可以,看业务实际压测情况,不一定要分布式分片集群部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920647.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mesh路由组网

Mesh无线网格网络,多跳(multi-hop)网络,为解决全屋覆盖信号,一般用于家庭网络和小型企业 原理 网关路由器(主路由,连接光猫),Mesh路由器(子路由,…

基于Windows系统用C++做一个点名工具

目录 一、前言 二、主要技术点 三、准备工作 四、主界面 1.绘制背景图 2、实现读取花名册功能 3.实现遍历花名册功能 4.实现储存功能 4.1创建数据库 4.2存储数据到数据库表 4.3读取数据库表数据 一、前言 人总是喜欢回忆过去,突然回忆起…

11.9K Star!强大的 Web 爬虫工具 FireCrawl:为 AI 训练与数据提取提供全面支持

在这个信息爆炸的时代,数据就是力量。尤其是对于开发者来说,获取并利用好数据,就意味着拥有更多的主动权和竞争力。 无论是用来训练大语言模型,还是用于增强检索生成(RAG),数据都扮演着至关重要…

云原生之k8s服务管理

文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度:…

前端面试题整理-前端异步编程

1. 进程、线程、协程的区别 在并发编程领域,进程、线程和协程是三个核心概念,它们在资源管理、调度和执行上有着本质的不同。 首先,进程是操作系统进行资源分配和调度的独立单位(资源分配基本单位),每个进…

动静态库:选择与应用的全方位指南

目录 1 软链接 1.1 软链接的建立方式和观察现象 1.2 软链接的原理 2 硬链接 2.1 硬链接的建立方式和观察现象 2.2 硬链接的本质 2.3 我们用户不能给目录建立硬链接 3. 动静态库复习 4 动静态库的制作 4.1 静态库的制作与使用 4.1.2 打包 4.1.3 静态库的使用 4.2 动…

【ROS2】多传感器融合、实现精准定位:robot_localization

1、简述 robot_localization在SLAM建图、导航中常用于将多个传感器融合(IMU、里程计、深度相机、GPS等),以提高定位精度,为机器人提供了在三维空间中的非线性状态估计 robot_localization包含两个状态估计节点: ekf_localization_node:扩展卡尔曼滤波(EKF),缺点是非…

极客大挑战2024wp

极客大挑战2024wp web 和misc 都没咋做出来&#xff0c;全靠pwn✌带飞 排名 密码学和re没做出几个&#xff0c;就不发了 web ez_pop 源代码 <?php Class SYC{public $starven;public function __call($name, $arguments){if(preg_match(/%|iconv|UCS|UTF|rot|quoted…

40分钟学 Go 语言高并发:并发下载器开发实战教程

并发下载器开发实战教程 一、系统设计概述 1.1 功能需求表 功能模块描述技术要点分片下载将大文件分成多个小块并发下载goroutine池、分片算法断点续传支持下载中断后继续下载文件指针定位、临时文件管理进度显示实时显示下载进度和速度进度计算、速度统计错误处理处理下载过…

李宏毅机器学习课程知识点摘要(1-5集)

前5集 过拟合&#xff1a; 参数太多&#xff0c;导致把数据集刻画的太完整。而一旦测试集和数据集的关联不大&#xff0c;那么预测效果还不如模糊一点的模型 所以找的数据集的量以及准确性也会影响 由于线性函数的拟合一般般&#xff0c;所以用一组函数去分段来拟合 sigmoi…

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发&#xff0c;提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE&#xff0c;可用于在各种应用程序…

本地Docker部署开源WAF雷池并实现异地远程登录管理界面

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何快速将Excel数据导入到SQL Server数据库

工作中&#xff0c;我们经常需要将Excel数据导入到数据库&#xff0c;但是对于数据库小白来说&#xff0c;这可能并非易事&#xff1b;对于数据库专家来说&#xff0c;这又可能非常繁琐。 这篇文章将介绍如何帮助您快速的将Excel数据导入到sql server数据库。 准备工作 这里&…

[产品管理-91]:产品经理的企业运营的全局思维-1

目录 前言&#xff1a;企业架构图 产品经理的企业运营全局思维 1、用户 - 用户价值与体验&#xff1a;真正的需求&#xff0c;真正的问题&#xff0c;一切的原点 2、大势 - 顺应宏观大势&#xff1a;政策趋势、行业趋势、技术趋势 3、市场 - 知己知彼&#xff1a;市场调研…

简单实现vue2响应式原理

vue2 在实现响应式时&#xff0c;是根据 object.defineProperty() 这个实现的&#xff0c;vue3 是通过 Proxy 对象实现&#xff0c;但是实现思路是差不多的&#xff0c;响应式其实就是让 函数和数据产生关联&#xff0c;在我们对数据进行修改的时候&#xff0c;可以执行相关的副…

论文解析:EdgeToll:基于区块链的异构公共共享收费系统(2019,IEEE INFOCOM 会议);layer2 应对:频繁小额交易,无交易费

目录 论文解析:EdgeToll:基于区块链的异构公共共享收费系统(2019,IEEE INFOCOM 会议) 核心内容概述 核心创新点原理与理论 layer2 应对:频繁小额交易,无交易费 论文解析:EdgeToll:基于区块链的异构公共共享收费系统(2019,IEEE INFOCOM 会议) 核心内容是介绍了一个…

基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型

本系统是基于Python Django框架构建的“Boss直聘”数据采集与分析预测系统&#xff0c;旨在通过技能匹配的方式对招聘信息进行分析与预测&#xff0c;帮助求职者根据自身技能找到最合适的职位&#xff0c;同时为招聘方提供更精准的候选人推荐。系统的核心预测模型基于职位需求技…

SemiDrive E3 硬件设计系列---唤醒电路设计

一、前言 E3 系列芯片是芯驰半导体高功能安全的车规级 MCU&#xff0c;对于 MCU 的硬件设计部分&#xff0c;本系列将会分模块进行讲解&#xff0c;旨在介绍 E3 系列芯片在硬件设计方面的注意事项与经验&#xff0c;本文主要讲解 E3 硬件设计中唤醒电路部分的设计。 二、RTC 模…

Leetcode198. 打家劫舍(HOT100)

代码&#xff1a; class Solution { public:int rob(vector<int>& nums) {int n nums.size();vector<int> f(n 1), g(n 1);for (int i 1; i < n; i) {f[i] g[i - 1] nums[i - 1];g[i] max(f[i - 1], g[i - 1]);}return max(f[n], g[n]);} }; 这种求…

一文探究48V新型电气架构下的汽车连接器

【哔哥哔特导读】汽车电源架构不断升级趋势下&#xff0c;48V系统是否还有升级的必要&#xff1f;48V新型电气架构将给连接器带来什么改变&#xff1f; 在插混和纯电车型逐渐普及、800V高压平台持续升级的当下&#xff0c;48V技术还有市场吗? 这个问题很多企业的回答是不一定…