首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在mongodb中散列分片键是如何工作的?

在mongodb中散列分片键是如何工作的?
EN

Stack Overflow用户
提问于 2013-08-26 09:02:30
回答 1查看 930关注 0票数 0

我想知道mongodb中哈希分片键的内部结构是什么。例如,如果我的字段是一个时间戳,那么mongodb选择散列的常量是多少?

我猜关键字将是时间戳%N;N是什么?

如果这就是设计,我猜N不会随着时间而改变。如果N太小,我如何确定如果我有大量数据,那么在1个分片中不会有太多冲突?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-08-26 18:52:02

散列键使用文档中的数据和标准散列函数(MD5)来生成文档的散列值。例如,假设您的索引在{name: 'hashed'}上,并且您有以下文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{name: 'John', height: 73}
{name: 'Zardosht', height: 68}

MongoDB将通过MD5散列函数运行'John''Zardosht',并获得随机形式的字节序列。然后,它将使用这些字节序列作为索引中使用的实际B树关键字。当您想要查询{name: 'John'}时,它会再次执行MD5散列,获得与之前相同的字节序列,然后实际对该值执行索引查找。

您可以尝试使用mongo shell,并实际查看这些值是什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 % mongodb-linux-x86_64-2.2.5/bin/mongo                 
MongoDB shell version: 2.2.5
connecting to: test
> db.runCommand({_hashBSONElement: {name: "John"}})
{
    "key" : {
        "name" : "John"
    },
    "seed" : 0,
    "out" : NumberLong("5553133884637223031"),
    "ok" : 1
}
> db.runCommand({_hashBSONElement: {name: "Zardosht"}})
{
    "key" : {
        "name" : "Zardosht"
    },
    "seed" : 0,
    "out" : NumberLong("8641066842148283865"),
    "ok" : 1
}

请注意,在我描述的任何内容中都没有N,所以您不必担心这样的限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18440399

