我读过mongodb分片指南,但我不确定哪种分片键适合我的应用程序。欢迎任何建议。
我的应用程序是一个庞大的网络事件数据库。每个文档都有一个时间字段和一些网络相关的值,如IP地址和端口号。我的插入速率为每秒100-1000项。根据我使用单个mongod的经验,单个分片对此插入率没有任何问题。
但我在大量数据上广泛使用聚合框架。所有聚合都有时间限制 - 即。主要是最近一个月或最近一周。我测试了一个单一mongod的聚合和一个响应时间为5分钟的查询,而插入关闭可能需要长达两个小时,如果每秒200插入被激活。
我可以通过分片来提高mongodb聚合查询响应时间吗?
如果是,我认为我必须使用时间作为分片键,因为在我的应用程序中,每个查询都必须在一个时间限制内运行(例如最近一个月的顶级IP地址)以及我们是否可以分离分片插入发生,查询正在使用的分片mongodb可以更快地工作。
但文件说
“如果分片键是一个线性增加的字段,例如时间,那么给定时间范围的所有请求都将映射到同一个块,从而映射到相同的分片。在这种情况下,可能会收到一小组分片大多数请求和系统都不会很好地扩展。“
那我该怎么办?