首先抱歉这个复杂的长期问题解释。
目前我正在维护几个处理呼叫的asterisk
服务器。目前我每小时收集CDR
到集中式数据库。
此处的主要问题是跟踪copied
条记录和new
条记录。在我的设置中,每个asterisk
CDR
表都有id
列作为主键。因此,在集中表格中,我应对此id
并保留一列以保留server_name
。通过同时使用id
和server_name
,我可以识别每个id
服务器的最后收集asterisk
个号码,然后收集所有高于CDR
的{{1}}个id
{1}}数字。
这个过程并不完美,因为依靠id永远不会增加。此外,我还需要将此设置转换为REST API
并停止使用id
。
使用datetime
范围来挑选通话记录也不是一个好主意,因为我每小时收集一次CDR
以及如果有duration
持续通话超过1小时该怎么办? 。 Asterisk
CDR
在通话结束时插入记录,datetime
字段并不总是按升序排列。
我可以使用名为copied
的标记并使用datetime
范围以上并解决丢失的记录问题,但它不适合REST APT
,因为它是for lines in line:
data = line.strip().split("\t")
name, sex, number = data
print ("{0}\t{1}".format(name, number))
无状态并且无法保留标记。
现在我已经没有想法......并且想知道是否有更好的解决方案...
希望有些专家可以帮助我...答案 0 :(得分:0)
这是一个非常具体的场景,但无论如何我将在这里发布我的解决方案。
在分析了一些解决方案后,我想出了一个解决方案。我添加了名为inserttime
的新列,默认值为CURRENT_TIMESTAMP
(如果您使用postgres,则可能需要查看statement_timestamp()
)。因此inserttime
将像id和时间变量一样,我可以使用API
使用日期范围搜索CDR
。