তারিখ অনুসারে ডায়নামোডিবি জিজ্ঞাসা করা হচ্ছে


108

আমি একটি সম্পর্কিত ডেটাবেস ব্যাকগ্রাউন্ড থেকে এসেছি এবং অ্যামাজনের ডায়নামোডিবি দিয়ে কাজ করার চেষ্টা করছি trying

আমার একটি হ্যাশ কী "ডেটাআইডি" এবং একটি রেঞ্জ "ক্রিয়েটেডএট" এবং এতে আইটেমগুলির একটি গুচ্ছ সহ একটি টেবিল রয়েছে।

আমি চেষ্টা করছি যে সমস্ত আইটেম নির্দিষ্ট তারিখের পরে তৈরি হয়েছিল এবং তারিখ অনুসারে বাছাই করা হয়েছিল। যা একটি রিলেশনাল ডাটাবেসে বেশ সোজা।

ডায়নামোডিবিতে আমি যে নিকটতম জিনিসটি খুঁজে পেতে পারি তা হ'ল একটি ক্যোয়ারী এবং ফিল্টারের চেয়ে পরিসর কী ব্যবহার করা। একমাত্র ইস্যুটি হ'ল কোনও ক্যোয়ারী সম্পাদনের জন্য আমার একটি হ্যাশ কী দরকার যা উদ্দেশ্যকে পরাস্ত করে।

তাহলে আমি কী ভুল করছি? আমার টেবিল স্কিমাটি কি ভুল, হ্যাশ কীটি অনন্য হওয়া উচিত নয়? বা জিজ্ঞাসা করার অন্য কোন উপায় আছে?

উত্তর:


35

আপডেট উত্তর:

ডায়নামোডিবি এই ধরণের ক্যোয়ারিতে সহায়তা করতে গৌণ সূচকগুলির নির্দিষ্টকরণের অনুমতি দেয়। মাধ্যমিক সূচকগুলি হয় বিশ্বব্যাপী হতে পারে, এর অর্থ সূচকটি হ্যাশ কীগুলি জুড়ে পুরো টেবিলটিকে বিস্তৃত করে, বা স্থানীয় অর্থ যে সূচিটি প্রতিটি হ্যাশ কী পার্টিশনের মধ্যে উপস্থিত থাকবে, সুতরাং কোয়েরি করার সময় হ্যাশ কীটিও নির্দিষ্ট করতে হবে।

এই প্রশ্নের ব্যবহারের ক্ষেত্রে, আপনি "ক্রিয়েটেডএটি" ক্ষেত্রে একটি গ্লোবাল মাধ্যমিক সূচক ব্যবহার করতে চাইবেন।

ডায়নামোডিবি-র মাধ্যমিক সূচকের উপর আরও তথ্যের জন্য গৌণ সূচক ডকুমেন্টেশন দেখুন

আসল উত্তর:

ডায়নামোডিবি কেবলমাত্র ব্যাপ্তি কীতে সূচিকিত লুকগুলি দেখতে দেয় না। হ্যাশ কীটি প্রয়োজনীয় যেমন পরিষেবাটি জানতে পারে যে ডেটা সন্ধানের জন্য কোন পার্টিশনটি অনুসন্ধান করা উচিত।

আপনি অবশ্যই তারিখের মান অনুসারে ফিল্টার করতে একটি স্ক্যান অপারেশন করতে পারেন, তবে এটির জন্য একটি পূর্ণ টেবিল স্ক্যান প্রয়োজন, সুতরাং এটি আদর্শ নয়।

আপনি যদি একাধিক প্রাথমিক কী জুড়ে রেকর্ডগুলির একটি সূচিকৃত অনুসন্ধান করতে চান তবে ডায়নামোডিবি আপনার ব্যবহারের জন্য আদর্শ পরিষেবা নাও হতে পারে, বা আইটেমটি সংরক্ষণ করার জন্য আপনাকে একটি আলাদা টেবিল (ডায়নামোডিবিতে বা কোনও সম্পর্কিত স্টোর) ব্যবহার করতে হতে পারে এমন মেটাডেটা যা আপনি বিপরীতে সূচকযুক্ত প্রদর্শন করতে পারেন।


