0
많은 엔티티에서 페이지를 가져오고 싶습니다.ndb [GAE/Python]에서 많은 엔티티를 페이징하는 방법
모델 내가 지수 5000
entities = Model.query().fetch(10, offset=5000)
을 얻으려면 10000 개체,
하지만,이 안티 패턴이다.
사용 커서 패턴,
entities, cursor, more = Model.query().fetch_page(10) // 0〜10
entities, cursor, more = Model.query.fetch_page(10, start_cursor=cursor) // 10〜20
이 시작 커서를 얻을 수있다.
cursor = ??? // how to get a cursor start index 5000.
커서를 가져오고 싶습니다.
좋은 아이디어입니까?
그래,하지만 Offset의 "이상한"일은 여전히 IT가 읽은 데이터를 읽는다는 것입니다. 데이터 저장소가 어떻게 구축되어 있는지에 따라 결과를 검색하기 전에 오프셋을 "검색"하게됩니다 ... 즉 오프셋보다 많은 비용을 지불해야 할 수도 있습니다. – Patrice
앞서 언급했듯이 오프셋은 일반적인 것입니다 방법. 가져 오기 페이지를 사용하려면 다음 페이지와 이전 페이지 만 호출해도 괜찮습니다. 내 생각에 모든 데이터베이스에서 오프셋을하면 여전히 오프셋을 검사합니다. GAE에있는 것만으로도 요금이 청구됩니다. 비슷한 질문 http://stackoverflow.com/questions/10291291/what-is-the-cost-difference-between-paging-with-a-cursor-orusing-offset – marcadian
나는 당신의 대답에 관해서 특별히 말하지 않았다. , @ kuninori에 대한 경고로 더. 분명히 항상 스캔을 상쇄합니다. 하지만 당신이 말했듯이, GAE에서 당신은 그것을 지불합니다. 나는 실제로 같은 페이징에 있다면 페이징을 가져오고 페치를 할 것입니다 :) – Patrice