我在一家大型电信公司工作,我希望存储许多CDR(呼叫详细记录)。它应该是一个巨大的数据库。我想尝试推出一些OpenSource解决方案。我对MySQL非常熟悉,但我想也许可以尝试一些不同的东西,它应该是健壮且易于扩展的。有关稳定的OpenSource NoSQL解决方案的任何建议吗? - MongoDB? Hadoop的?卡桑德拉?还有其他想法吗?也许我应该坚持使用MySQL?
请注意,我需要选择查询特定电话号码的通话时间。
号码最多的是什么。
ETC”。
mysql表如下所示:
timestamp TIMESTAMP
from_number CHAR(12)
to_number CHAR(12)
duration MEDIUMINT
答案 0 :(得分:4)
虽然您可以使用任何数据库后端构建CDR解决方案,但您将面临的一个挑战是如何处理数据建模和查询。与关系数据相比,NoSQL数据建模需要一种截然不同的方法,更类似于非规范化数据仓库(这应该非常适合您的用例!)。
根据您的要求,有许多开源CDR项目也值得研究。
有关可能有助于调查的具体示例,我会看一下CDR-Stats:
进一步观看:
答案 1 :(得分:2)
CDR处理涉及非常大量的记录,这些记录也会随着时间的推移而增加。每年增加100%并不罕见。我发现将收集与报告分开并将收集的数据(作为记录或聚合)转发到适当的报告引擎是个好主意。有关概述和案例研究,请参阅BDsafe。我已经交付了几年运行的系统,并且每天处理数十亿个CDR。总而言之,我怀疑你会找到一个系统来满足你的所有需求,但是,我相信你可以用一点横向思维来实现你的目标。首先,有效地(廉价地)存储您的数据,然后您可以为不同的目的使用不同的报告引擎。如果你可以向我提供一些你必须处理的一般情况,我很乐意解释我在这些情况下所做的事情。十多年来,我一直专注于电信公司和LEA这一领域。
答案 2 :(得分:0)
CDR将与落地的呼叫数量成比例。我不认为MySQL是最好的解决方案,因为数据将不断增长。随着数据的增长,我对性能表示怀疑。 这是假设您可能必须将数据存储至少1年作为监管规范等。 Stennie对CDR-Stats的建议看起来不错。他们正在使用MongoDB