Time to Live (TTL) একটি গুরুত্বপূর্ণ ফিচার যা DynamoDB টেবিলের আইটেমগুলি স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় পর মুছে ফেলার সুবিধা প্রদান করে। TTL কনফিগারেশন ব্যবহার করে, আপনি ডেটাবেসের মধ্যে অপ্রয়োজনীয় বা পুরানো ডেটা ম্যানুয়ালি মুছতে না গিয়েও সিস্টেমকে একটি নির্দিষ্ট সময় পর অটোমেটিক্যালি ডেটা মুছতে পরিচালনা করতে পারেন।
TTL ফিচারটি বিশেষত তখন কার্যকরী যখন:
DynamoDB TTL একটি নির্দিষ্ট অ্যাট্রিবিউটের (ফিল্ড) উপর নির্ভর করে কাজ করে যা সময় সীমা নির্ধারণ করে। এই অ্যাট্রিবিউটটি সময়ের স্ট্যাম্প হিসাবে কাজ করে, এবং নির্দিষ্ট সময় পর DynamoDB নিজেই সেই আইটেমটি মুছে ফেলে।
expirationTime
, expireAt
, ইত্যাদি) হবে।expireAt
ফিল্ডে 1672531199
টাইমস্ট্যাম্প থাকবে, তাহলে আইটেমটি ওই সময়ের পর মুছে যাবে।expireAt
) থেকে ডেটা এক্সপায়ার হওয়ার সময় অনুসরণ করবে এবং সেই অনুযায়ী আইটেমটি মুছে ফেলবে।যদি আপনি একটি সেশন টেবিল পরিচালনা করছেন, যেখানে ব্যবহারকারীদের সেশন আইডি এবং সেশন ডেটা সংরক্ষণ করা হয়, তাহলে TTL কনফিগার করা যেতে পারে যাতে সেশনটি নির্দিষ্ট সময় পর (যেমন, ৩০ মিনিট পর) অটোমেটিক্যালি মুছে যায়।
{
"sessionId": "xyz123",
"userId": "user001",
"sessionData": "Some data...",
"expireAt": 1672531199
}
এখানে, expireAt
অ্যাট্রিবিউটটি একটি Unix টাইমস্ট্যাম্প ধারণ করে, যার মান ৩০ মিনিট পর সেট করা হবে।
অথবা, যদি আপনার অ্যাপ্লিকেশন অ্যাক্সেস টোকেন ব্যবহারের জন্য DynamoDB টেবিল ব্যবহার করে, তাহলে আপনি টোকেনের জন্য TTL সেট করতে পারেন। এক্সপায়ারি সময়ের পরে DynamoDB টোকেনটি মুছে ফেলবে।
TTL কনফিগারেশনের সঙ্গে, আপনাকে কিছু বিষয় মনে রাখতে হবে:
আপনি চাইলে TTL
ফিচারটি টেস্ট করতে পারেন expireAt
অ্যাট্রিবিউট দিয়ে কয়েকটি আইটেম যোগ করে এবং পরীক্ষা করতে পারেন যে আইটেমগুলি সঠিক সময়ে ডিলিট হচ্ছে কিনা। DynamoDB এ ব্যাকগ্রাউন্ডে এগুলি স্বয়ংক্রিয়ভাবে হবে।
TTL একটি শক্তিশালী এবং কার্যকরী টুল যা DynamoDB ডেটাবেসে ডেটা রিটেনশন পলিসি নির্ধারণ করতে সাহায্য করে। এটি স্বয়ংক্রিয়ভাবে পুরানো ডেটা মুছে ফেলতে এবং স্টোরেজ খরচ কমাতে সক্ষম, যার ফলে আপনার অ্যাপ্লিকেশন আরও দক্ষ এবং সাশ্রয়ী হয়ে ওঠে।
TTL (Time to Live) হলো একটি বিশেষ ফিচার যা DynamoDB তে ডেটার আয়ু (lifetime) নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি ডেটা অপারেশন বা রেকর্ডের মধ্যে সময়সীমা নির্ধারণ করে, যার পরে সেটি স্বয়ংক্রিয়ভাবে মুছে যায়। এই ফিচারটি বিশেষভাবে কার্যকর যখন আপনি একটি নির্দিষ্ট সময়ের পর অপ্রয়োজনীয় বা পুরোনো ডেটা মুছে ফেলতে চান, যেমন লোগ ফাইল, সেশন ডেটা বা ক্যাশে তথ্য।
TTL সহ, আপনি ডেটার expire time (অথবা "expiry timestamp") নির্ধারণ করতে পারেন, যা নির্দেশ করে কোন সময়ে ডেটাটি স্বয়ংক্রিয়ভাবে ডিলিট হবে।
expireAt
বা আপনার নির্দিষ্ট নাম দিয়ে একটি ফিল্ড তৈরি করুন)।এখন আপনি টেবিলের আইটেমে সেই ফিল্ড (expire timestamp) দিয়ে ডেটা ইনসার্ট করলে, সেটি স্বয়ংক্রিয়ভাবে TTL এর মাধ্যমে নির্দিষ্ট সময় পর মুছে যাবে।
sessionExpiry
টাইমস্ট্যাম্প ফিল্ড ব্যবহার করা হতে পারে।ধরা যাক, আপনি একটি টেবিল UserSessions
তৈরি করেছেন, যেখানে ব্যবহারকারীর লগইন সময়ের সাথে একটি expireAt
ফিল্ড রয়েছে যা ব্যবহারকারীর সেশন শেষে ডেটা মুছে দেয়। এই ফিল্ডে আপনি সেশনের শেষ সময়ের টাইমস্ট্যাম্প সংরক্ষণ করতে পারেন। টেবিলের TTL সক্রিয় হলে, এই সেশন শেষে সেই ডেটা স্বয়ংক্রিয়ভাবে মুছে যাবে।
Python (Boto3) দিয়ে ডেটা ইনসার্টের উদাহরণ:
import boto3
import time
# DynamoDB client তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('UserSessions')
# সেশন শেষ হওয়ার সময়ের জন্য টাইমস্ট্যাম্প (এখানে 1 ঘণ্টা পরে)
expiry_time = int(time.time()) + 3600 # 1 ঘণ্টা পর
# ডেটা ইনসার্ট করা
table.put_item(
Item={
'userId': 'user123',
'sessionData': 'Some data',
'expireAt': expiry_time # TTL ফিল্ড
}
)
এখন, যখন expireAt
এর সময় চলে আসবে, DynamoDB এই আইটেমটিকে স্বয়ংক্রিয়ভাবে মুছে ফেলবে।
TTL একটি শক্তিশালী ফিচার যা ডেটার অযাচিত জমা কমাতে এবং ডেটাবেসকে কার্যকরী ও অপটিমাইজড রাখতে সাহায্য করে।
DynamoDB তে Data Expiration এবং Management অত্যন্ত গুরুত্বপূর্ণ বিষয়, বিশেষ করে যখন আপনার অ্যাপ্লিকেশনে বড় ধরনের ডেটা স্টোরেজ বা বড় পরিসরে ডেটা প্রবাহ রয়েছে। DynamoDB ডেটাবেসে সঠিকভাবে ডেটা ম্যানেজমেন্ট এবং এক্সপিরেশন নিশ্চিত করতে হলে আপনাকে কিছু কার্যকরী কৌশল এবং বৈশিষ্ট্য ব্যবহার করতে হবে, যেমন Time to Live (TTL) এবং auto-scaling।
এখানে আমরা DynamoDB তে Data Expiration এবং Management সম্পর্কে বিস্তারিত আলোচনা করব।
Time to Live (TTL) হল একটি গুরুত্বপূর্ণ ফিচার যা আপনাকে DynamoDB টেবিলের ডেটার জন্য একটি নির্দিষ্ট সময়সীমা নির্ধারণ করতে সাহায্য করে। এই সময়সীমার পর ডেটাটি অটোমেটিকভাবে মুছে যাবে। এটি বিশেষভাবে উপকারী যখন আপনি শুধুমাত্র নির্দিষ্ট সময় পর্যন্ত কার্যকরী ডেটা রাখতে চান, যেমন সেশন ডেটা, অস্থায়ী ক্যাশ, বা অর্পিত ট্রানজেকশন।
TTL সক্রিয় করলে, নির্দিষ্ট সময়ে ডেটা মুছে ফেলা হয়, এবং এটি পরিচালনা করা সহজ হয়।
expirationTime
নামক একটি অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট সময় পর ডেটা মুছে ফেলার জন্য সেট করতে পারেন।CLI Example:
aws dynamodb update-table \
--table-name YourTableName \
--time-to-live-specification "Enabled=true,AttributeName=expirationTime"
Data Insertion with TTL Attribute: যখন আপনি নতুন ডেটা ইনসার্ট করবেন, তখন আপনাকে একটি expirationTime
অ্যাট্রিবিউট যোগ করতে হবে যা Unix টাইমস্ট্যাম্প হিসেবে নির্দিষ্ট করবে কখন ডেটাটি মুছে যাবে।
{
"UserID": {"S": "user123"},
"Name": {"S": "John Doe"},
"expirationTime": {"N": "1657160123"} // Unix timestamp for expiration
}
Auto-scaling DynamoDB এ একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে টেবিলের রিড এবং রাইট ক্যাপাসিটি স্বয়ংক্রিয়ভাবে বাড়ানোর এবং কমানোর অনুমতি দেয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার অ্যাপ্লিকেশন একসাথে অনেক রিকোয়েস্ট প্রক্রিয়া করে, এবং আপনাকে অটোমেটিক স্কেলিং সেট আপ করতে হয় যাতে নির্দিষ্ট সীমার মধ্যে থাকতে পারে।
Auto-scaling কনফিগার করতে, আপনি নিম্নলিখিত ধাপগুলো অনুসরণ করতে পারেন:
CLI Example for Auto-scaling Configuration:
aws dynamodb update-table \
--table-name YourTableName \
--provisioned-throughput "ReadCapacityUnits=5,WriteCapacityUnits=5" \
--auto-scaling-target-scaling-policy "TargetTrackingScalingPolicy"
Target Utilization
সেট করতে পারেন।আপনি যদি পুরনো ডেটা আর্কাইভ করতে চান, তাহলে আপনি DynamoDB Streams ব্যবহার করে ডেটা পরিবর্তন ট্র্যাক করতে পারেন এবং সেই ডেটাগুলিকে আরেকটি সস্তা স্টোরেজে (যেমন S3) স্থানান্তর করতে পারেন। পরে, আপনি এই আর্কাইভ ডেটা থেকে মুছে ফেলতে পারবেন DynamoDB এর টেবিল থেকে, যখন এগুলি আর প্রয়োজনীয় না থাকে।
Data Expiration এবং Management DynamoDB তে অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনার টেবিলে সময়ভিত্তিক ডেটা পরিচালনা করতে হয়। TTL ফিচারটি আপনাকে নির্দিষ্ট সময় পর ডেটা অটোমেটিকভাবে মুছে ফেলতে সাহায্য করে, আর auto-scaling টেবিলের ক্যাপাসিটি অনুযায়ী স্বয়ংক্রিয়ভাবে রিড এবং রাইট পারফরম্যান্স সমন্বয় করতে সাহায্য করে।
এই ফিচারগুলি ব্যবহার করে আপনি আপনার ডেটাবেসের পারফরম্যান্স এবং কস্ট-এফিশিয়েন্সি নিশ্চিত করতে পারবেন।
TTL (Time to Live) হল একটি গুরুত্বপূর্ণ ফিচার যা DynamoDB টেবিলের ডেটা স্বয়ংক্রিয়ভাবে এক নির্দিষ্ট সময় পর মুছে ফেলার সুযোগ প্রদান করে। TTL কনফিগারেশন করার মাধ্যমে আপনি এমন ডেটা রাখতে পারেন যা নির্দিষ্ট সময়ের পরে আর প্রয়োজন হয় না, যেমন সেশন ডেটা, টেম্পোরারি ফাইল, ইত্যাদি। এর মাধ্যমে আপনার টেবিলের আকার কমানো যায় এবং খরচও নিয়ন্ত্রণ করা সম্ভব হয়।
TTL কনফিগারেশন এবং Monitoring হল DynamoDB টেবিলের পারফরম্যান্স এবং ডেটার জীবিতকাল পর্যবেক্ষণ এবং পরিচালনা করার প্রক্রিয়া।
expirationTime
), যা ইন্সার্ট বা আপডেটের সময় টাইমস্ট্যাম্প হিসেবে সেট হবে এবং ডেটা কখন মুছে যাবে তা নির্ধারণ করবে।TTL Attribute Example: উদাহরণস্বরূপ, আপনি যদি expirationTime
নামে একটি ফিল্ড ব্যবহার করেন, তবে এর মান হিসেবে ইউনিক্স টাইমস্ট্যাম্প নির্ধারণ করবেন, যা ডেটার মুছে যাওয়ার সময় উল্লেখ করবে।
কোড উদাহরণ (Python - Boto3):
import boto3
from datetime import datetime, timedelta
# DynamoDB client তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')
# TTL ফিল্ড তৈরি করা (যেমন, 24 ঘণ্টার পর ডেটা মুছে যাবে)
expiration_time = int((datetime.utcnow() + timedelta(days=1)).timestamp())
# ডেটা ইনসার্ট করা TTL সহ
table.put_item(
Item={
'PartitionKey': 'value1',
'SortKey': 'value2',
'data': 'some_data',
'expirationTime': expiration_time # TTL টাইমস্ট্যাম্প
}
)
TTL কনফিগারেশন করার পর, DynamoDB আপনাকে TTL ডেটা মুছে ফেলার কার্যকলাপ পর্যবেক্ষণ করতে সাহায্য করে। আপনাকে বিভিন্ন AWS টুল ব্যবহার করতে হবে যাতে এই মুছে ফেলা ডেটার ট্র্যাক রাখতে পারেন এবং পারফরম্যান্স পর্যবেক্ষণ করতে পারেন।
ConsumedWriteCapacityUnits
এবং ThrottledRequests
মেট্রিক্স ব্যবহার করতে পারেন, যা দেখাবে কত রিসোর্স ডিমান্ড হচ্ছে ডেটা মুছে ফেলার জন্য।import boto3
# CloudWatch client তৈরি
cloudwatch = boto3.client('cloudwatch')
# CloudWatch মেট্রিক্স পর্যবেক্ষণ করা
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'ttl_metric',
'MetricStat': {
'Metric': {
'Namespace': 'AWS/DynamoDB',
'MetricName': 'TimeToLiveDeletedItemCount',
'Dimensions': [
{
'Name': 'TableName',
'Value': 'YourTableName'
},
]
},
'Period': 60,
'Stat': 'Sum',
},
'ReturnData': True,
},
],
StartTime='2024-11-01T00:00:00Z',
EndTime='2024-11-26T23:59:59Z'
)
print(response)
এই কোডটি CloudWatch থেকে TimeToLiveDeletedItemCount মেট্রিক্স বের করবে, যা আপনাকে কত আইটেম TTL এর মাধ্যমে মুছে গেছে তা জানাবে।
TTL কনফিগারেশন এবং Monitoring ব্যবহারের মাধ্যমে DynamoDB এর খরচ নিয়ন্ত্রণ, পারফরম্যান্স অপটিমাইজেশন এবং স্টোরেজ ব্যবস্থাপনা আরও সহজ হয়।
DynamoDB TTL (Time-to-Live) একটি কার্যকরী ফিচার যা আপনাকে ডেটার সঞ্চয়স্থানের (storage) ব্যবহার অপটিমাইজ করতে সহায়তা করে। TTL এর মাধ্যমে আপনি নির্দিষ্ট সময় পর পুরনো বা অপ্রয়োজনীয় ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার নিয়ম সেট করতে পারেন। এর ফলে, টেবিলের সঞ্চয়স্থান কার্যকরভাবে ব্যবহৃত হয় এবং আপনার ডেটাবেসের খরচ কমিয়ে আনা যায়।
TTL (Time-to-Live) হল একটি সময়সীমা যা নির্দিষ্ট করে দেয় যে কোনো আইটেম কতদিন ধরে DynamoDB টেবিলের মধ্যে থাকবে। একবার TTL শেষ হয়ে গেলে, ডেটাটি DynamoDB দ্বারা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। এটি একটি "expiry time" হিসেবে কাজ করে, যা নির্ধারিত সময় পর ডেটা মুছে দেয়।
TTL সাধারণত কার্যকরী হয় এমন ডেটার জন্য যেমন:
expirationTime
অ্যাট্রিবিউট)। এই অ্যাট্রিবিউটটি সঠিকভাবে সেট করার মাধ্যমে আপনি ডেটার "expiry time" নির্ধারণ করতে পারবেন।1735670400
)।expirationTime
), এবং সেভ করুন।DynamoDB এ আইটেম ইনসার্ট করার সময় TTL অ্যাট্রিবিউট যোগ করা হয়। উদাহরণস্বরূপ, যদি আপনি 1 দিনের মধ্যে একটি ডেটা মুছে ফেলতে চান, তাহলে:
{
"UserID": "user123",
"SessionID": "abcxyz",
"expirationTime": 1672531199 // Unix timestamp for expiration (24 hours from now)
}
একইভাবে, যদি আপনাকে কোনও ডেটা আপডেট করতে হয় এবং নতুন TTL অ্যাট্রিবিউট সেট করতে হয়, আপনি এইভাবে করতে পারেন:
aws dynamodb update-item \
--table-name Sessions \
--key '{"UserID": {"S": "user123"}}' \
--update-expression "SET expirationTime = :exp" \
--expression-attribute-values '{":exp": {"N": "1672531199"}}'
TTL হল DynamoDB টেবিলের মধ্যে অপ্রয়োজনীয় ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার একটি কার্যকরী উপায়, যা আপনার ডেটাবেসের সঞ্চয়স্থান, পারফরম্যান্স, এবং খরচ অপটিমাইজ করতে সাহায্য করে।
common.read_more