星号CDR数据库的正确CDR收集过程



首先对这个复杂的长问题的解释感到抱歉。

目前,我正在维护几个处理调用的asterisk服务器。目前我每小时都在收集CDR到集中式数据库。

这里的主要问题是跟踪copied记录和new记录。在我的设置中,每个asteriskCDR表都有id列作为主键。所以在集中式表中,我处理这个id,并维护一列来保留server_name。通过使用idserver_name,我可以识别每个asterisk服务器的最后收集的id编号,然后收集所有高于该id编号的新CDR

这个过程并不完美,因为依赖id总是会增加是不好的。此外,我还需要将此设置转换为REST API,并停止为此使用id

使用datetime范围来选择通话记录也不是一个好主意,因为我每小时都在收集CDR的通话记录,如果duration的通话时间超过1小时怎么办。AsteriskCDR在调用结束时插入记录,并且datetime字段并不总是按升序排列。

我可以使用一个名为copied标志,并使用以上的datetime范围来解决丢失记录的问题,但它不适合REST APT,因为它是无状态并且不能保留标记

现在我没什么想法了。。。想知道有没有更好的解决方案。。。

希望有专家能帮我…

这是一个非常具体的场景,但无论如何,我将在这里发布我的解决方案。

在分析了一些解决方案后,我提出了一个解决方案。我添加了一个名为inserttime的新列,默认值为CURRENT_TIMESTAMP(如果使用postgres,则可能需要查找为statement_timestamp())。所以inserttime的作用就像id和时间变量一样——我可以使用API来使用日期范围搜索CDR

相关内容

  • 没有找到相关文章

最新更新