Chr*_*ris 8 spring mongodb spring-data-mongodb spring-boot
我正在使用 Spring Boot 和 Spring Data MongoDB 与底层分片 MongoDB 集群进行交互。我的 Spring Boot 应用程序通过路由器访问集群mongos。
使用 Spring Data MongoDB,您可以通过 指定对象持久保存的集合@Document(collection = "nameOfCollection"),或者默认为类名(首字母小写)。这些集合不需要预先存在;它们可以在运行时创建。
要在 MongoDB 中对集合进行分片,您需要
1 - 在数据库上启用分片:sh.enableSharding("myDb")
2 - 在分片数据库上对集合进行分片:sh.shardCollection("myDb.myCollection", {id:"hashed"})
假设有一个现有的分片数据库,Spring Data MongoDB 是否提供了一种使用分片键对集合进行分片的方法?据我所知,我无法使用 Spring 对集合进行分片,因此必须在 Boot 应用程序运行之前配置分片集合。我觉得奇怪的是 Spring 允许我使用未定义的集合,但没有提供配置集合的方法。
编辑: 我已经看到了Sharding with spring mongo和Howconfigure access to a sharded collection in spring-data for mongo? 更多的是指分片MongoDB集群的部署。这个问题假设所有的管道都在那里,并且集合本身必须被分片。
小智 4
尽管这个问题很老了,但我也有同样的问题,而且从最近开始似乎已经可以提供自定义分片键了。
基于注释的分片键配置可在https://docs.spring.io/spring-data/mongodb/docs/3.0.x/reference/html/#shardingspring-data-mongodb:3.x上
找到
@Document("users")
@Sharded(shardKey = { "country", "userId" })
public class User {
@Id
Long id;
@Field("userid")
String userId;
String country;
}
Run Code Online (Sandbox Code Playgroud)
截至今天,spring-boot-starter-mongodb已经发布了 2.x 版本。
| 归档时间: |
|
| 查看次数: |
7985 次 |
| 最近记录: |