【发布时间】:2013-06-10 03:01:33
【问题描述】:
我正在尝试以编程方式“启用分片”并使用 java/scala API 特别是 casbah 设置“分片键”
我们的配置
scala 2.10
casbah 2.6 - "org.mongodb" % "casbah_2.10" % "2.6.0",
MongoDB 2.4.4
还有什么是 mongo 2.4.4(带有 scala 2.10)的 casbah 驱动程序版本
我们的用例是这样的,集合 + 索引是使用 casbah scala API dbConnection.getCollection(....) 和 collection.ensureIndex(DBObject("orgId" -> 1), DBObject("background" -> true, "name" -> "org_idx", "unique" -> false)) 以编程方式创建的
是否有等效的 casbah API 以编程方式启用分片并选择 shardKey 以及我们目前正在对 mongo 集群进行分片以进行横向扩展。 我们的数据库 + 集合名称提前未知,并且使用 API 动态创建,因此使用 mongo shell 启用分片根本不是一种选择。
有没有更好的方法来做到这一点?有什么建议吗?
【问题讨论】:
-
因为您正在动态创建数据库,它们将围绕分片循环 - 为什么需要对任何集合进行分片?通过将不同的数据库放在不同的分片上来平衡负载还不够吗?
-
如果没有 enableShard 命令或在集合上选择分片键,如何对数据库进行分片?必须发出某些管理命令才能做到这一点
-
当您对集群进行分片并添加一个新数据库时,它将自动放置在一个新的(er)分片上。数据库不会被分区,但它们都将继续放置在下一个分片上。唯一需要 enableShard 和 shardCollection 的时候是您想要对集合进行分区 - 我不明白为什么您需要对以编程方式生成的所有这些集合进行分区。
-
感谢您的洞察力,Asya .. 我会试一试...