目录
一、低效的分片键
1.1 分布差
1.2 缺乏局部性
3. 无法拆分的块
二、理想的分片键
首页 数据库 mysql教程 【MongoDB】在windows平台下mongodb的分片集群(五)

【MongoDB】在windows平台下mongodb的分片集群(五)

Jun 07, 2016 pm 04:09 PM
mongodb windows 分片

本篇接着上面的四篇继续讲述在window平台下mongodb的分片集群搭建。在分片集群中也照样可以创建索引,创建索引的方式与在单独数据库中创建索引的方式一样。因此这不再多说。本篇主要聚焦在分片键的选取问题上。 分片键通俗来说就是分割海量数据的标记符。 如

本篇接着上面的四篇继续讲述在window平台下mongodb的分片集群搭建。在分片集群中也照样可以创建索引,创建索引的方式与在单独数据库中创建索引的方式一样。因此这不再多说。本篇主要聚焦在分片键的选取问题上。

分片键通俗来说就是分割海量数据的标记符。 如果更高效的划分海量数据往往依赖于分片键的选择。 分片键选得不好,应用程序就无法利用分片集群所提供的诸多优势。在这种情况下,查询和插入得系能都回显着下降。

一、低效的分片键

1.1 分布差

BSON对象ID是每个mongodb文档的默认主键。所有的对象ID最重要的组成部分是时间戳,也就是说对象ID是升序的,遗憾的是升序对于分片键来说是很糟糕的。由于分片是基于范围的。使用升序的分片键后,所有最近插入的文档会落在某个很小的连续范围内。如果想让插入负载分不到多个分片上,就不能使用升序分片键,应需某些随机性更强发的的东西。

1.2 缺乏局部性

升序分片键由明确的方向,完全随机的分片键根部没有方向。前者无法分散插入,而后者则可能将插入分散太慢。假设分片集合中每个文档都包含一个MD5,而MD5字段就是分片键。因为MD5随着文档的不同而进行变化。所有该分片键能确保插入的文档均匀分布在集群的分片上。但是有个问题,对于每个分片的MD5字段索引进行的插入过程中,索引中每个虚拟内存分页都有可能被访问到。这就意外着有可能所有的索引和数据都装在内存中。从而超出了物理内存。

3. 无法拆分的块

随机分片键和升序分片键都不好用,那么就尝试一下粗粒度分片键。举个例子,例如用户Id上传了100张照片,那么分片键就是用户ID,第一原因对于每张照片来说具有随机性,同时可以通过局部性引用来提升效率。但有个问题就是当用户ID上传的照片太大时候,以至于不得不分块。而系统又不能把一个用户的照片拆分成多个快。

二、理想的分片键

通过上面分析,理想的分片键应该满足:
1. 将插入数据均匀分布到各个分片上 2.保证crud操作能够利用局部性 3. 有足够的粒度进行块划分
举个例子:创建一个网站分析系统,一个不错的数据模型就是每个网页每月保存一个文档,随后在那个文档中保持该月每天的数据,每次访问某个页面增加一些计数器字段。下面是于分片键有关的实例分析文档:
{ _id: objectId("34535353245eraf32223sdarwe") domin:"org.mongod" url:"download" perid:"2011-12" }
最简单的分片就是包含每个网页的域名,随后是url{domain:1, url:1}所有来自指定域的页面通常都落在一个分片上,但是一些特殊的域拥有大量页面,在必要时候仍会被拆分到分片上。

备注:本篇内容大多引自《MongoDB in action》 Kyle Banker着
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

可以在 Windows 7 上安装 mysql 吗 可以在 Windows 7 上安装 mysql 吗 Apr 08, 2025 pm 03:21 PM

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

MySQL安装在特定系统版本上报错的解决途径 MySQL安装在特定系统版本上报错的解决途径 Apr 08, 2025 am 11:54 AM

MySQL安装报错的解决方法是:1.仔细检查系统环境,确保满足MySQL的依赖库要求,不同操作系统和版本需求不同;2.认真阅读报错信息,根据提示(例如缺少库文件或权限不足)采取对应措施,例如安装依赖或使用sudo命令;3.必要时,可尝试源码安装并仔细检查编译日志,但这需要一定的Linux知识和经验。最终解决问题的关键在于仔细检查系统环境和报错信息,并参考官方文档。

无法从终端访问 mysql 无法从终端访问 mysql Apr 08, 2025 pm 04:57 PM

无法从终端访问 MySQL 可能是由于:MySQL 服务未运行;连接命令错误;权限不足;防火墙阻止连接;MySQL 配置文件错误。

mysql 无法连接到本地主机怎么解决 mysql 无法连接到本地主机怎么解决 Apr 08, 2025 pm 02:24 PM

无法连接 MySQL 可能是由于以下原因:MySQL 服务未启动、防火墙拦截连接、端口号错误、用户名或密码错误、my.cnf 中的监听地址配置不当等。排查步骤包括:1. 检查 MySQL 服务是否正在运行;2. 调整防火墙设置以允许 MySQL 监听 3306 端口;3. 确认端口号与实际端口号一致;4. 检查用户名和密码是否正确;5. 确保 my.cnf 中的 bind-address 设置正确。

MySQL安装时提示缺少依赖项如何解决 MySQL安装时提示缺少依赖项如何解决 Apr 08, 2025 pm 12:00 PM

MySQL安装失败通常因缺少依赖项导致。解决方法:1.使用系统包管理器(如Linux的apt、yum或dnf,Windows的VisualC Redistributable)安装缺失的依赖库,例如sudoaptinstalllibmysqlclient-dev;2.仔细检查错误信息,逐一解决复杂的依赖关系;3.确保包管理器源配置正确,能访问网络;4.对于Windows,下载安装必要的运行库。养成阅读官方文档和善用搜索引擎的习惯,能有效解决问题。

Navicat查看MongoDB数据库密码的方法 Navicat查看MongoDB数据库密码的方法 Apr 08, 2025 pm 09:39 PM

直接通过 Navicat 查看 MongoDB 密码是不可能的,因为它以哈希值形式存储。取回丢失密码的方法:1. 重置密码;2. 检查配置文件(可能包含哈希值);3. 检查代码(可能硬编码密码)。

mysql怎么复制粘贴 mysql怎么复制粘贴 Apr 08, 2025 pm 07:18 PM

MySQL 中的复制粘贴包含以下步骤:选择数据,使用 Ctrl C(Windows)或 Cmd C(Mac)复制;在目标位置右键单击,选择“粘贴”或使用 Ctrl V(Windows)或 Cmd V(Mac);复制的数据将插入到目标位置,或替换现有数据(取决于目标位置是否已存在数据)。

mysql下载时提示磁盘写入错误如何处理 mysql下载时提示磁盘写入错误如何处理 Apr 08, 2025 am 11:51 AM

MySQL下载提示磁盘写入错误,解决方案如下:1.检查磁盘空间是否不足,清理空间或更换更大磁盘;2.使用磁盘检测工具(如chkdsk或fsck)检查并修复磁盘错误,必要时更换硬盘;3.检查目标目录权限,确保用户账户拥有写入权限;4.更换下载工具或网络环境,使用下载管理器恢复中断下载;5.暂时关闭反病毒软件或防火墙,下载完成后重新启用。通过系统排查这些方面,即可解决问题。

See all articles