2012-02-01 12 views
9

मैं रेल के साथ अमेज़ॅन डायनेमो डीबी का उपयोग करना चाहता हूं। लेकिन मुझे पेजिनेशन को लागू करने का कोई तरीका नहीं मिला है।रेल में अमेज़ॅन डायनेमो डीबी का उपयोग करते समय पेजिनेशन को कैसे कार्यान्वित करें

मैं ओआरएम के रूप में AWS::Record::HashModel का उपयोग करूंगा।

इस ORM इस तरह सीमा का समर्थन करता है:

People.limit(10).each {|person| ... } 

लेकिन मैं पता लगा नहीं कर सकता है डायनमो डीबी में MySQL क्वेरी निम्नलिखित लागू करने के लिए कैसे।

SELECT * 
    FROM `People` 
LIMIT 1 , 30 

उत्तर

23

आप LIMIT का उपयोग कर क्वेरी जारी करते हैं। यदि सबसेट में लौटाई गई पूर्ण तालिका नहीं है, तो "LastEvaluated" मान वापस कर दिया जाता है। आप इस मान का उपयोग अगली क्वेरी ExclusiveStartKeyin के रूप में करते हैं। और इतने पर ...

DynamoDB Developer Guide से।

+2

इस जवाब खाता है कि DynamoDB अभी कहा 'LastEvaluatedKey' और' ExclusiveStartKey' (भविष्य में) के साथ एक ही दिशा में पृष्ठांकन प्रदान में नहीं ले रही है। , साथ मानक पृष्ठांकन कम से कम, 'previous' और' next' विकल्प संभव नहीं DynamoDB – Srle

+0

@Srle के साथ बॉक्स से बाहर है, आप अपने आप को LastEvaluatedKey और ExclusiveStartKey का उपयोग करके अगले आपरेशन के लिए जिस तरह से प्रदान की है। आप क्वेरी के क्रम को उलट सकते हैं और पिछला ऑपरेशन प्राप्त कर सकते हैं। यह बॉक्स के बाहर डायनेमो डीबी में उपलब्ध है। –

+0

@ nickolay.laptev क्या आप बॉक्स के बाहर दोनों दिशाओं का समर्थन करने के साथ उदाहरण, गिस्ट या कुछ प्रदान कर सकते हैं? – Srle

1

परिणाम सेट आकार सेट करने के लिए आप क्वेरी में 'पेज-साइज' प्रदान कर सकते हैं। डायनेमोडीबी की प्रतिक्रिया में 'LastEvaluatedey' है जो पेज आकार के अनुसार अंतिम कुंजी इंगित करेगा। अगर प्रतिक्रिया में 'LastEvaluatedey' नहीं है तो इसका मतलब है कि लाने के लिए कोई परिणाम नहीं बचा है। अगली बार लाने के दौरान 'LastEvaluatedey' को 'ExclusiveStartKey' के रूप में उपयोग करें।

मुझे आशा है कि इस मदद करता है।

DynamoDB Pagination

संबंधित मुद्दे