আপনার হ্যাশ কী (সাজানোর প্রাথমিক) অনন্য হতে হবে (যদি না আপনি অন্যদের দ্বারা বর্ণিত মত সীমা থাকে)।
আপনার ক্ষেত্রে, আপনার টেবিলটি জিজ্ঞাসা করার জন্য আপনার কাছে একটি গৌণ সূচক থাকা উচিত।
| ID | DataID | Created | Data |
|------+--------+---------+------|
| hash | xxxxx | 1234567 | blah |
আপনার হ্যাশ কীটি আইডি আপনার মাধ্যমিক সূচকটি এই হিসাবে সংজ্ঞায়িত করা হয়েছে: ডেটাআইডি-তৈরি-সূচক (এটি নাম যা ডায়নামোডিবি ব্যবহার করবে)
তারপরে, আপনি এই জাতীয় একটি প্রশ্ন করতে পারেন:
var params = {
TableName: "Table",
IndexName: "DataID-Created-index",
KeyConditionExpression: "DataID = :v_ID AND Created > :v_created",
ExpressionAttributeValues: {":v_ID": {S: "some_id"},
":v_created": {N: "timestamp"}
},
ProjectionExpression: "ID, DataID, Created, Data"
};
ddb.query(params, function(err, data) {
if (err)
console.log(err);
else {
data.Items.sort(function(a, b) {
return parseFloat(a.Created.N) - parseFloat(b.Created.N);
});
// More code here
}
});
মূলত আপনার ক্যোয়ারীটি এমন দেখাচ্ছে:
SELECT * FROM TABLE WHERE DataID = "some_id" AND Created > timestamp;
মাধ্যমিক সূচকগুলি প্রয়োজনীয় পাঠ / লেখার ক্ষমতা ইউনিটগুলিকে বাড়িয়ে তুলবে যাতে আপনার এটি বিবেচনা করা দরকার। এটি এখনও স্ক্যান করার চেয়ে অনেক বেশি ভাল, যা পাঠ্য ও সময়ে ব্যয়বহুল হবে (এবং আমি বিশ্বাস করি 100 টি আইটেমের মধ্যে সীমাবদ্ধ)।
এটি করার সর্বোত্তম উপায় এটি নাও হতে পারে তবে আরডি করতে ব্যবহৃত কারও পক্ষে (আমি এসকিউএলও ব্যবহার করি) এটি উত্পাদনশীল হওয়ার দ্রুততম উপায়। যেহেতু স্কিমা সম্পর্কিত কোনও বাধা নেই, তাই আপনি কাজ করতে পারেন এমন কিছু বেত্রাঘাত করতে পারেন এবং একবার আপনার কাছে ব্যান্ডউইদথকে সবচেয়ে কার্যকর উপায়ে কাজ করার পরে, আপনি চারপাশের জিনিসগুলি পরিবর্তন করতে পারেন।
CreatedAt
নির্দিষ্ট পয়েন্টের চেয়ে বেশি সহ সমস্ত রেকর্ডের জন্য জিজ্ঞাসা করতে পারবেন না ।