我们在使用MongoDB并插入大量数据时遇到问题。
在这种情况下,存在连接到WebSocket(Socket.IO)的Web套接字客户端。 这些客户端每10秒生成一次事件日志,并将其作为WebSocket事件发送。 WebSocket接收事件并将其写入MongoDB。
我们已经连接了6000个Web套接字客户端,以发送此事件日志。 6000个客户端每秒生成600个或更多的事件日志,因为某些客户端存储脱机数据以在连接后进行传输。
我们每个客户帐户都有一个数据库,并且有一个集合来存储此文档。
文档具有以下内容:
{
“_id”: “1k2jh3k2h31kh1…",
“clientId": 1,
“mediaId": 2,
“createdAt": “2018-12-05 11:00:00”,
"type": “I"
}
文档具有使用3个属性的唯一键:clientId,mediaId和createdAt。
我们还有一个Web界面,用于生成包含关键属性汇总的报告。 而且聚集很重而且很慢。
当前,我们使用运行MongoDB的EC2大型实例。 但是我们在MongoDB上有很多重载问题。
我们计划将业务扩展到20.000个客户。
我的问题是:MongoDB是此用例的最佳解决方案?与大量数据一起插入和汇总报告的最佳实践是什么?