在mongodb2.4中,如果分片表分片类型为hashed-shard,那么你将无法在该分片表上创建唯一索引。

而在mongodb2.6中这个约束被放宽了:你可以在shard-key上创建一个额外的普通唯一索引。

所以在mongodb2.6中能够使用hashed-shard的场景变多了,比如以前需在shard-key上增加唯一约束的场景,现在就不用被迫使用auto-shard啦!

hashed-shard的好处不多说了吧?

祝用的开心

_(:з」∠)_

2 回复
ccj
#1 ccj • 2014-08-22 16:20

2.4的可以这样 javascript mongos> use test switched to db test mongos> db.ccj.ensureIndex({a:"hashed"}) mongos> db.ccj.ensureIndex({a:1},{unique:true}) mongos> sh.shardCollection("test.ccj",{"a":"hashed"}) { "ok" : 0, "errmsg" : "sharding not enabled for db" } mongos> sh.enableSharding("test") { "ok" : 1 } mongos> sh.shardCollection("test.ccj",{"a":"hashed"}) { "collectionsharded" : "test.ccj", "ok" : 1 } mongos> db.version() 2.4.6 mongos> db.ccj.insert({a:123}) mongos> db.ccj.insert({a:123}) E11000 duplicate key error index: test.ccj.$a_1 dup key: { : 123.0 }

Hisoka-J
#2 Hisoka-J • 2014-08-22 16:24

楼上在2.4是个解决办法,把顺序反过来 2.6可以正常顺序做

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。