15
নীচের উত্তরের মন্তব্য দেখুন; আছে না অন্তত কি ওপি জিজ্ঞাসা না এখন এই হ্যান্ডেল করতে, কোন উপায়ে। জিএসআইগুলিকে এখনও আপনার একটি হ্যাশ কী নির্দিষ্ট করা প্রয়োজন, সুতরাং আপনি CreatedAtনির্দিষ্ট পয়েন্টের চেয়ে বেশি সহ সমস্ত রেকর্ডের জন্য জিজ্ঞাসা করতে পারবেন না ।
22:44

4
@ পকেডিং ঠিক আছে। আপনি স্ক্যান ব্যবহার করে আরও পুরানো রেকর্ডগুলি পেতে পারেন তবে নির্দিষ্ট তারিখটি পেতে পারেন তবে আপনি সেগুলি সাজানো ক্রমে পাবেন না। জিএসআই আপনাকে এই ক্ষেত্রে সাহায্য করবে না। পার্টিশন কী বাছাই করা সম্ভব নয় , কেবলমাত্র রেঞ্জ কীটিও অনুসন্ধান করা সম্ভব নয় ।
gkiko

15
তোমরা যারা বিভ্রান্ত তাদের জন্য। এই উত্তরটি ভুল। তার আসল উত্তরটি সঠিক তবে তার আপডেট উত্তরটি নেই। নীচে ওয়ারেন প্যারাডের উত্তরটি পড়ুন। এটা সঠিক.
রায়ান শিলিংটন

4
@MikeBrant আমি চাই ক্যোয়ারী (স্ক্যান করা হয়, যা সৌন্দর্য সারণিতে প্রতিটি আইটেম এ, এটা খুবই অদক্ষ এবং costy উপার্জন) একটি সারণীর GSI হ্যাশ কী (CreatedAt) বৃহত্তর-তুলনায় প্রতীক ব্যবহার করে একটি টেবিল। আমি যতদূর জানি, এটি করা যায় না।
আজিজজ 1

4
প্রাথমিক পার্টিশন হিসাবে তারিখটি ব্যবহার করার সময় আপনি সম্ভবত যে সমস্যাটি পেয়েছেন তা হ'ল আপনি সম্ভবত কিছু বা অন্য কোনও সমকক্ষকে হটস্পট তৈরি করতে পারেন, এই কারণে যে বেশিরভাগ ডেটা স্টোরেজে নতুন ডেটা পুরানো ডেটার চেয়ে প্রায়শই অনুসন্ধান করা হয়।
জ্ঞান

54

আপনার বর্তমান সারণী কাঠামো দেওয়া এটি বর্তমানে ডায়নামোডিবিতে সম্ভব নয়। বিশাল চ্যালেঞ্জটি বুঝতে হবে যে টেবিলের হ্যাশ কী (পার্টিশন) পৃথক সারণী তৈরি হিসাবে বিবেচনা করা উচিত। কিছু উপায়ে এটি সত্যই শক্তিশালী (প্রতিটি ব্যবহারকারীর বা গ্রাহকের জন্য একটি নতুন টেবিল তৈরির জন্য পার্টিশন কীগুলি সম্পর্কে ভাবুন ইত্যাদি)।

প্রশ্নগুলি কেবল একটি একক পার্টিশনে করা যেতে পারে। সত্যিই গল্পটির শেষ। এর অর্থ যদি আপনি তারিখ অনুসারে জিজ্ঞাসা করতে চান (আপনি যুগের পর থেকে ম্যাসি ব্যবহার করতে চান), তবে আপনি যে আইটেমগুলি একটি একক ক্যোয়ারিতে পুনরুদ্ধার করতে চান তার অবশ্যই হ্যাশ (পার্টিশন কী) থাকতে হবে।

