ডাইনামোডিবি-তে বিশ্লেষণ ইঞ্জিনিয়ারিং দলগুলিকে প্রায়শই DynamoDB থেকে ডেটাতে জটিল ফিল্টার, সমষ্টি এবং পাঠ্য অনুসন্ধান চালানোর প্রয়োজন হয়। যাইহোক, DynamoDB হল একটি অপারেশনাল ডাটাবেস যা লেনদেন প্রক্রিয়াকরণের জন্য অপ্টিমাইজ করা হয়েছে এবং রিয়েল-টাইম বিশ্লেষণের জন্য নয়। ফলস্বরূপ, অনেক ইঞ্জিনিয়ারিং দল DynamoDB-এর বিশ্লেষণে সীমাবদ্ধ এবং বিকল্প বিকল্পগুলির দিকে নজর দেয়। কারণ অপারেশনাল ওয়ার্কলোডের এক্সেস প্যাটার্ন জটিল অ্যানালিটিকাল ওয়ার্কলোডের চেয়ে আলাদা। DynamoDB শুধুমাত্র একটি সীমিত সেট অপারেশন সমর্থন করে, যা বিশ্লেষণকে চ্যালেঞ্জিং করে তোলে এবং কিছু পরিস্থিতিতে সম্ভব হয় না। এমনকি , DynamoDB-এর পিছনে কোম্পানি, কোম্পানিগুলিকে অন্যান্য উদ্দেশ্য-নির্মিত সমাধানগুলিতে বিশ্লেষণগুলি অফলোড করার কথা বিবেচনা করার পরামর্শ দেয়৷ একটি সমাধান যা সাধারণত উল্লেখ করা হয় তা হল ইলাস্টিকসার্চ যা আমরা আজকে ডাইভিং করব। AWS সবচেয়ে জনপ্রিয় NoSQL ডাটাবেসগুলির মধ্যে একটি এবং এটি গেমিং, সোশ্যাল মিডিয়া, IoT এবং আর্থিক পরিষেবাগুলিতে অনেক ওয়েব-স্কেল কোম্পানি দ্বারা ব্যবহৃত হয়। DynamoDB হল তার পরিমাপযোগ্যতা এবং সরলতার জন্য পছন্দের ডাটাবেস, প্রতি সেকেন্ডে 20M অনুরোধের স্কেলে একক-অঙ্কের মিলিসেকেন্ড কর্মক্ষমতা সক্ষম করে। স্কেলে এই গতি অর্জনের জন্য, DynamoDB অপারেশনাল ওয়ার্কলোড- উচ্চ ফ্রিকোয়েন্সি, ডেটার স্বতন্ত্র রেকর্ডে কম লেটেন্সি অপারেশনগুলির জন্য পারফরম্যান্সের উপর দৃষ্টি নিবদ্ধ করে। DynamoDB হল একটি ওপেন সোর্স ডিস্ট্রিবিউটেড সার্চ ইঞ্জিন যা লুসিনে তৈরি এবং টেক্সট সার্চ এবং লগ অ্যানালিটিক্স ব্যবহারের ক্ষেত্রে ব্যবহৃত হয়। ইলাস্টিকসার্চ হল বৃহত্তর ELK স্ট্যাকের অংশ যার মধ্যে রয়েছে কিবানা, বিশ্লেষণাত্মক ড্যাশবোর্ডের জন্য একটি ভিজ্যুয়ালাইজেশন টুল। যদিও ইলাস্টিকসার্চ নমনীয় এবং অত্যন্ত কাস্টমাইজযোগ্য হওয়ার জন্য পরিচিত, এটি একটি জটিল বিতরণ ব্যবস্থা যার কার্যক্ষম থাকার জন্য ক্লাস্টার এবং সূচক অপারেশন এবং ব্যবস্থাপনা প্রয়োজন। ইলাস্টিক এবং এডব্লিউএস থেকে ইলাস্টিকসার্চের ম্যানেজড অফার পাওয়া যায়, তাই আপনাকে EC2 দৃষ্টান্তে এটি চালানোর প্রয়োজন নেই। ইলাস্টিকসার্চ নির্লজ্জ প্লাগ: হল ক্লাউডের জন্য তৈরি একটি রিয়েল-টাইম অ্যানালিটিক্স ডাটাবেস। এটিতে DynamoDB-তে একটি অন্তর্নির্মিত সংযোগকারী রয়েছে এবং সাব-সেকেন্ড অনুসন্ধান, সমষ্টি এবং যোগদানের জন্য ডেটা ইনজেস্ট এবং ইনডেক্স করে। কিন্তু এই পোস্টটি DynamoDB এবং Elasticsearch-এর ব্যবহারের ক্ষেত্রে হাইলাইট করার বিষয়ে, যদি আপনি সেই বিকল্পটি অন্বেষণ করতে চান। রকসেট AWS Lambda ব্যবহার করে DynamoDB কে ইলাস্টিক সার্চের সাথে সংযুক্ত করা হচ্ছে বিশ্লেষণের জন্য ইলাস্টিকসার্চে DynamoDB ডেটা ক্রমাগত লোড করতে আপনি AWS Lambda ব্যবহার করতে পারেন। এখানে কিভাবে এটা কাজ করে: থেকে ইলাস্টিকসার্চে প্রতিটি আপডেট সিঙ্ক করতে একটি ল্যাম্বডা ফাংশন তৈরি করুন DynamoDB স্ট্রীম বিদ্যমান DynamoDB টেবিলের একটি স্ন্যাপশট নিতে এবং ইলাস্টিকসার্চে পাঠাতে একটি ল্যাম্বডা ফাংশন তৈরি করুন। DynamoDB টেবিলের বিষয়বস্তু পড়ার জন্য আপনি একটি বা একটি ব্যবহার করতে পারেন। EC2 স্ক্রিপ্ট Amazon Kinesis স্ট্রিম DynamoDB-এর জন্য জড়িত ইলাস্টিকসার্চে ডেটা সিঙ্ক করার একটি বিকল্প পদ্ধতি রয়েছে কিন্তু এটি বর্তমানে সমর্থিত নয় এবং কনফিগার করা জটিল হতে পারে। Logstash প্লাগইন ইলাস্টিক সার্চ ব্যবহার করে ডায়নামোডিবি ডেটাতে পাঠ্য অনুসন্ধান পাঠ্য অনুসন্ধান হল সবচেয়ে প্রাসঙ্গিক ফলাফল খুঁজে পেতে একটি নথির ভিতরে পাঠ্য অনুসন্ধান করা। প্রায়শই, আপনি সর্বোত্তম ফলাফল খুঁজে পেতে একটি শব্দের একটি অংশ, একটি প্রতিশব্দ বা শব্দের বিপরীত শব্দ বা শব্দের একটি স্ট্রিং একসাথে অনুসন্ধান করতে চাইবেন। কিছু অ্যাপ্লিকেশন এমনকি তাদের গুরুত্বের উপর ভিত্তি করে ভিন্নভাবে অনুসন্ধান পদকে ওজন করবে। ডাইনামোডিবি ডেটা ফিল্টার ডাউন করতে সাহায্য করার জন্য পার্টিশন ব্যবহার করে কিছু সীমিত পাঠ্য অনুসন্ধান ব্যবহারের ক্ষেত্রে সমর্থন করতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি ইকমার্স সাইট হন, আপনি একটি পণ্য বিভাগের উপর ভিত্তি করে DynamoDB-তে ডেটা ভাগ করতে পারেন এবং তারপরে মেমরিতে অনুসন্ধান চালাতে পারেন। স্পষ্টতই, এভাবেই প্রচুর পাঠ্য অনুসন্ধান ব্যবহারের ক্ষেত্রে পরিচালনা করে। DynamoDB একটি সমর্থন করে যা আপনাকে একটি স্ট্রিং খুঁজে পেতে সক্ষম করে যাতে ডেটার একটি নির্দিষ্ট সাবস্ট্রিং রয়েছে। Amazon.com খুচরা বিভাগ অন্তর্ভুক্ত ফাংশন একটি ই-কমার্স সাইট পণ্য বিভাগের উপর ভিত্তি করে ডেটা ভাগ করতে পারে। ব্র্যান্ড এবং রঙের মতো অনুসন্ধান করা ডেটার সাথে অতিরিক্ত বৈশিষ্ট্যগুলি দেখানো হতে পারে। এমন পরিস্থিতিতে যেখানে সম্পূর্ণ পাঠ্য অনুসন্ধান আপনার অ্যাপ্লিকেশনের মূল বিষয়, আপনি একটি প্রাসঙ্গিকতা র্যাঙ্কিং সহ ইলাস্টিকসার্চের মতো একটি সার্চ ইঞ্জিন ব্যবহার করতে চাইবেন। ইলাস্টিকসার্চে উচ্চ স্তরে পাঠ্য অনুসন্ধান কীভাবে কাজ করে তা এখানে: : ইলাস্টিকসার্চের একটি প্রাসঙ্গিকতা র্যাঙ্কিং রয়েছে যা এটি সার্চের ফলাফলে বাক্সের বাইরে দেয় অথবা আপনি আপনার নির্দিষ্ট অ্যাপ্লিকেশন ব্যবহারের ক্ষেত্রে র্যাঙ্কিং কাস্টমাইজ করতে পারেন। ডিফল্টরূপে, ইলাস্টিকসার্চ শব্দ ফ্রিকোয়েন্সি, ইনভার্স ডকুমেন্ট ফ্রিকোয়েন্সি এবং ফিল্ড-লেংথ আদর্শের উপর ভিত্তি করে একটি র্যাঙ্কিং স্কোর তৈরি করবে। প্রাসঙ্গিকতা র্যাঙ্কিং : ইলাস্টিকসার্চ টেক্সটকে টোকেনে ভাগ করে ডাটা ইনডেক্স করে, যাকে বলা হয় টোকেনাইজিং। বিশ্লেষক তারপর অনুসন্ধান ফলাফল উন্নত করার জন্য স্বাভাবিক পদ প্রয়োগ করা হয়. সাধারণ, বহু-ভাষা সমর্থন প্রদানের জন্য ডিফল্ট স্ট্যান্ডার্ড বিশ্লেষক ইউনিকোড কনসোর্টিয়াম অনুসারে পাঠ্যকে বিভক্ত করে। টেক্সট এনালাইসিস ইলাস্টিকসার্চ-এ অস্পষ্ট অনুসন্ধান, স্বয়ংক্রিয়-সম্পূর্ণ অনুসন্ধান এবং এমনকি আরও উন্নত প্রাসঙ্গিকতা আপনার অ্যাপ্লিকেশনের সুনির্দিষ্ট বিষয়গুলি পূরণ করার জন্য কনফিগার করা যেতে পারে। ইলাস্টিকসার্চ ব্যবহার করে ডায়নামোডিবি ডেটাতে জটিল ফিল্টার জটিল ফিল্টারগুলি ফলাফল সেটকে সংকুচিত করতে ব্যবহৃত হয়, যার ফলে দ্রুত এবং আরও দক্ষতার সাথে ডেটা পুনরুদ্ধার করা হয়। অনেক অনুসন্ধানের পরিস্থিতিতে, আপনি একাধিক ফিল্টার বা ফিল্টার একত্রিত করতে চাইবেন, যেমন একটি নির্দিষ্ট সময়ের মধ্যে ডেটার পরিসরে। DynamoDB পার্টিশন ডেটা এবং একটি ভাল পার্টিশন কী নির্বাচন করা ডেটা ফিল্টারিংকে আরও দক্ষ করে তুলতে সাহায্য করতে পারে। DynamoDB এছাড়াও সেকেন্ডারি ইনডেক্স সমর্থন করে যাতে আপনি আপনার ডেটা প্রতিলিপি করতে পারেন এবং অতিরিক্ত ফিল্টার সমর্থন করার জন্য একটি ভিন্ন প্রাথমিক কী ব্যবহার করতে পারেন। আপনার ডেটার জন্য একাধিক অ্যাক্সেস প্যাটার্ন থাকলে সহায়ক হতে পারে। সেকেন্ডারি ইনডেক্স উদাহরণস্বরূপ, একটি লজিস্টিক অ্যাপ্লিকেশন তাদের ডেলিভারির অবস্থার উপর ভিত্তি করে আইটেমগুলিকে ফিল্টার করার জন্য ডিজাইন করা যেতে পারে। DynamoDB-তে এই দৃশ্যটি মডেল করার জন্য, আমরা এর একটি পার্টিশন কী, এবং বৈশিষ্ট্যের ক্রেতা, এবং এর একটি সাজানোর কী সহ লজিস্টিকসের জন্য একটি বেস টেবিল তৈরি করব। Item_ID Status ETA SLA ডেলিভারি বিলম্ব যখন SLA ছাড়িয়ে যায় তখন আমাদের DynamoDB-তে একটি অতিরিক্ত অ্যাক্সেস প্যাটার্ন সমর্থন করতে হবে। DynamoDB-তে সেকেন্ডারি ইনডেক্সগুলি শুধুমাত্র SLA ছাড়িয়ে যাওয়া ডেলিভারির জন্য ফিল্টার ডাউন করার জন্য ব্যবহার করা যেতে পারে। ফিল্ডে একটি সূচক তৈরি করা হবে যা বেস টেবিলে ইতিমধ্যেই ETA অ্যাট্রিবিউটের প্রতিরূপ। এই ডেটা শুধুমাত্র তে অন্তর্ভুক্ত করা হয় যখন ETA SLA ছাড়িয়ে যায়। সেকেন্ডারি ইনডেক্স হল একটি স্পার্স ইনডেক্স, যা ক্যোয়ারীতে স্ক্যান করা প্রয়োজন এমন ডেটার পরিমাণ কমিয়ে দেয়। হল পার্টিশন কী এবং সাজানোর কী হল । ETADelayedBeyondSLA ETADelayedBeyondSLA buyer ETADelayedBeyondSLA সেকেন্ডারি ইনডেক্স জটিল ফিল্টার যুক্ত অ্যাক্সেস প্যাটার্ন সহ অ্যাপ্লিকেশনে একাধিক অ্যাক্সেস প্যাটার্ন সমর্থন করতে ব্যবহার করা যেতে পারে। DynamoDB এর ক্যোয়ারী এবং স্ক্যান এপিআই-এ একটি অপারেশন রয়েছে যা একটি এক্সপ্রেশনের সাথে মেলে না এমন ফলাফলগুলিকে ফিল্টার করতে। শুধুমাত্র একটি ক্যোয়ারী বা স্ক্যান টেবিল অপারেশনের পরে প্রয়োগ করা হয় তাই আপনি এখনও একটি প্রশ্নের জন্য 1MB ডেটা সীমার সাথে আবদ্ধ। এটি বলেছে, অ্যাপ্লিকেশন লজিককে সরল করতে, প্রতিক্রিয়া পেলোডের আকার হ্রাস করতে এবং সময়-টু-লাইভ মেয়াদের বৈধতা দিতে সহায়ক। সংক্ষেপে, আপনাকে এখনও আপনার অ্যাপ্লিকেশনের অ্যাক্সেস প্যাটার্ন অনুসারে আপনার ডেটা পার্টিশন করতে হবে বা DynamoDB-তে ডেটা ফিল্টার করতে সেকেন্ডারি ইনডেক্স ব্যবহার করতে হবে। ফিল্টার এক্সপ্রেশন filterexpression filterexpression DynamoDB দ্রুত ডেটা পুনরুদ্ধারের জন্য কী এবং মানগুলিতে ডেটা সংগঠিত করে এবং জটিল ফিল্টারিংয়ের জন্য আদর্শ নয়। যখন আপনার জটিল ফিল্টারের প্রয়োজন হয় তখন আপনি ইলাস্টিকসার্চের মতো একটি সার্চ ইঞ্জিনে যেতে চাইতে পারেন কারণ এই সিস্টেমগুলি খড়ের গাদা প্রশ্নে সুইয়ের জন্য আদর্শ। ইলাস্টিকসার্চে, ডেটা একটি অনুসন্ধান সূচকে সংরক্ষণ করা হয় যার অর্থ নথিগুলির তালিকা যার জন্য কলাম-মান একটি পোস্টিং তালিকা হিসাবে সংরক্ষণ করা হয়। যেকোন ক্যোয়ারী যার একটি পূর্বাভাস আছে (যেমন: user=A) দ্রুত প্রেডিকেটকে সন্তুষ্ট করে এমন নথির তালিকা আনতে পারে। যেহেতু পোস্টিং তালিকাগুলি সাজানো হয়েছে, সেগুলি কোয়েরির সময় দ্রুত একত্রিত করা যেতে পারে যাতে সমস্ত ফিল্টারিং মানদণ্ড পূরণ করা হয়। ইলাস্টিকসার্চ ঘন ঘন অ্যাক্সেস করা জটিল ফিল্টার প্রশ্নের পুনরুদ্ধার প্রক্রিয়াকে দ্রুততর করতে ব্যবহার করে। WHERE সহজ ক্যাশিং ফিল্টার ক্যোয়ারী, সাধারণত ইলাস্টিকসার্চে হিসাবে উল্লেখ করা হয়, টেক্সট সার্চ কোয়েরির চেয়ে দ্রুত এবং আরও দক্ষতার সাথে ডেটা পুনরুদ্ধার করতে পারে। কারণ এই প্রশ্নের জন্য প্রাসঙ্গিকতার প্রয়োজন নেই। তদুপরি, ইলাস্টিকসার্চ সীমার প্রশ্নগুলিকেও সমর্থন করে যা একটি উপরের এবং নীচের সীমানার মধ্যে দ্রুত ডেটা পুনরুদ্ধার করা সম্ভব করে (যেমন: 0-5 এর মধ্যে )। নন-স্কোরিং ক্যোয়ারী age ইলাস্টিকসার্চ ব্যবহার করে ডায়নামোডিবি ডেটার সমষ্টি ব্যবসায়িক বুদ্ধিমত্তা বা প্রবণতা বিশ্লেষণের জন্য যখন ডেটা সংগ্রহ করা হয় এবং সংক্ষিপ্ত আকারে প্রকাশ করা হয় তখন একত্রীকরণ হয়। উদাহরণস্বরূপ, আপনি রিয়েল-টাইমে আপনার অ্যাপ্লিকেশনের জন্য ব্যবহারের মেট্রিক্স দেখাতে চাইতে পারেন। DynamoDB সমষ্টিগত ফাংশন সমর্থন করে না। AWS দ্বারা সুপারিশকৃত সমাধান হল ব্যবহার করা একটি DynamoDB টেবিলে ডেটার একটি সমষ্টিগত দৃশ্য বজায় রাখতে। DynamoDB এবং Lambda আসুন একটি উদাহরণ হিসাবে টুইটারের মতো একটি সোশ্যাল মিডিয়া সাইটে ব্যবহার করি৷ আমরা প্রাথমিক কী এবং তারপর সাজানোর কীটি টাইম উইন্ডোতে পরিণত করব যার দ্বারা আমরা লাইকগুলি একত্রিত করছি। এই ক্ষেত্রে, আমরা DynamoDB স্ট্রীমগুলি সক্ষম করব এবং একটি Lambda ফাংশন সংযুক্ত করব যাতে টুইটগুলি পছন্দ (বা অপছন্দ) হওয়ার সাথে সাথে সেগুলিকে একটি টাইমস্ট্যাম্প সহ ট্যাবুল করা হয় (যেমন: )। একত্রিত পছন্দগুলি tweet_ID like_count last_ updated এই পরিস্থিতিতে, DynamoDB স্ট্রীম এবং Lambda ফাংশনগুলি টেবিলে একটি বৈশিষ্ট্য হিসাবে একটি like_count ট্যাব্যুলেট করতে ব্যবহৃত হয়। আরেকটি বিকল্প হল ইলাস্টিকসার্চের মতো অন্য ডাটাবেসে সমষ্টিগুলি অফলোড করা। ইলাস্টিকসার্চ এটির মূল অংশে একটি অনুসন্ধান সূচক এবং একত্রিতকরণ ফাংশন সমর্থন করার জন্য এক্সটেনশন যুক্ত করেছে। এই এক্সটেনশনগুলির মধ্যে একটি হল , একটি কলাম-ভিত্তিক উপায়ে নথির মানগুলি সংরক্ষণ করার জন্য সূচকের সময়ে তৈরি একটি কাঠামো৷ কাঠামোটি ডিফল্টভাবে এমন ক্ষেত্রগুলিতে প্রয়োগ করা হয় যা ডক মান সমর্থন করে এবং কিছু স্টোরেজ ব্লোট রয়েছে যা ডক মানগুলির সাথে আসে। যদি আপনার শুধুমাত্র DynamoDB ডেটার একত্রিতকরণের জন্য সমর্থনের প্রয়োজন হয়, তাহলে একটি ডেটা গুদাম ব্যবহার করা আরও সাশ্রয়ী হতে পারে যা বিস্তৃত ডেটাসেটের উপর বিশ্লেষণাত্মক প্রশ্নের জন্য দক্ষতার সাথে ডেটা সংকুচিত করতে পারে। ডক মান এখানে কাঠামোর একটি উচ্চ-স্তরের ওভারভিউ রয়েছে: ইলাস্টিকসার্চের একত্রীকরণ : আপনি SQL ডাটাবেসের জগতে এর মতো বালতি করার কথা ভাবতে পারেন। আপনি ক্ষেত্রের মান বা ব্যাপ্তির উপর ভিত্তি করে নথিগুলিকে গোষ্ঠীভুক্ত করতে পারেন। ইলাস্টিকসার্চ বাকেট অ্যাগ্রিগেশনের মধ্যে নেস্টেড অ্যাগ্রিগেশন এবং প্যারেন্ট-চাইল্ড অ্যাগ্রিগেশনও অন্তর্ভুক্ত রয়েছে যা জয়েন সাপোর্টের অভাবের সাধারণ সমাধান। বালতি একত্রিতকরণ GROUP BY মেট্রিক্স আপনাকে নথির একটি সেটে , , , , , ইত্যাদির মতো গণনা করতে দেয়৷ মেট্রিক্স একটি বালতি সমষ্টির জন্য মান গণনা করতেও ব্যবহার করা যেতে পারে। মেট্রিক সমষ্টি: SUM COUNT AVG MIN MAX : পাইপলাইন একত্রিতকরণের ইনপুটগুলি নথির পরিবর্তে অন্যান্য সমষ্টি। সাধারণ ব্যবহারগুলির মধ্যে রয়েছে গড় এবং একটি মেট্রিকের উপর ভিত্তি করে সাজানো। পাইপলাইন সমষ্টি অ্যাগ্রিগেশন ব্যবহার করার সময় পারফরম্যান্সের প্রভাব থাকতে পারে, বিশেষ করে যখন আপনি । Elasticsearch স্কেল করেন DynamoDB-তে অনুসন্ধান, সমষ্টি এবং যোগদানের জন্য ইলাস্টিক সার্চের বিকল্প যদিও ইলাস্টিকসার্চ ডায়নামোডিবি থেকে ডেটার উপর জটিল অনুসন্ধান এবং একত্রিত করার জন্য একটি সমাধান, অনেক এই পছন্দটি নিয়ে উদ্বেগের প্রতিধ্বনি করেছেন। ইঞ্জিনিয়ারিং দলগুলি DynamoDB বেছে নেয় কারণ এটি বিচ্ছিন্ন এবং খুব কম অপারেশনাল ওভারহেডের সাথে স্কেলে ব্যবহার করা যেতে পারে। আমরা অন্য ব্লগে সেটআপ, রক্ষণাবেক্ষণ, ক্যোয়ারী করার ক্ষমতা এবং লেটেন্সির সহজে Athena, Spark এবং Rockset সহ জন্য কিছু অন্যান্য বিকল্পের মূল্যায়ন করেছি। সার্ভারহীন প্রবক্তারা DynamoDB-এ বিশ্লেষণের রকসেট হল ইলাস্টিকসার্চের একটি বিকল্প এবং অ্যালেক্স ডিব্রি রকসেটে এসকিউএল ব্যবহার করে মধ্য দিয়ে গেছে। রকসেট হল একটি ক্লাউড-নেটিভ ডাটাবেস যার সাথে একটি , এটিকে সহজ করে শুরু করা এবং বিশ্লেষণাত্মক ব্যবহারের ক্ষেত্রে স্কেল করা, যার মধ্যে জটিল যোগদানের ক্ষেত্রেও অন্তর্ভুক্ত রয়েছে। আপনি $300 ক্রেডিট সহ আমাদের ইলাস্টিকসার্চের বিকল্প হিসাবে Rockset অন্বেষণ করতে পারেন। ফিল্টারিং এবং সমষ্টিগত প্রশ্নের অন্তর্নির্মিত সংযোগকারী DynamoDB বিনামূল্যের ট্রায়ালে