jjzjj

Sharding

全部标签

mongodb - MongoDB Shard Key 是否需要唯一?

我在这个问题上有点挣扎,因为我来自SQL环境,我们在其中对用户ID进行了分片。我们有多个表,其中添加了user_id,以便我们可以分片。如果一个表中有100条记录,所有记录都针对同一用户,那么所有100条记录最终都会在同一个分片中。因此,我们有了第一个mongo数据库,我们希望能够在必要时对其进行分片。有一个用户collecton,我们打算按_id对其进行分片。没问题。但是还有第二个集合,其中可能包含一个用户的数百个文档。我们希望那些去同一个分片,(不必与用户文档相同,因为它们是单独检索的,但它们确实会被用户分块检索。)但看起来,如果我们按已添加到第二个集合的user_id进行分片,这

mongodb - MongoDB : Unable to create a sharding cluster in Ubuntu

我已经使用http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/安装了MongoDB在我的Ubuntu机器上,mongo实例工作正常。我可以在实例中进行CRUD操作。我还安装了MonjaDBeclipse插件,并且能够看到其中的所有数据库/集合/文档。现在,我想在我的机器上创建一个分片集群。我正在尝试以这种方式创建:cluster=newShardingTest({"shards":3,"chunksize":1})出现以下错误:重置数据库路径'/data/db/test0'2月12日星期三15:46:43错

MongoDB 在一台机器上按日期分片

我们从一个单一的mongodb开始,但没有一个集合增长到~300GB。该集合包含具有日期字段的对象。但大多数情况下,我们只需要查询最近的对象,然后查询历史一次。所以我的问题是:是否可以按日期字段在一台服务器上分片这个集合?更明确地说,我想将较新的对象分片到一个节点中,将较旧的对象分片到另一个节点中。而不是将所有对象平均分布在n个分片上。是否有关于如何将现有的单个数据库(没有任何副本集)分片成分片集群的教程? 最佳答案 从技术上讲,您不需要对内容进行分片,只需要为您的领域编制索引。是的,您可以在日期字段上创建索引,您可以通过访问查询计

Mongodb 分片集群 $in VS $or

如果我在分片键中有MongoDBshurded集群:“my_key”。我必须在具有不同my_key的集合包文档(大约10-500项)中找到。敌人的例子:db.test.find({my_key:{$in:[1,3,5,67,45,56...]}})Mongos知道带有“my_key”的block存储在哪里。mongos可以将我的查询拆分为小查询以准确存储文档的碎片吗?或者mongos会将此查询发送到所有分片?关于$or的同样问题db.test.find({$or:[{my_key:1},{my_key:3},{my_key:5}...]}) 最佳答案

mongodb - mongodb 中的主分片

我正在尝试阅读mongodb分片的文档,但我对主分片的分配方式和主分片的含义有些困惑根据文档统计Everydatabasehasaprimaryshardthatholdsalltheun-shardedcollectionsforadatabase.Theprimaryshardhasnorelationtotheprimaryinareplicaset.这是否意味着主分片是分片中首次创建数据库的分片(或服务器集合)?假设我有3个分片s0、s1和s2。在每个分片中我有3个服务器s0服务器1(主要)s0服务器2(辅助)s0-服务器3(辅助)s1-服务器4(主要)s1-服务器5(辅助)s

计划中的 MongoDB SHARDING_FILTER

我在ShardedCluster上有问题。我正在测试性能以比较Sharded和ReplicaSet。我在没有mongos的情况下直接向Shard1插入数据,然后通过聚合查询查询它,但我找不到它。我检查了解释计划,该计划在主分片的阶段显示“SHARDING_FILTER”,但在我检查解释计划时在辅助分片中没有。控制它的配置是什么?MongoDB版本:3.0.12 最佳答案 IhaveinserteddatatoShard1directlywithoutmongosandthenqueryitbyaggregatequerybutIca

MongoDB 3.4 分片错误。 "Cannot accept sharding commands if not started with --shardsvr"

我在centOS7.2机器上安装了mongoDB3.4.5。我在独立模式下配置分片。我遵循的步骤:对于副本集:mongod--replSetrs0--dbpath/data/srd/rs0--logpath/data/srd/rs0/log.rs0--port27000--fork--logappend--smallfiles--oplogSize50&mongod--replSetrs0--dbpath/data/srd/rs1--logpath/data/srd/rs1/log.rs1--port27001--fork--logappend--smallfiles--oplogSi

MongoDB - 通过自定义 _id 字段上的散列索引进行分片收集

问题:如何根据自定义_id字段的散列索引对集合进行分片?问题描述:我需要在MongoDB中存储url=>my_value对网址必须是唯一的我将执行大量查询来检查,如果我已经通过匹配{_id:md5(url_to_check)}拥有具有此类url的文档集合会很大(数十亿对url=>my_value),所以我想按url对它进行分片。解决方案,我认为:创建包含这些字段的集合:_id:md5(url)网址:网址值:我的值我不创建任何索引。_id默认由mongo索引问题:我想按_id对集合进行分片。散列共享key是完美的,但我是否必须创建散列分片key或者我可以按常规_idkey分片?我插入到_

mongodb - 我应该如何配置我的 Mongodb 集群?

我正在运行一个分片的mongodb环境-3个mongod分片、1个mongod配置、1个mongos(无复制)。我想使用mongoimport将csv数据导入数据库。我在210个csv文件中以500,000条为增量存储了1.05亿条记录。我知道mongoimport是单线程的,我读到我应该运行多个mongoimport进程以获得更好的性能。但是,我试过了并没有加快速度:当并行运行3个mongoimports时,每个进程每秒获得约6k插入(因此18ki/s)与运行1个mongoimport时,我获得约20k插入/秒。由于这些进程是通过单个mongod配置和mongos路由的,我想知道这是

内存中的 MongoDB 索引与分片

坊间传言,如果您不能将正在使用的索引保存在内存中,MongoDB会变慢。这如何与分片一起工作?分片是只在内存中保留自己的BTree,还是每个分片都需要在内存中保留整个集合的索引? 最佳答案 DoesashardedonlykeepitsownBTreeinmemory...?是的,每个分片管理自己的索引。ThewordonthestreetisthatMongoDBgetsslowifyoucan'tkeeptheindexesyou'reusinginmemory.在使用分片和二级索引时,您实际上可以预料到更糟的情况。关键问题是路