复制
相关文章
在Mac上安装redis
注:在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,需要把protected-mode yes改为protected-mode no
新人小试
2020/03/30
8K0
在Mac上安装MySQL
1、打开mysql官网:https://www.mysql.com/,选择DOWNLOADS下面的MySQL Community (GPL) Downloads »
新人小试
2020/03/30
8.5K0
在Mac上安装MySQL
在Mac上安装DNSmasq
首先你的 Mac 电脑需要安装了 Hombrew,安装链接:Install Homebrew
零云
2023/07/24
1.4K0
在Mac上安装consolas字体
Mac上一般不会预装consolas字体,但我习惯了,就是要用consolas字体。
JavaEdge
2021/02/23
2.2K0
Mac m1 安装Wine/WineHQ
在m1上安装尝试了比较多的教程,基本都失败了。直到看到这篇文章:https://git.boc-group.eu/adoxxosports/adoxx-15-64bit/-/blob/master/Installation%20Manual%20(M1)%20Wine%20und%20Azure%20SQL
obaby
2023/02/22
7.6K0
M1 Mac 安装Tensorflow
最近尝试在m1的mac上安装tensorflow,网上的教程比较多,但是不管怎么折腾都会出现各种问题。安装github上apple分支的TensorFlow不管怎么折腾都提示下面的错误:
obaby
2023/02/22
1.2K0
mac m1上运行jenkins
首先在docker官网上下载好支持m1版本的desktop客户端,随后打开jenkins.io查看安装命令:
gzq大数据
2021/10/26
2.5K0
在 Mac M1 的 GPU 上运行Stable-Diffusion
Stable Diffusion 是开源的,所以任何人都可以运行和修改它。这就是其在开源之后引发了大量创作热潮的原因。
点火三周
2022/10/18
7.8K2
在 Mac M1 的 GPU 上运行Stable-Diffusion
[教程]如何在M1 Mac上安装Windows 10和Linux?
早些时候,我们报道过开发者 Alex Graf 通过定制 QEMU 虚拟机在苹果 M1 Mac 上安装 Windows 10 操作系统的经验。过去两周,这个概念证明已经获得了许多开发者的帮助,包括虚拟音频和网络接口在内的许多功能都已基本正常,甚至可以让 Linux 虚拟机顺利运行。
huofo
2022/03/17
3.5K0
[教程]如何在M1 Mac上安装Windows 10和Linux?
在mac上安装Xgboost Python库
本文介绍了在mac系统上如何安装XGBoost Python库。文章首先介绍了使用pip install xgboost时出现的问题,然后介绍了使用Github源代码安装XGBoost的步骤。最后,作者通过运行build.sh脚本成功安装了XGBoost。
MachineLP
2018/01/09
2.4K0
手工在Docker for mac上安装Kubernetes
通常开发都是使用单机版的Docker环境,不太操心Docker集群的事情。 而在这种单机环境下,命令行操作Docker觉得很好用了,如果碰到解决不了的问题,还有脚本,如果说有什么事是一个脚本解决不了的。。。那就是两个。。。 :) 久而久之,很多事情都习惯了用Docker的角度去思考,比如服务发现、负载均衡,直接使用Docker的端口映射配合HAPROXY感觉就足够了。然后在这方面的知识也就固化在了这个点,再也没有更新。 而实际上Kubernetes大概每三个月发出一个新版本的速度,快速的
俺踏月色而来
2018/06/20
2.2K0
在mac上安装并使用docker
安装完毕,会在你的应用程序文件夹中生成一个boot2docker的app,运行他就会初始化docker了!
老高的技术博客
2022/12/28
1.9K0
在mac上安装并使用docker
Mac M1 上 丝滑跑 Docker
出于开源项目的需要,我准备把之前在 Windows 下运行的开源项目移植到 Mac 上跑得试下,但是之前 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式支持 Mac 了,M1 看了 Docker 的芳容,竟悄悄爱上了 Docker。
悟空聊架构
2022/05/13
7.3K0
Mac M1 上 丝滑跑 Docker
Mac M1安装Homebrew记录
由于我是从老的MacBook Pro迁移到M1的,所以老的Homebrew版本在M1 ARM上已经不可用了。
yechaoa
2022/10/28
1.5K0
Mac M1安装Homebrew记录
mac /mac m1 安装 k8s
以前mac上k8s一直起不来,最近升级了一下docker for mac 的版本为3.2.2,对应k8s 版本为1.19.7 发现k8s 可用了
golangLeetcode
2022/08/02
2.3K0
mac /mac m1 安装 k8s
mac求生指南:在linux上安装scrapy
ERROR: Could not find a version that satisfies the requirement Twisted>=13.1.0 (from Scrapy) (from versions: none) ERROR: No matching distribution found for Twisted>=13.1.0 (from Scrapy)
李玺
2021/11/22
1.6K0
mac求生指南:在linux上安装scrapy
jupyter notebook 在mac OS上的安装
一、关于Anaconda python中有很多包,类似于java中的jar包,java中用maven、gradle来管理依赖的jar包,而在python中类似的工具就是anaconda(当然还有其它工具,但anaconda/conda比较流行)。直接到官网 https://www.anaconda.com/download/#macos 下载安装文件,一路next即可。安装完成后,一般会在 ~/anaconda/bin 下生成很多可执行的命令。 二、启动jupyter-notebook 进入anacond
菩提树下的杨过
2018/01/18
3.3K0
jupyter notebook 在mac OS上的安装
在自己的电脑上安装GitBook For Mac
之前写了一篇 在自己的服务器上安装GitBook ,发布于 2015-04-20,当时的安装环境是 CentOS 6.X_64Bit,今天想再研究一下这个 GitBook ,发现在基于 Linux 内核的机器上安装基础功能很简单,但是牵涉到生成 pdf/epub/mobi 格式的书籍时,安装calibre的代价非常大(因为要安装 N 多前置库),对于不是非常非常熟练使用 Linux 的用户,几乎是一种灾难。
他叫自己MR.张
2019/07/01
2.9K0
mac上安装软件_mac 安装软件
Mac下面除了用dmg、pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样。MacPorts就像apt-get、yum一样,可以快速安装些软件。
全栈程序员站长
2022/11/08
2K0
在Mac OS X上安装PHP7
Mac用户可以选择二进制或源安装。实际上,您的OS X可能预装了Apache和PHP。这可能是一个相当旧的版本,它可能缺少许多不太常见的扩展。
用户9042463
2021/09/29
1.4K0

相似问题

反应本机安装[Mac M1]

15

M1 Mac或Swim本机安装

13

响应本机iOS构建失败- Mac M1

273

在Mac M1上安装Assimpcy

17

在m1 Mac上安装pymssql

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文