我正在为radius服务器的前端系统工作。
radius服务器每180秒将更新一次传递给系统。这意味着如果我有大约15,000个客户,那么每天约有7,200,000个条目......这是很多。
我试图了解存储和检索此数据的最佳方法是什么。显然随着时间的推移,这将变得非常重要。 MongoDB会处理这个吗?典型的文件并不多,这个
{
id: 1
radiusId: uniqueId
start: 2017-01-01 14:23:23
upload: 102323
download: 1231556
}
但是,会有很多这些记录。我想这与SNMP NMS服务器处理数据的方式类似,据我所知他们使用RRD来执行此操作。
目前在我的测试中,我只是将每个文档都推送到一个集合中。所以我在问,
A)Mongo是否适合这项工作 B)是否有更好/更优选/更优化的方式来存储数据
编辑:
好的,所以只要有人遇到这个并需要一些帮助。
我在mongo中运行了一段时间,我对性能真的不满意。我们可以将其归结为我运行的硬件,也许是我的知识水平或我正在使用的框架。但是我找到了一个适合我的解决方案。 InfluxDB几乎可以直接处理所有这些,它是一个时间序列数据库,它实际上是我试图存储的数据(https://github.com/influxdata/influxdb)。我的表现就像是夜晚和天。再次,可能都是我的错,只是更新它。
编辑2:
所以过了一会儿我觉得我弄清楚为什么我从来没有得到过Mongo之后的表现。我使用sailsjs作为框架,它使用正则表达式搜索id,这显然有很大的性能影响。我最终会尝试迁移回Mongo而不是涌入,看看它是否更好。
答案 0 :(得分:0)
每180秒更新15,000个客户端= ~83次插入/秒。即使对于中等大小的数据库服务器来说,这也不是一个巨大的负载,特别是考虑到您插入的记录非常小。
我认为MongoDB可以很好地处理这个负载(同样,老实说,几乎所有现代SQL DB都可以跟上它们)。恕我直言,要考虑的关键点是:
无论如何,这些是我的初步建议。