আমার এই যোগ্যতা অর্জন করা উচিত আপনি scanযে মানদণ্ডটি সন্ধান করছেন তা আপনি একেবারেই করতে পারেন , এটি কোনও সমস্যা নয় তবে এর অর্থ হল আপনি আপনার টেবিলের প্রতিটি একক সারিটির দিকে তাকিয়ে থাকবেন এবং তারপরে সেই সারির কোনও তারিখ রয়েছে যা আপনার পরামিতিগুলির সাথে মেলে checking এটি সত্যিই ব্যয়বহুল, বিশেষ করে যদি আপনি প্রথম স্থানে তারিখ অনুসারে ইভেন্টগুলি সংরক্ষণের ব্যবসায় করেন (যেমন আপনার প্রচুর সারি রয়েছে))

সমস্যাটি সমাধান করার জন্য আপনাকে সমস্ত ডেটা একক পার্টিশনে রাখার জন্য প্রলুব্ধ করতে পারেন এবং আপনি একেবারেই করতে পারেন, তবে আপনার থ্রুপুটটি বেদনাদায়কভাবে কম হবে, প্রতিটি পার্টিশন কেবলমাত্র মোট সেট পরিমাণের একটি ভগ্নাংশ পেয়ে থাকে।

করণীয় হ'ল সর্বোত্তম কাজটি ডেটা সংরক্ষণ করতে আরও কার্যকর পার্টিশন নির্ধারণ করা হয়:

  • আপনার কি সত্যিই সমস্ত সারিটি দেখার প্রয়োজন, বা এটি কোনও নির্দিষ্ট ব্যবহারকারীর দ্বারা কেবল সারিগুলি রয়েছে?

  • প্রথমে মাস অনুসারে তালিকাটি সংকীর্ণ করা এবং একাধিক প্রশ্ন (প্রতিটি মাসের জন্য একটি) করা কি ঠিক হবে? বা বছর দ্বারা?

  • আপনি যদি সময় সিরিজ বিশ্লেষণ করে থাকেন তবে বেশ কয়েকটি বিকল্প রয়েছে, পার্টিশন কীটি আরও সহজ PUTকরে queryতুলতে কিছুকে গণনা করাতে পরিবর্তন করুন , বা কাইনিসের মতো আরও একটি অ্যাডস পণ্য ব্যবহার করুন যা কেবলমাত্র লগিং সংযোজন করতে পারে।


4
"বছরের পর বছর" বিবেচনা করার বিষয়ে আপনি আপনার শেষ অনুচ্ছেদে যে বিকল্পটি দিয়েছেন তা জোর দিতে চাই। এটির মতো yyyyহ্যাশ এবং হ্যাশ তৈরি করুন , তবে এমন একটি createdতারিখও তৈরি করুন যা আপনি আপনার রেঞ্জ কী হিসাবে ব্যবহার করতে পারেন। তারপরে আপনি প্রতিবছর 10 জিবি ডেটা পাবেন (দিনে 27 মেগাবাইট) যা আরও পরিস্থিতিতে সম্ভবত ভাল। এর অর্থ এই নয় যে তারিখের অনুসন্ধানগুলি বর্ষসীমার সীমানা পেরিয়ে গেলে আপনাকে প্রতি বছর একটি ক্যোয়ারী তৈরি করতে হবে তবে কমপক্ষে এটি কাজ করবে এবং এটি একটি ডামি হ্যাশ কী তৈরির চেয়ে নিরাপদ।
রায়ান শিলিংটন


4
উপরের লিঙ্কটি যেমন ব্যাখ্যা করেছে, কঠোরভাবে সময়-ভিত্তিক পার্টিশন কীগুলি গরম দাগ তৈরি করতে পারে। আপনার যদি সময় ভিত্তিক পার্টিশন কী ব্যবহার করতেই হয় তবে একাধিক পার্টিশনের মাধ্যমে সময়কাল ছড়িয়ে দেওয়ার জন্য পার্টিশন কীতে অন্য কিছু উপাদান যুক্ত করা ভাল। আমি কেবল 0-n এর মধ্যে একটি উপসর্গ ব্যবহার করার পরামর্শ দেখেছি যেখানে n প্রতিবার বালতিতে ছড়িয়ে থাকা পার্টিশনের সংখ্যা।
dres

