我可以设计一个将由许多客户更新的mongo系列吗?

时间:2018-06-19 03:03:15

标签: mongodb

请仔细查看我的问题,谢谢。

我设计了一个用于存储监视器信息的集合。存储在集合中的数据如下所示:

{
    metric_name: 'physical_memory_used',
    server_name: 'server_a',
    time: timestamp,
    value: 2000
    tag1: value1,
    tag2: value2,
    ...
}

metric_name 是“physical_memory_used”,“process_count”等受监控项目的名称。这是每个文档的必填字段。

server_name 表示此数据来自哪个服务器。所以它也是一个必填字段。

时间存储收集数据时的时间戳。也是强制性的但是这些字段的价值会经常变化。因为我只存储最新数据,所以我每5秒钟存储一次。

存储此受监控项目的收集值,因此也是必需的。而且它也经常变化。与提交时间的原因相同。

tag1:value1,tag2:value2等其他字段不是必需的。因为不同的监控项可能具有不同的属性。例如:NIC可能有一个tag:value对,如'nic_name:eth0',表示nic名称。

我在

上创建了一个索引
metric_name
server_name

因为这两个是必填字段(这意味着每个文档都有它们),并且不会像时间和值字段那样频繁更新。

此索引不是唯一索引,因为一个服务器的一个度量标准可能包含多个文档。例如:一个服务器的度量nic_​​io_per_seconds可能会生成多个文档,因为可能有多个nics。我们使用tag:value pair(如nic_name = eth0)来分隔它们

以下是我的关注

The collection may be update thousands of servers each seconds.

I will have another system querying the collection every seconds. 

更新和查询将始终使用我创建的索引。

这是一个糟糕的设计吗?

我做了一些搜索和研究,认为没关系。因为虽然该集合每秒钟会更新数万次。这些更新将在不同的文件上发生。 (不同的服务器,不同的监控项目)所以没有竞争。索引列“metric_name”,“server_name”也将始终保持相同的值,不会更新。所以不应该对索引进行任何更新,所以应该没问题。

关于搜索。虽然收藏可能非常大。但是通过索引(metric_name,server),我们总能获得非常少的数据集。所以表现应该没问题

以上只是我的猜测。我不确定在这里问一下。如果你有

,请提供一些建议

0 个答案:

没有答案