2013-10-07 2 views
0

회사의 내부 API에 많은 양의 사실 데이터 (현재 80MM 레코드 포함)가 있습니다. 정기적으로 저에게 연결하는 4 명의 고객이 있습니다. 기본 API 호출은 새 항목을 데이터베이스에 추가하고 진위 여부를 확인한 다음 제출 된 항목을 기반으로 구조화되고 분석 된 데이터를 반환합니다.API를 통해 데이터 변경 사항을 고객에게 알리는 가장 좋은 방법

시간이 지남에 따라 항목과 관련된 더 많은 데이터를 식별 할 때 내 고객이 레코드가 변경되었음을 알릴 수 있어야합니다.

지금은 /recent 엔드 포인트가 있는데, 이는 $timestamp 이후로 변경된 모든 레코드를 리턴합니다. 작은 데이터 세트에서는 문제가 없지만 많은 수의 트랜잭션이있을 경우, 특히 대량의 데이터 가져 오기가있는 경우 특히 백만 개 이상의 항목에 대한/최근 데이터 세트로 인해 손쉽게 처리 할 수 ​​있습니다.

내가 가진 또 다른 아이디어는 데이터를 클라이언트에 푸시하기 위해 웹 후크를 사용하는 것이지만 너무 많은 데이터를 푸시하게됩니다. 내 고객은 변경된 모든 항목에 대해 반드시 업데이트 할 필요는 없습니다. 이미 제출 한 항목 만 필요할 수도 있습니다.

문제는 디자인 패턴 또는 코드 전략에 대한 코드에 대한 점점 더하십시오에 기록 수백만 불필요한 요청을 내 고객 홍수 또는 제공하지 않고 업데이트 된 레코드를 내 고객을 알리는 몇 가지 최적의 전략은 무엇

투표?

답변

0

큰 요청을 매김하는 제 3 자 API (예 : Amazon)를 사용했습니다. 데이터 세트가 페이지 한계를 초과하면 클라이언트는 다음 페이지에 대해 다른 요청을해야합니다. 이는/최근 엔드 포인트와 함께 사용됩니다. 클라이언트는 엔드 포인트 requstId 및 페이지 번호로 전송 한 후, 요청을하고 데이터의 첫 페이지를 가져 뭔가

{ 
    requestId: "foobar", 
    page: 0, 
    pages: 10, 
    data: { 
    ... 
    } 
} 

처럼

실제 구현 될 것이다. 어떻게 든 requestId에 해당하는 데이터에 대한 참조를 유지하려고합니다.

관련 문제