gpt4 book ai didi

mongodb - 为动态集合和设计建议自动定义分片键

转载 作者:可可西里 更新时间:2023-11-01 10:06:29 25 4
gpt4 key购买 nike

我想为我的 MongoDb 实现分片,需要您的一些建议。

洞察力

  1. 我们有很多 cron-job 收集关于机器的各种信息并将它们写入它自己的集合。
  2. 集合是动态创建的。
  3. 每个集合都有数百万条数据。
  4. 每个集合的结构 1 是名称、类别、子类别、NodeId、流程开始时间、流程结束时间、值。
  5. 每个集合的结构 2 是名称、类别、子类别、子类型、日期、值。
  6. 每个集合的结构 3 是名称、类别、子类别、NodeId、流程开始时间、流程结束时间、值、标志 1、标志 2、标志 3。

经过研究,我们发现我们将使用分片并使其适用于多个服务器,这保证了两件事:

  1. 不用担心空间不足。
  2. 跨服务器的平衡性能

Question 1:My problem is to find a correct shard-key to partition the data. I don't see a unique-key in the collection other than the default ObjectId. After further reading I have found that it is possible to use a composite key, does it make sense to have a composite key or custom ObjectId as a key where the value might look like ObjectId: _. This is very key with respect to performance of returning the results of a query & moving the chunks.

Question 2:Since we have large collections, it will become difficult to set the shard each time in Mongo console when a collection is created dynamically. Is there any way to make it automatic in mongo so that whenever a collection is created for a shard-database, it will define the shard-key for that collection?

Question 3:Is it really necessary to pass shard-key to the query expression? I don't think we have used ObjectId in any of our query-expression, I doubt I can come with a unique ID due to fact that the data is not structured like a traditional DB. If yes, how is it going to help for a query like this:

示例:

{ category: "Energy", subcategory: "Watt", Process-Start-Time: {$gte: 132234234}}

在此先感谢您介入并帮助我解决此问题。

最佳答案

执行此操作的最简单方法可能是对数据库进行分片,但不对集合进行分片。好处:

  • 集合将分布在各个分片中(但每个集合只会存在于一个分片上)。 编辑:我错了,这还没有实现。参见 the related Jira ticket追踪。现在,您可以使用 tags分发集合,但不是自动分发。
  • 无需对每个新集合调用 shardCollection

缺点是集合的所有流量都将转到其分片,这对于您尝试做的事情来说可能不切实际。

就您的问题而言:

问题 1:片键不必是唯一的。你一般查询什么?您可能更喜欢 {category:1}{category:1,subcategory:1}

问题 2:没有内置的方法自动执行此操作,获得该行为的最佳方法可能是设置一个 cron 作业。

问题 3:否。包含分片键的查询可以发送到特定分片,不带分片键的查询必须发送到所有分片,请参阅 http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-OperationTypes .

关于mongodb - 为动态集合和设计建议自动定义分片键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com