@ রায়ানশিলিংটন গ্লোবাল মাধ্যমিক সূচকগুলিতে কোনও 10 জিবি সীমা নেই । এই সীমাটি কেবলমাত্র স্থানীয় মাধ্যমিক সূচকগুলিতে প্রযোজ্য ।
সাইমন ফারসবার্গ

"প্রতিটি পার্টিশন মোট সেট পরিমাণের একটি ভগ্নাংশ পায়" - অভিযোজিত ক্ষমতার কারণে এটি আর সত্য নয় । আমার কাছে মনে হচ্ছে আপনার টেবিলে একটি ডামি বৈশিষ্ট্য থাকতে পারে যা সর্বদা একই মান। তারপরে পার্টিশন কী এবং CreatedAtসাজানোর কী হিসাবে ডামি অ্যাট্রিবিউটটি ব্যবহার করে একটি গ্লোবাল মাধ্যমিক সূচক রয়েছে । তারপরে আপনি সমস্ত আইটেম জুড়ে তারিখ অনুসারে জিজ্ঞাসা করতে পারেন। হ্যাকি মনে হচ্ছে, তবে এর চেয়ে ভাল উপায়
বেনেট ম্যাকএলওয়ে

18

নীচের মত একটি গ্লোবাল সেকেন্ডারি ইনডেক্স তৈরি করে এই সমস্যার সমাধান করতে আমি অনুসরণ করা পদ্ধতির নাম is এটি সেরা পদ্ধতির কিনা তা নিশ্চিত নন তবে আশা করি এটি কারও পক্ষে কার্যকর।

Hash Key                 | Range Key
------------------------------------
Date value of CreatedAt  | CreatedAt

24 ঘন্টা থেকে ডিফল্ট, ডেটা পুনরুদ্ধার করার দিনগুলির সংখ্যা নির্দিষ্ট করতে HTTP API ব্যবহারকারীর উপর সীমাবদ্ধতা আরোপ করা হয়েছে।

এইভাবে, আমি সর্বদা হ্যাশকেকে বর্তমান তারিখের দিন হিসাবে নির্দিষ্ট করতে পারি এবং রেঞ্জকী পুনরুদ্ধারের সময়> এবং <অপারেটরগুলি ব্যবহার করতে পারে। এই উপাত্তটি একাধিক শার্ডেও ছড়িয়ে পড়ে।


8

আপনার হ্যাশ কী (সাজানোর প্রাথমিক) অনন্য হতে হবে (যদি না আপনি অন্যদের দ্বারা বর্ণিত মত সীমা থাকে)।

আপনার ক্ষেত্রে, আপনার টেবিলটি জিজ্ঞাসা করার জন্য আপনার কাছে একটি গৌণ সূচক থাকা উচিত।

|  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 টি আইটেমের মধ্যে সীমাবদ্ধ)।

এটি করার সর্বোত্তম উপায় এটি নাও হতে পারে তবে আরডি করতে ব্যবহৃত কারও পক্ষে (আমি এসকিউএলও ব্যবহার করি) এটি উত্পাদনশীল হওয়ার দ্রুততম উপায়। যেহেতু স্কিমা সম্পর্কিত কোনও বাধা নেই, তাই আপনি কাজ করতে পারেন এমন কিছু বেত্রাঘাত করতে পারেন এবং একবার আপনার কাছে ব্যান্ডউইদথকে সবচেয়ে কার্যকর উপায়ে কাজ করার পরে, আপনি চারপাশের জিনিসগুলি পরিবর্তন করতে পারেন।


4
আপনি বলছেন যে কোনও বাধা নেই, তবে আপনার জানা উচিত যে এই পদ্ধতির অর্থ আপনি সর্বোচ্চ 10 জিবি ডেটা (একক পার্টিশনের সর্বাধিক) সঞ্চয় করতে পারবেন।
রায়ান শিলিংটন

