Index ব্যবহার করে Query Optimization

Database Tutorials - ডাইনামোডিবি (DynamoDB) Indexes এবং Performance Optimization |
214
214

DynamoDB তে Query অপারেশন দ্রুত এবং কার্যকরীভাবে সম্পাদন করার জন্য Indexes ব্যবহার করা যেতে পারে। ইন্ডেক্সেস, ডেটার দ্রুত অনুসন্ধান এবং কুয়েরি অপটিমাইজেশন করতে সাহায্য করে। DynamoDB তে দুটি প্রধান ধরনের ইনডেক্স রয়েছে:

  1. Global Secondary Index (GSI)
  2. Local Secondary Index (LSI)

এই ইন্ডেক্সগুলি ব্যবহার করে আপনি কুয়েরির পারফরম্যান্স বৃদ্ধি করতে এবং ডেটা দ্রুত সেগমেন্ট করতে পারেন।


Index ব্যবহার করে Query Optimization - প্রধান ধারণা:

১. Global Secondary Index (GSI):

  • GSI এর মাধ্যমে আপনি টেবিলের প্রাথমিক চাবি (Partition key এবং Sort key) ছাড়াও অন্য যেকোনো অ্যাট্রিবিউটের উপর কুয়েরি চালাতে পারবেন।
  • এটি একটি অপশনাল ইনডেক্স এবং আপনি একাধিক GSI তৈরি করতে পারবেন।

গুণাবলী:

  • GSI এ আপনি বিভিন্ন Partition key এবং Sort key কনফিগার করতে পারেন, যা কুয়েরির দক্ষতা বাড়ায়।
  • GSI এর ডেটা প্রাথমিক টেবিলের সাথে প্রোপ্যাগেটেড হয়, তাই কুয়েরির ক্ষেত্রে দ্রুত ফলাফল পাওয়া যায়।

উদাহরণ: ধরুন আপনি একটি Products টেবিলের ডেটাবেসে কাজ করছেন এবং প্রাথমিক চাবি হিসেবে ProductID ব্যবহার করছেন। তবে, আপনি যদি Category অ্যাট্রিবিউটের উপর কুয়েরি করতে চান, তাহলে একটি GSI তৈরি করতে পারেন যেখানে Partition key হবে Category এবং Sort key হবে Price.

GSI নাম: CategoryIndex
Partition key: Category
Sort key: Price

GSI দিয়ে কুয়েরি করার উদাহরণ:

aws dynamodb query \
--table-name Products \
--index-name CategoryIndex \
--key-condition-expression "Category = :category" \
--expression-attribute-values '{":category":{"S":"Electronics"}}'

এই কুয়েরি দ্বারা আপনি Electronics ক্যাটেগরির সমস্ত পণ্য পাওয়ার জন্য দ্রুত ফলাফল পাবেন।

২. Local Secondary Index (LSI):

  • LSI ব্যবহার করে আপনি টেবিলের Primary key এর ওপর ভিত্তি করে অতিরিক্ত Sort key ব্যবহার করতে পারবেন।
  • LSI এর জন্য, আপনি একটি Partition key শেয়ার করেন যা মূল টেবিলের সাথে সামঞ্জস্যপূর্ণ, তবে Sort key আলাদা হতে পারে। এটি আপনার Query অপটিমাইজেশনে সাহায্য করে যখন আপনি নির্দিষ্ট অ্যাট্রিবিউটের ওপর ফিল্টার করতে চান।

গুণাবলী:

  • LSI শুধুমাত্র Provisioned থ্রুপুট ব্যবহারের সময় তৈরি করা যায় এবং এতে Read capacity units (RCU) এবং Write capacity units (WCU) এর ওপর কিছু বিধিনিষেধ থাকে।
  • LSI এর উপকারিতা হল যে এটি ডেটার অর্ডার পরিবর্তন করতে সাহায্য করে এবং দ্রুত ফলাফল প্রদান করে।

উদাহরণ: ধরুন আপনার Orders টেবিলের OrderID এবং CustomerID রয়েছে, এবং আপনি OrderDate অ্যাট্রিবিউটের উপর কুয়েরি করতে চান। এখানে, একটি LSI ব্যবহার করা হতে পারে।

LSI নাম: OrderDateIndex
Partition key: CustomerID
Sort key: OrderDate

LSI দিয়ে কুয়েরি করার উদাহরণ:

aws dynamodb query \
--table-name Orders \
--index-name OrderDateIndex \
--key-condition-expression "CustomerID = :customerId and OrderDate between :startDate and :endDate" \
--expression-attribute-values '{":customerId":{"S":"12345"}, ":startDate":{"S":"2023-01-01"}, ":endDate":{"S":"2023-12-31"}}'

এই কুয়েরি CustomerID 12345 এর সকল অর্ডার 2023-01-01 থেকে 2023-12-31 এর মধ্যে ফেরত দেবে।


Query Optimization এর জন্য কিছু কৌশল:

  1. ইন্ডেক্স সিলেকশন:
    • যখনই নতুন কুয়েরি তৈরি করবেন, ভালোভাবে ভাবুন কোন ইন্ডেক্স আপনাকে সহায়তা করবে। আপনি যদি একটি Category বা City অ্যাট্রিবিউটের ওপর কুয়েরি করছেন, তবে GSI ব্যবহার করা উত্তম। যদি আপনার কুয়েরি মূল Partition key এর সাথে সম্পর্কিত হয়, তবে LSI কার্যকরী হতে পারে।
  2. Projection Expression ব্যবহার করুন:
    • শুধুমাত্র সেই ফিল্ডগুলো নির্বাচন করুন যা প্রয়োজন। এতে সময় বাঁচবে এবং ডেটার আউটপুট কম হবে, ফলে কুয়েরি দ্রুত হবে। উদাহরণ:

      aws dynamodb query \
      --table-name Products \
      --index-name CategoryIndex \
      --projection-expression "ProductID, Name, Price" \
      --key-condition-expression "Category = :category" \
      --expression-attribute-values '{":category":{"S":"Electronics"}}'
      
  3. Filter Expression ব্যবহার করা:
    • Key condition expression ব্যবহার করার পাশাপাশি, Filter expression ব্যবহার করে ডেটা পরিশোধন করতে পারেন, তবে মনে রাখবেন যে এটি কুয়েরি অপটিমাইজেশন এর জন্য কম কার্যকরী হতে পারে কারণ পুরো ডেটা স্ক্যান করতে হবে।
  4. Pagination প্রয়োগ করুন:
    • যদি আপনার কুয়েরি খুব বড় হয়, তাহলে পেজিনেশন প্রয়োগ করুন যাতে আপনি ডেটার একটি নির্দিষ্ট অংশ একসাথে প্রক্রিয়া করতে পারেন।
    • Pagination এর মাধ্যমে কুয়েরি রেজাল্টের পরিমাণ কমিয়ে এনে পারফরম্যান্স বৃদ্ধি করা যায়।

উপসংহার

Indexes ব্যবহার করে DynamoDB তে কুয়েরি অপটিমাইজেশন আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে পারে। আপনি GSI বা LSI ব্যবহার করে ডেটার দ্রুত অনুসন্ধান করতে পারেন এবং আপনার কুয়েরির জন্য সবচেয়ে কার্যকরী ইনডেক্স নির্বাচন করতে পারবেন। সঠিকভাবে ইনডেক্স কনফিগার করলে, আপনার অ্যাপ্লিকেশন আরও দ্রুত এবং স্কেলেবল হবে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion