DynamoDB একটি NoSQL ডেটাবেস সিস্টেম যা উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি নিশ্চিত করার জন্য বিভিন্ন ইনডেক্সিং কৌশল ব্যবহার করে। ডেটার দ্রুত অ্যাক্সেস এবং কার্যকর Query অপারেশন নিশ্চিত করার জন্য Secondary Indexes ব্যবহার করা হয়। এই ইনডেক্সগুলির মাধ্যমে ডেটাকে বিভিন্ন পদ্ধতিতে সাজানো এবং অনুসন্ধান করা সম্ভব হয়, যা ডেটার জন্য পারফরম্যান্স অপটিমাইজ করতে সাহায্য করে।
এখানে Indexes এবং Performance Optimization সম্পর্কিত বিভিন্ন ধারণা ও কৌশল ব্যাখ্যা করা হয়েছে:
Secondary Indexes হল এমন ইনডেক্স যা Primary Key (Partition Key + Sort Key) থেকে আলাদা। DynamoDB তে দুটি ধরনের সেকেন্ডারি ইনডেক্স রয়েছে:
উদাহরণ:
উদাহরণ:
DynamoDB একটি Capacity Mode অফার করে যা আপনাকে Provisioned অথবা On-Demand মডে কাজ করার সুযোগ দেয়। আপনি যখন কোন টেবিল তৈরি করেন তখন আপনি তার Read/Write Capacity Units (RCU/WCU) কনফিগার করতে পারেন, যা টেবিলের পারফরম্যান্সে প্রভাব ফেলে।
DynamoDB একটি ডিস্ট্রিবিউটেড ডেটাবেস সিস্টেম, এবং ডেটা সঠিকভাবে পার্টিশন করা পারফরম্যান্স অপটিমাইজেশনের জন্য খুবই গুরুত্বপূর্ণ।
DynamoDB তে Indexing এবং Performance Optimization অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে Secondary Indexes (GSI/LSI) ব্যবহার করে এবং টেবিলের সঠিক Capacity Mode নির্বাচন করে আপনি অ্যাপ্লিকেশনের পারফরম্যান্স অনেকটাই উন্নত করতে পারেন। এছাড়াও, Partition Key নির্বাচন এবং রাইট/স্ক্যান অপারেশন অপটিমাইজেশন পারফরম্যান্সে বড় প্রভাব ফেলতে পারে।
Secondary Indexes DynamoDB-তে একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটাবেসের বিভিন্ন ধরনের Query অপারেশন সহজতর করতে সাহায্য করে। DynamoDB মূলত দুটি ধরনের Secondary Index সমর্থন করে:
এগুলো মূল টেবিলের Primary Key এর বাইরে অন্যান্য অ্যাট্রিবিউটের উপর ভিত্তি করে ডেটাকে আরও কার্যকরীভাবে অনুসন্ধান এবং এক্সেস করার সুযোগ দেয়।
Global Secondary Index (GSI) একটি শক্তিশালী ফিচার, যা আপনাকে Partition Key এবং Sort Key এর বাইরে অন্য কোনও অ্যাট্রিবিউটের উপর ভিত্তি করে ডেটা অনুসন্ধান করতে দেয়। GSI সম্পূর্ণভাবে স্বাধীন এবং এর Partition Key এবং Sort Key মূল টেবিলের সঙ্গেও ভিন্ন হতে পারে। এটি আপনাকে Query এবং Scan অপারেশনগুলির জন্য আরও বেশি flexibility প্রদান করে।
ধরা যাক, আপনি একটি Products টেবিল তৈরি করেছেন, যেখানে ProductID
হল Partition Key এবং Category
হল Sort Key:
Price
অ্যাট্রিবিউট দিয়ে ডেটা অনুসন্ধান করতে চান, তাহলে আপনি একটি Global Secondary Index তৈরি করতে পারেন যেখানে Price
হবে Partition Key বা Sort Key।এতে করে আপনি Price
অনুযায়ী খুব দ্রুত ডেটা রিড করতে পারবেন, যদিও Price
মূল টেবিলের কোনো পার্টিশন বা সার্ট কী নয়।
Local Secondary Index (LSI) একটি অন্যরকম ধরনের ইন্ডেক্স, যা মূল টেবিলের Partition Key এর উপর ভিত্তি করে কাজ করে, কিন্তু Sort Key আলাদা করে দেয়। এর মাধ্যমে, আপনি মূল টেবিলের Partition Key (যেটি অপরিহার্য) এবং Sort Key এর একাধিক ভিন্ন ভিন্ন কন্ট্রোল তৈরি করতে পারেন।
ধরা যাক, আপনি একটি Users টেবিল তৈরি করেছেন যেখানে UserID
হল Partition Key এবং DateOfBirth
হল Sort Key:
City
একটি নতুন Sort Key হবে।এভাবে, আপনি একই UserID এর মধ্যে DateOfBirth বা City দিয়ে ডেটা অনুসন্ধান করতে পারবেন।
বৈশিষ্ট্য | Global Secondary Index (GSI) | Local Secondary Index (LSI) |
---|---|---|
Partition Key | স্বাধীন, মূল টেবিলের Partition Key থেকে আলাদা হতে পারে। | মূল টেবিলের Partition Key এর সাথে মেলে। |
Sort Key | স্বাধীন, মূল টেবিলের Sort Key থেকে আলাদা হতে পারে। | মূল টেবিলের Sort Key এর সাথে মেলে। |
Maximum Number of Indexes | সীমাহীন, একাধিক GSI তৈরি করা যেতে পারে। | সর্বোচ্চ 5টি LSI তৈরি করা যেতে পারে। |
Provisioned/On-Demand | Provisioned এবং On-Demand উভয় ধরনের ক্যাপাসিটি ব্যবহার করা যেতে পারে। | শুধুমাত্র Provisioned ক্যাপাসিটির অধীনে ব্যবহৃত হয়। |
Performance Impact | GSI টেবিলের পারফরম্যান্সে খুব কম প্রভাব ফেলে। | LSI মূল টেবিলের পারফরম্যান্সের সাথে সম্পর্কিত, তাই এটি বেশি প্রভাব ফেলতে পারে। |
Data Retrieval Flexibility | অনেক বেশি ফ্লেক্সিবিলিটি, কারণ আপনি যেকোনো অ্যাট্রিবিউট নির্বাচন করতে পারেন। | কম ফ্লেক্সিবিলিটি, কারণ এটি মূল Partition Key এর উপর নির্ভরশীল। |
Consistency | Strongly consistent reads সাপোর্ট করে। | Strongly consistent reads সাপোর্ট করে। |
এখন যদি তোমার আরও কোনো প্রশ্ন থাকে বা অন্য কোনো বিষয়ে জানতে চাও, আমি সাহায্য করতে প্রস্তুত!
DynamoDB টেবিলের মধ্যে ডেটা কোয়েরি এবং পারফরম্যান্স অপটিমাইজ করতে Indexes ব্যবহার করা হয়। দুটি প্রধান ধরনের ইন্ডেক্স হল Global Secondary Index (GSI) এবং Local Secondary Index (LSI)। এই দুটি ইন্ডেক্সই ডেটা কুইরির কার্যকারিতা উন্নত করতে সাহায্য করে, কিন্তু তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে যা তাদের ব্যবহারের উপযুক্ততা নির্ধারণ করে।
GSI হল একটি ইন্ডেক্স যা মূল টেবিলের Primary Key (Partition Key এবং Sort Key) থেকে আলাদা নতুন Partition Key এবং Sort Key ব্যবহার করে। GSI ব্যবহার করার মাধ্যমে আপনি নতুন বা আলাদা কুয়েরি প্যাটার্ন তৈরি করতে পারেন যা প্রাথমিক টেবিলের পারফরম্যান্সে কোনও প্রভাব ফেলে না।
ধরা যাক আপনার টেবিলের Partition Key হল UserID
এবং Sort Key হল Timestamp
। এখন আপনি যদি শুধুমাত্র Status
বা অন্য কোনও অ্যাট্রিবিউটের ভিত্তিতে কোয়েরি করতে চান, তাহলে GSI তৈরি করতে পারেন যেখানে Partition Key হল Status
এবং Sort Key Timestamp
।
LSI হল এমন একটি ইন্ডেক্স যা টেবিলের মূল Partition Key কে অপরিবর্তিত রেখে, নতুন Sort Key ব্যবহার করে তৈরি হয়। অর্থাৎ, LSI মূল টেবিলের Partition Key এর সাথে সম্পর্কিত কিন্তু Sort Key আলাদা করে কনফিগার করা হয়। এতে শুধুমাত্র একটি Partition Key এবং Sort Key থাকা ইন্ডেক্স তৈরি হয়।
ধরা যাক আপনার টেবিলের Partition Key হল UserID
এবং Sort Key হল Timestamp
। আপনি যদি Status
এর ভিত্তিতে কোয়েরি করতে চান, তবে LSI তৈরি করতে পারেন যেখানে Partition Key হল UserID
এবং Sort Key হল Status
(অথবা অন্য কোনও অ্যাট্রিবিউট, যা আপনাকে প্রয়োজন)।
বৈশিষ্ট্য | GSI | LSI |
---|---|---|
Partition Key | Partition Key আলাদা হতে পারে | Partition Key অপরিবর্তিত থাকে |
Sort Key | Sort Key আলাদা হতে পারে | Sort Key পরিবর্তিত হয় (Primary Key এর Sort Key) |
Capacity Mode | Provisioned এবং On-Demand উভয়ই সাপোর্ট করে | শুধুমাত্র Provisioned Mode সাপোর্ট করে |
Consistency | Eventually Consistent বা Strongly Consistent Read সাপোর্ট করে | শুধুমাত্র Strongly Consistent Read সাপোর্ট করে |
সীমাবদ্ধতা | GSI ব্যবহার করার জন্য কোনও সীমাবদ্ধতা নেই | প্রতি টেবিলের জন্য সর্বাধিক 5টি LSI হতে পারে |
Querying | নতুন Partition Key এবং Sort Key দিয়ে কোয়েরি করা যায় | শুধুমাত্র একই Partition Key এর মধ্যে Sort Key পরিবর্তন করা যায় |
এভাবে, GSI এবং LSI এর পার্থক্য এবং তাদের উপযোগিতা বুঝে আপনি আপনার অ্যাপ্লিকেশনের জন্য সঠিক ইন্ডেক্স ব্যবহার করতে পারবেন।
DynamoDB-তে Indexes একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটার অনুসন্ধান এবং কুয়েরি অপটিমাইজেশনে সাহায্য করে। DynamoDB দুটি প্রধান ধরনের ইনডেক্স সমর্থন করে:
এখানে Index তৈরি এবং ম্যানেজমেন্ট সংক্রান্ত তথ্য বিস্তারিতভাবে দেওয়া হলো।
Secondary Indexes হল ইনডেক্স যা মূল টেবিলের বাইরে অন্য কোনো কনফিগারেশন দিয়ে ডেটা অনুসন্ধানের জন্য ব্যবহৃত হয়। সেগুলোর মাধ্যমে আপনি টেবিলের উপর বিভিন্ন কুয়েরি করতে পারবেন যা মূল Primary Key দিয়ে করা সম্ভব নয়।
GSI আপনাকে টেবিলের কোন অ্যাট্রিবিউটের উপর কুয়েরি চালানোর সুবিধা দেয়, যা মূল টেবিলের Primary Key বা Sort Key নয়।
LSI একটি ইনডেক্স যা একই Partition Key ব্যবহার করে কিন্তু একটি ভিন্ন Sort Key এর উপর ভিত্তি করে কাজ করে। LSI তৈরি করার সময়, Partition Key একই থাকে তবে Sort Key পরিবর্তিত হয়।
DynamoDB-তে তৈরি করা ইনডেক্সগুলোর কার্যক্ষমতা ম্যানেজ করা খুবই গুরুত্বপূর্ণ। DynamoDB-তে Index ম্যানেজমেন্টে কয়েকটি গুরুত্বপূর্ণ বিষয় থাকে:
Indexes ব্যবহার করে আপনি Query Performance অনেক উন্নত করতে পারেন। এতে আপনি অনেক দ্রুত তথ্য বের করতে পারবেন, বিশেষ করে যদি ডেটার পরিমাণ অনেক বেশি হয়।
DynamoDB Indexes ব্যবহারে আপনি ডেটার উপর দ্রুত এবং আরও ফ্লেক্সিবল কুয়েরি চালাতে পারবেন। Global Secondary Index (GSI) এবং Local Secondary Index (LSI) দুটি গুরুত্বপূর্ণ ইনডেক্স পদ্ধতি, যা ডেটাবেসের পারফরম্যান্স এবং স্কেলেবিলিটি বাড়াতে সাহায্য করে। DynamoDB এর Indexing কৌশলগুলো ভালোভাবে বুঝে ব্যবহার করলে, আপনার অ্যাপ্লিকেশন অনেক দ্রুত এবং দক্ষ হয়ে উঠবে।
DynamoDB তে Query অপারেশন দ্রুত এবং কার্যকরীভাবে সম্পাদন করার জন্য Indexes ব্যবহার করা যেতে পারে। ইন্ডেক্সেস, ডেটার দ্রুত অনুসন্ধান এবং কুয়েরি অপটিমাইজেশন করতে সাহায্য করে। DynamoDB তে দুটি প্রধান ধরনের ইনডেক্স রয়েছে:
এই ইন্ডেক্সগুলি ব্যবহার করে আপনি কুয়েরির পারফরম্যান্স বৃদ্ধি করতে এবং ডেটা দ্রুত সেগমেন্ট করতে পারেন।
গুণাবলী:
উদাহরণ: ধরুন আপনি একটি 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
ক্যাটেগরির সমস্ত পণ্য পাওয়ার জন্য দ্রুত ফলাফল পাবেন।
গুণাবলী:
উদাহরণ: ধরুন আপনার 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
এর মধ্যে ফেরত দেবে।
Category
বা City
অ্যাট্রিবিউটের ওপর কুয়েরি করছেন, তবে GSI ব্যবহার করা উত্তম। যদি আপনার কুয়েরি মূল Partition key
এর সাথে সম্পর্কিত হয়, তবে LSI কার্যকরী হতে পারে।শুধুমাত্র সেই ফিল্ডগুলো নির্বাচন করুন যা প্রয়োজন। এতে সময় বাঁচবে এবং ডেটার আউটপুট কম হবে, ফলে কুয়েরি দ্রুত হবে। উদাহরণ:
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"}}'
Key condition expression
ব্যবহার করার পাশাপাশি, Filter expression
ব্যবহার করে ডেটা পরিশোধন করতে পারেন, তবে মনে রাখবেন যে এটি কুয়েরি অপটিমাইজেশন এর জন্য কম কার্যকরী হতে পারে কারণ পুরো ডেটা স্ক্যান করতে হবে।Indexes ব্যবহার করে DynamoDB তে কুয়েরি অপটিমাইজেশন আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে পারে। আপনি GSI বা LSI ব্যবহার করে ডেটার দ্রুত অনুসন্ধান করতে পারেন এবং আপনার কুয়েরির জন্য সবচেয়ে কার্যকরী ইনডেক্স নির্বাচন করতে পারবেন। সঠিকভাবে ইনডেক্স কনফিগার করলে, আপনার অ্যাপ্লিকেশন আরও দ্রুত এবং স্কেলেবল হবে।
common.read_more