যদি ডেটাআইডি জানা থাকে তবে এটিই হবে। তবে এখানে আমাদের প্রতিটি সারি পাওয়া দরকার যার জন্য তৈরি করা কিছু তারিখের চেয়ে বেশি।
ইয়াসিথ প্রবুধাকা

3

আপনি কোনও 'পণ্য বিভাগ' আইডির লাইন ধরে হ্যাশ কী তৈরি করতে পারেন, তারপরে শেষের সাথে যুক্ত অনন্য আইডি সহ টাইমস্ট্যাম্পের সংমিশ্রণ হিসাবে রেঞ্জ কীটি। এইভাবে আপনি হ্যাশ কীটি জানেন এবং এখনও তার চেয়ে বড়টির সাথে তারিখটি জিজ্ঞাসা করতে পারেন।


1

আপনার একাধিক অভিন্ন হ্যাশ কী থাকতে পারে; তবে কেবলমাত্র যদি আপনার কাছে এমন একটি পরিসীমা কী থাকে যা পরিবর্তিত হয়। এটিকে ফাইল ফর্ম্যাটের মতো ভাবেন; একই ফোল্ডারে একই নামের 2 টি ফাইল থাকতে পারে যতক্ষণ না তাদের ফর্ম্যাট আলাদা থাকে। যদি তাদের ফর্ম্যাটটি একই হয় তবে তাদের নাম অবশ্যই আলাদা। ডায়নামোডিবির হ্যাশ / রেঞ্জ কীগুলিতে একই ধারণাটি প্রযোজ্য; কেবল হ্যাশটিকে নাম হিসাবে এবং বিন্যাস হিসাবে সীমা মনে করুন।

এছাড়াও, আমি মনে করতে পারি না ওপি-র সময় তাদের কাছে এগুলি ছিল কিনা (আমি বিশ্বাস করি না যে তারা করেছে) তবে তারা এখন স্থানীয় মাধ্যমিক সূচকগুলি সরবরাহ করে।

এগুলি সম্পর্কে আমার বুঝতে পারা যায় যে এটি এখন সম্পূর্ণ স্ক্যান না করে আপনাকে পছন্দসই প্রশ্নগুলি সম্পাদন করার অনুমতি দেবে। ক্ষতিটি হ'ল এই সূচিগুলি সারণী তৈরির সময় নির্দিষ্ট করতে হবে এবং কোনও আইটেম তৈরি করার সময়ও (আমি বিশ্বাস করি) ফাঁকা হতে পারে না। তদতিরিক্ত, তাদের অতিরিক্ত থ্রুপুট (সাধারণত স্ক্যানের চেয়ে বেশি না হলেও) এবং স্টোরেজ প্রয়োজন, তাই এটি কোনও নিখুঁত সমাধান নয়, কারও কারও পক্ষে একটি কার্যকর বিকল্প alternative

আমি ডাইনামোডিবি ব্যবহারের পছন্দসই পদ্ধতি হিসাবে এখনও মাইক ব্রেন্টের উত্তরটি সুপারিশ করি না; এবং নিজেই সেই পদ্ধতিটি ব্যবহার করুন। আমার ক্ষেত্রে, আমার আইডি হিসাবে কেবলমাত্র একটি হ্যাশ কী সহ একটি কেন্দ্রীয় টেবিল রয়েছে, তারপরে মাধ্যমিক টেবিলগুলিতে একটি হ্যাশ এবং ব্যাপ্তি রয়েছে যা জিজ্ঞাসা করা যেতে পারে, তারপরে আইটেমটি সরাসরি কেন্দ্রীয় টেবিলের "আগ্রহের আইটেম" এ কোডটি নির্দেশ করে, ।

গৌণ সূচকগুলি সম্পর্কিত অতিরিক্ত তথ্য এখানে অ্যামাজনের ডায়নামোডিবি ডকুমেন্টেশনে পাওয়া যাবে আগ্রহী তাদের জন্য।

