2013-04-14 2 views
0

데이터 저장소 위에 JDO를 사용하는 GAE/J 앱이 있고 커서를 사용하여 쿼리 결과를 페이지 매김 할 수있었습니다. 기본 구현은 내 팀에서 startCursor이라고 부르는 것입니다 (즉,이 시점부터 결과를 알려주세요). 지금 내가 원하는 것은 endCursor라고하는 것입니다 (즉, 처음부터이 시점까지 결과를 알려주십시오). 클라이언트가 신선한 콘텐츠를 위해 일부 서버를 폴링해야하는 일종의 트위터 타임 라인 (PUSH를 지원하지 않는 타임 라인)을 상상해보십시오. 5 분 전에 클라이언트가 데이터를 가져 왔다고 상상해보십시오. 이 데이터는 커서 "X"가있는 지점까지 시작 (5 분 전)을 나타냅니다. 이제 클라이언트는 타임 라인을 업데이트하려고합니다. 즉, 클라이언트가 신선한 콘텐츠를 5 분 1 초 전에에 시작하려고합니다. 이것이 GAE/J-JO에서 어떻게 달성 될 수 있습니까?GAE/J - JDO에서 EndCursors를 구현하는 방법

[편집 :] 저장소에 타임 스탬프별로 1000 개의 엔터티가 있다고 가정 해보십시오. 그런 다음 처음 20 개를 가져 왔습니다. 그 후 7 개의 새로운 엔티티가 생성되었습니다. 쿼리를 사용하여 새 엔티티를 어떻게 검색합니까? 일 때문에 순서가 하강하는

답변

0

변화는 아마도

+0

타임 스탬프의 지시 저장소에 1,000 개체가 상상해보십시오. 그런 다음 처음 20 개를 가져 왔습니다. 그 후 7 개의 새로운 엔티티가 생성되었습니다. 쿼리에서 새로운 7 개를 검색하려면 어떻게해야합니까? ORDER를 분명히 조작해도 문제가 해결되지 않습니다. –

+0

"이 시점에서"쿼리를 수행하는 유일한 방법은 "포인트"를 알고 필터에 넣는 것입니다 (최고 ID 또는 타임 스탬프는 클래스에 따라 다름). O/P는 명확하지 않으므로 거기에 당신의 설명이 들어갈 것을 제안하십시오. – DataNucleus

0

타임 스탬프 오름차순 될 수있는 쿼리 순서를 설정합니다. 최대 5 분 전에 쿼리 결과를 검색하면 (X) 커서를 가져 와서 저장하십시오.

나중에이 커서를 사용하여 동일한 쿼리를 실행하십시오. 포인트 X 이후의 항목을 검색 할 수 있습니다.

(어떻게이 원리가 이미 커서를 사용하는 방법과 다를 수 있습니다?)

+0

차가워 요. 네가 무슨 말을 하려는지 알 겠어. 하지만 이제는 40,000 개가 넘는 엔티티가 있고 (빠르게 증가하고 있음), 커서가 아래쪽 20 개에 도달 할 때까지 모두 읽는 것이 오름차순으로 효율적인지 확신 할 수 없습니다. 런타임 및 비용 효율성 모두에 영향을 미치고 AppEngine에 의해 부과 된 30 초 기간에 100,000 개의 개체를 가져올 수 있는지 (단지 재사용을위한 커서를 얻는 것만 가능할 지) 알 수 없습니다. 또는 나는 무엇인가 놓치고 있냐? –

+0

나는 당신의 시나리오를 제대로 이해하지 못한다고 생각합니다. 그러나 .... @DataNucleus에는 요점이 있습니다. 시간 소인별로 순서가 다른 두 개의 조회 (하나는 오름차순이고 다른 하나는 내림차순)가 필요할 수 있습니다. 각 쿼리에는 자체 커서가 필요합니다. 초기 쿼리를 생성하려면 각 쿼리를 커서없이 실행해야합니다. 생성 된 각 쿼리 커서를 저장 한 다음 후속 쿼리에 사용할 수 있으며 대신 결과 쿼리 커서를 저장할 수 있습니다. 이게 도움이 되나요? –