2017-10-23 4 views
0

먼저이 복잡한 긴 문제 설명에 대해 사과드립니다.별표 CDR 데이터베이스에 대한 올바른 CDR 수집 프로세스

현재 저는 전화를 처리하는 여러 개의 asterisk 서버를 유지 관리하고 있습니다. 현재 중앙 집중식 데이터베이스에 매시간 CDR을 수집 중입니다.

여기서 가장 큰 문제는 copied 개의 레코드와 new 개의 레코드를 추적하는 것입니다. 내 설정에서 각 asteriskCDR 테이블 id 열이 있습니다. 그래서 중앙화 된 테이블에서 나는이 id을 대처하고 유지할 열을 유지합니다 server_name. idserver_name을 모두 사용하여 각 asterisk 서버의 마지막으로 수집 된 id 번호를 식별 한 다음 숫자보다 높은 모든 새 CDR을 수집 할 수 있습니다.

이 프로세스는 완벽하지 않습니다. ID를 사용하는 것이 좋지 않기 때문에 항상 증가합니다. 또한이 설정을 REST API으로 변환하고 id을 중지해야합니다.

범위를 사용하여 통화 기록을 선택하는 것도 좋습니다. 이는 CDR을 매시간 수거하고 있고 진행 통화 중에 duration이 1 시간 이상 계속되었을 경우 어떻게 처리할까요? AsteriskCDR 통화가 끝날 때 레코드를 삽입하고 datetime 필드가 항상 오름차순이 아닙니다.

나는 datetime 범위 이상 사용하여 copied라는 플래그를 사용하여 누락 된 기록의 문제를 해결할 수 있지만 하고 플래그을 유지할 수 없기 때문에 그것은 REST APT에 적합하지 않습니다 수 있습니다.

가 지금은 아이디어가 부족 해요 ... 그리고 궁금가 ... 이것에 대한 더 나은 솔루션이이 매우 구체적인 시나리오

답변

0

일부 전문가 나를 도울 수

희망 ...하지만 어쨌든 여기서 내 솔루션을 게시 할 것입니다.

몇 가지 솔루션을 분석 한 후 한 가지 해결책을 생각해 냈습니다. inserttime이라는 새 열을 기본값 인 CURRENT_TIMESTAMP과 함께 추가했습니다 (포스트그레스를 사용하는 경우 statement_timestamp()으로 표시해야 할 수도 있음). 따라서 inserttime은 id와 같은 역할을하며 시간 변수를 사용하기도합니다. API을 사용하여 날짜 범위를 사용하여 CDR을 검색 할 수 있습니다.