যাইহোক, আশা করি এটি এই থ্রেডে ঘটে যাওয়া অন্য যে কোনও ব্যক্তিকে সহায়তা করবে।


আমি একটি ডায়নামোডিবি টেবিল তৈরি করার চেষ্টা করেছি যেখানে সেখানে টাইপ হ্যাশের'WWDDynamoDBKeySchemaElement 'তৈরি হয়েছে এবং আবার AWSDynamoDBKeySchemaElement' টাইপ রেঞ্জের 'তৈরি করা হয়েছে এবং আমি একটি ত্রুটি পেয়েছি যা ত্রুটি ডোমেন = com.amazonaws.AWSDynamoDoroger ব্যবহারকারী " = {__ টাইপ = com.amazon.coral.uthorate # বৈধতা ধারণা, বার্তা = হ্যাশ কী এবং কীস্কেমার রেঞ্জ কী উপাদান উভয়েরই একই নাম}} সুতরাং আপনি যা বলছেন তা সঠিক বলে আমি মনে করি না।
ব্যবহারকারী1709076

আমি বিশ্বাস করি আপনি ভুল বুঝেছেন (যদিও আমি মনে করি আমি আমার বর্ণনায় খুব পরিষ্কার ছিলাম না)। আপনার একটি টেবিলে একই নামের সাথে 2 টি আলাদা আলাদা বৈশিষ্ট্য (কলাম) থাকতে পারে না, তবে আপনি যখন একটি রেঞ্জ কী দিয়ে একটি হ্যাশ কী তৈরি করেন, আপনার একাধিক আইটেম থাকতে পারে যা সমস্ত একই হ্যাশ ব্যবহার করে যতক্ষণ না তাদের ব্যাপ্তি আলাদা হয়, এবং vise- বিপরীত। উদাহরণস্বরূপ: আপনার হ্যাশটি "আইডি" এবং আপনার পরিসীমা "তারিখ" আপনার আইডি "1234" হিসাবে তার তারিখের চেয়ে পৃথক থাকতে পারে তার 2 টি উদাহরণ থাকতে পারে।
ডিজোলবার্গ

আহ ডি গোল্ডবার্গ! আমি এখন আপনাকে পেতে। দারুণ. সুতরাং আমার ক্ষেত্রে যেহেতু কেবলমাত্র এবং সর্বদা কেবল 'তারিখ = x' পরে পাঠ্য বার্তাগুলির জন্য জিজ্ঞাসা করতে চাই, দেখে মনে হচ্ছে যে আমি সমস্ত পাঠ্য বার্তাগুলি একই 'নকল_হ্যাশ = 1' রাখতে সেট করতে পারি। তারপরে আমার ক্যোয়ারী.কিসিন্ডিশনএক্সপ্রেশন = @ "ভুয়া_হ্যাশ = 1 এবং # তারিখ>: ভাল" করুন। আপনাকে অনেক ধন্যবাদ. আপনার যদি অন্য কোনও ইনপুট থাকে তবে আমি এটি শুনে খুশী হব কারণ হ্যাশ থাকা কি সর্বদাই একই মান বলে মনে হয় না?
ব্যবহারকারী1709076

আমাকে আবার যাচাই করতে হবে, তবে আমি নিশ্চিত যে আপনি হ্যাশ-কেবল টেবিলগুলিতে কোয়েরি করতে পারবেন ... যদিও আপনি যদি একটি হ্যাশ হিসাবে একটি তারিখ / সময় স্ট্যাম্প ব্যবহার করেন তবে আমি নীচে রেকর্ড করার পরামর্শ দেব মিলি সেকেন্ড বা ন্যানো / মাইক্রোসেকেন্ডস এর মতো সংক্ষিপ্ততম ইউনিট (কোডটি রেকর্ড করতে পারে এমন ক্ষুদ্রতম ইউনিট যাই হোক না কেন), যাতে তারিখ / সময়কে ওভারল্যাপ করার সম্ভাবনা হ্রাস পায় reduce অতিরিক্তভাবে, ওভারল্যাপের সম্ভাবনাটি আরও কমাতে আপনি আশাবাদী লকিং যুক্ত করতে পারেন: ডকস.এসএএস.মাজোন.com / amazondynamodb / latest / developerguide /… দ্বন্দ্ব থাকলে কেবল আবার একবার চেষ্টা করুন।
ডিজগলবার্গ

