2011-12-26 2 views
0

PHP로 매쉬업을 수행하는 데 필요한 두 가지 주요 데이터 소스가 있습니다. 첫 번째는 SQL 데이터베이스이고 다른 하나는 피드입니다. 두 출처 모두 "이름"또는 "무게"로 정렬해야하는 유사한 항목을 포함합니다. 각 출처에는 1k 개 이상의 항목이 있습니다. 피드가 너무 자주 변경됨에 따라 피드를 db에 저장하는 것만으로는 옵션이 아닙니다.페이지 번호 매김을 사용하여 데이터베이스 피드에 동적 피드 통합

내가 달성하고 싶은 것은 정확한 두 페이지 출력입니다. 예를 들어, "name"으로 정렬 된 50 개의 항목이 포함 된 결과 중 2 페이지를 표시하는 경우 피드 및 데이터베이스의 모든 데이터를 읽지는 않지만 두 소스에서 필요한 항목 만 읽습니다.

나는 현재 데이터베이스 데이터가 기본 데이터이며 어떻게 든 피드 데이터를 병합해야한다고 가정합니다. 1) 잘못된 것일 수 있습니다 .2) 아무리 어려울지라도 머리를 맞출 수없는 것 같습니다. 나는 시험해 보는 것처럼 보인다.

어떻게해야합니까?

P. 결과가 완전히 정확할 필요는 없습니다. 그들은 단지 그것처럼 보일뿐입니다.

답변

1

한동안 피드 결과를 캐싱하는 것을 고려하십시오. 그런 다음 필요한 항목의 대략적인 위치를 파악할 수 있습니다.

두 번째 페이지를 요청하는 사용자의 경우 캐시를 사용하면 정확한 결과가 데이터베이스의 항목 # 20-50이고 피드의 항목 # 30-50이됩니다. 피드가 자주 변경되기 때문에 동일한 항목을 읽고 사용자에게 표시 할 수 없습니다. 대신, 여분의 항목 (예 : 양면 10 개)을 읽을 수 있습니다. 위의 경우 데이터베이스에서 항목 # 10-60이고 피드에서 # 20-60 항목입니다. 여분의 항목을 사용하고 캐시와 일치하는 항목을 찾으면보다 정확한 결과를 제공 할 수 있으며 동일한 # 20-50 및 # 30-50을 요청하면됩니다.

"P.S."로 허용하면이 방법으로 결과가 완전히 정확하지는 않습니다. 그러나 요청이 많을수록 모든 요청이 캐시를 조금씩 업데이트하므로 더 정확한 대답이됩니다. 사용자가 오랫동안 요청하지 않아 일부 페이지가 완전히 구식 인 경우에도 캐시 만료 추적을 구현해야합니다.

위의 가능한 구현은 모든 "페이지"- "정렬 유형"조합에 대한 행이있는 추가 테이블입니다. 귀하의 예에서는 페이지 당 50 개의 항목과 총 2000 개의 항목에 대해 "이름순 정렬"과 "무게 별 정렬"을위한 40 개의 행을위한 40 개의 행이 있습니다. 각 행은 특정 페이지에 마지막으로 액세스 한 두 소스의 항목과 해당 정보의 마지막 업데이트 타임 스탬프에 대한 정보로 구성됩니다.

P. 더 자세한 답변을 제공하기 어려울 정도로 세부 정보를 게시하지는 않으나, 쓴 내용이 도움이되기를 바랍니다.

관련 문제