草庐IT

SHARDING

全部标签

mongodb - 在 MongoDB 中,唯一索引对分片键的实际限制是什么?

Mongo文档阅读:shardedsystemscannotenforcecluster-wideuniqueindexesunlesstheuniquefieldisintheshardkey.来自这里:http://docs.mongodb.org/manual/core/sharding-shard-key/不过,如果分片键应该恰好是唯一索引,或者它可以是唯一索引的前缀,这对我来说还是相当模糊。我找到了很多关于这个特定主题的引用资料,但不幸的是,我找不到一个好的“做与不做”示例。总而言之,我的问题将存在于以下示例中:给定一个在字段{a,b,c}上具有唯一索引的Mongo集合,以下

mongodb - MongoDB 中的默认 block 大小和拆分行为

我有一些分片集合。在MongoDB2.4.11中,它们的大小在50-90MiB之间。根据文档,默认block大小为64MB。当我使用下面的命令检查block分布时,db.getCollection(collName).getShardDistribution()表明一些大小低于64MB的集合已被分成几个block。data:58.13MiBdocs:148540chunks:2estimateddataperchunk:29.06MiBestimateddocsperchunk:74270一些大小为x的集合,其中64MBdata:98.24MiBdocs:277520chunks:4e

json - 将 JSON 文件导入 mongos

我正在MongoDB中模拟分片。分片集群已经配置好,我在通过网络连接的三台不同物理机器上有三个分片。分片1、分片2、分片3我连接到mongos并创建了一个数据库、一个集合并在创建的数据库上启用了分片。现在我需要插入一个大型数据集,以便对集合进行分片。我正在使用mongoimport如下。我的问题是这个数据集正在导入到主机上的本地数据库中。例如。如果我将mongoshell连接到mongod,我可以看到新数据库有XX.GB,但我连接到带有mongos的配置服务器,但是当我在mongos上运行showdbs时,我看到00.GB在创建的数据库中。 最佳答案

ruby-on-rails - MongoDB 中的受控数据分片

我是MongoDB的新手,我对它的分片概念有非常基本的了解。但是我想知道是否可以自己控制数据拆分?例如,一部分记录将存储在一个特定的分片上?这将与Rails应用程序一起使用。 最佳答案 您可以关闭平衡器以停止自动平衡:sh.setBalancerState(false)如果您知道要拆分的键的范围,您还可以presplit您的数据范围到所需的服务器,请参阅PreSplittingexample.分片的管理将通过javascriptshell完成,而不是通过您的Rails应用程序。您应该注意不要让任何分片获得更多负载(变热),这就是默认

mongodb - Mongodb 中的标签感知分片

我一直在阅读有关标签感知分片的内容。这些是我引用的链接:http://www.mongodb.org/display/DOCS/Tag+Aware+Shardinghttp://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/Kristina以一种非常清晰的方式解释了这个概念,有一点是肯定的:这一增强将使MongoDB对开发人员更加友好。但我的问题是..看起来标记/重新标记是为了轻松地迁移block..将所有写入到首选数据中心等..但这如何适应旧的范围分区系统和Mongo学习的方式用于平衡的ke

mongodb - 这个模式的好的 mongodb 分片键是什么?

架构{"_id":ObjectId("5069d68700a2934015000000"),"port_name":"CL1-A","metric":340,"port_number":"0","datetime":ISODate("2012-09-30T13:44:00Z"),"array_serial":"12345"}每个阵列有128个端口,每个文档是该指标的一分钟数据。array_serial似乎不是分片键的好选择,因为基数较低,也就是说,序列号12345的所有数据都必须保留在同一个分片上,而不是拆分成大块,对吗?port_number似乎允许中等基数,但它会导致查询隔离失败,

mongodb - 如果我们使用分片,mongodb 中的唯一索引

在分片环境中,数据根据分片键的范围存储在不同的分片中。在我看来,在这种情况下,mongodb不能保证索引的唯一性(至少如果它不是分片键)。我们可以为分片键使用唯一索引吗?我们可以在分片键以外的字段上使用索引吗? 最佳答案 你是对的,mongodb不能保证跨分片集群的索引的唯一性,因为每个分片不能报告它是否包含要插入的键在它们的上下文中是唯一的。这包含在documentation中还有一个number的strategies围绕这种情况。结果是,如果为分片键选择这样的键,您将需要应用层来强制执行分片键的唯一性。我不是100%清楚你的第二

collections - Mongodb 自动写入上限集合

我需要在一小时内管理许多记录的采集。大约1000000条记录。而且我需要每秒获取每个主键的最后一个插入值。它适用于分片。我正在考虑尝试使用oscappedcollection来只获取每个主键的最后一条记录。为了做到这一点,我做了两个单独的插入,有一种方法,到mongodb中,制作某种触​​发器将插入传播到一个集合到另一个集合? 最佳答案 MongoDB不支持触​​发器或类似行为。做到这一点的唯一方法是让它在您的代码中实现。所以写第一个条目的代码也应该写第二个。人们肯定要求触发。如果您的解决方案需要它们,请转换voteonthefea

php - 生产中的 MongoDB 分片错误

我们通过使用node+mongodb为我们的聊天模块实现了mongodb分片概念。MongoDBShardingConfiguration===============================Shard1=PRIMARY+SECONDARY+ARBITERShard2=PRIMARY+SECONDARY+ARBITERConfigMongos以下是我们今天早上收到的详细信息。但是我们不知道如何解决这个问题。请告诉我如何解决这个问题。"errmsg":"rollback2errorfindcommonpointwaitingawhilebeforetryagain"“errmsg

python - 寻找一种从 Python 代码中分片 MongoDB 集合的方法

我正在寻找一种在python(2.7)程序中对现有集合远程执行分片的方法。我找不到执行该操作的API(pymongo),或者可能只是看起来不够好。这样的事情可能吗?提前致谢 最佳答案 按照settingupashardedcluster的说明进行操作,直到将“mongo”shell连接到mongos服务器并说:sh.enableSharding("")相反,只需键入不带括号的命令即可查看enableSharding的代码:sh.enableSharding您可以看到它在“admin”数据库上执行了{enableSharding:db