-11

আপডেট করা উত্তর অনুমানযোগ্য থ্রুপুট সহ ডায়নামো ডিবি ক্যোয়ারীগুলি ব্যবহার করে এটি করার কোনও সুবিধাজনক উপায় নেই। একটি (সাব অনুকূল) বিকল্পটি হ'ল একটি কৃত্রিম হ্যাশকি এবং ক্রিয়েটেডএটি সহ একটি জিএসআই ব্যবহার করা। তারপরে একা হ্যাশকে জিজ্ঞাসা করুন এবং ফলাফলগুলি অর্ডার করতে স্ক্যানইন্ডেক্স ফরওয়ার্ডের উল্লেখ করুন। যদি আপনি একটি প্রাকৃতিক হ্যাশকি নিয়ে আসতে পারেন (আইটেমের বিভাগ ইত্যাদি বলুন) তবে এই পদ্ধতিটি বিজয়ী। অন্যদিকে, আপনি যদি সমস্ত আইটেমের জন্য একই হ্যাশকে রাখেন, তবে আপনার ডেটা সেটটি 10 ​​গিগাবাইটের (এক পার্টিশন) ছাড়িয়ে যখন বাড়বে তখন বেশিরভাগ ক্ষেত্রে এটি থ্রুপুটটিকে প্রভাবিত করবে

আসল উত্তর: আপনি এখন জিএসআই ব্যবহার করে ডায়নামোডিবিতে এটি করতে পারেন। "CreatedAt" ক্ষেত্রটিকে একটি জিএসআই হিসাবে তৈরি করুন এবং (জিটি কিছু_ তারিখ) এর মতো প্রশ্নের ইস্যু করুন। এই ধরণের প্রশ্নের জন্য তারিখটিকে একটি সংখ্যা (যুগের পর থেকে ম্যাসেকস) হিসাবে সংরক্ষণ করুন।

বিশদগুলি এখানে উপলভ্য: গ্লোবাল মাধ্যমিক সূচকগুলি - অ্যামাজন ডায়নামোডিবি: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Using

এটি একটি খুব শক্তিশালী বৈশিষ্ট্য। সচেতন হন যে কোয়েরিটি সীমাবদ্ধ (EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN) শর্ত - আমাজন ডায়নামোডিবি: http://docs.aws.amazon.com/amazondynamodb/latest/APIReferences/API_Condition.html


32
আমি হ্রাস পেয়েছি কারণ আমি যতটা বলতে পারি, আপনার উত্তরটি ভুল is অনেকটা টেবিলের প্রাথমিক কী-এর মতো, আপনি কেবলমাত্র EQ অপারেটরের সাথে জিএসআই-এর হ্যাশ কীটি অনুসন্ধান করতে পারেন। যদি আপনি বোঝাচ্ছেন যে CreatedAtএটি জিএসআই এর রেঞ্জ কী হওয়া উচিত, তবে আপনাকে একটি হ্যাশ কী নির্বাচন করতে হবে - এবং আপনি যেখানে ফিরে এসেছেন সেখানে ফিরে এসেছেন, কারণ আপনি CreatedAtকেবলমাত্র নির্দিষ্ট মানের জন্য জিটি-তে জিজ্ঞাসা করতে সক্ষম হবেন হ্যাশ কী.
PaF

PaF এর সাথে একমত তৈরির সময় হিসাবে হ্যাশ কী সহ একটি জিএসআই ব্যবহার করা ওপিতে জিজ্ঞাসা করা প্রশ্নের সাথে সহায়তা করে না।
4-8-15-16-23-42
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.