Snapshot (RDB) এবং AOF (Append Only File) হল রেডিসের ডেটা পার্সিস্টেন্সের দুইটি প্রধান পদ্ধতি। এই দুটি পদ্ধতি রেডিস সার্ভারের ডেটা ডিস্কে সেভ করতে ব্যবহৃত হয়, তবে তাদের কাজ করার পদ্ধতি এবং বৈশিষ্ট্যগুলো আলাদা।
নিচে Snapshot (RDB) এবং AOF এর মধ্যে পার্থক্য বিস্তারিতভাবে ব্যাখ্যা করা হলো:
১. Snapshot (RDB - Redis Database Backup)
RDB হল রেডিসের একটি পদ্ধতি যা নির্দিষ্ট সময় পর পর ডেটার স্ন্যাপশট নেয় এবং সেই স্ন্যাপশটটি ডিস্কে সংরক্ষণ করে। এটি মূলত ডেটার একটি পয়েন্ট-ইন-টাইম কপি তৈরি করে।
বৈশিষ্ট্য:
- পিরিওডিক স্ন্যাপশট: RDB স্ন্যাপশট নির্দিষ্ট সময় পর পর তৈরি হয়, যেমন প্রতি 5 মিনিটে একবার, অথবা প্রতি 10000টি রাইট অপারেশনের পর।
- পারফরম্যান্স: RDB কম পারফরম্যান্স ইমপ্যাক্টের সাথে কাজ করে, কারণ এটি শুধুমাত্র নির্দিষ্ট সময় পর পর স্ন্যাপশট নেয়।
- ডিস্ক স্পেস: RDB সাধারণত কম ডিস্ক স্পেস ব্যবহার করে কারণ এটি শুধুমাত্র স্ন্যাপশট ফাইল সংরক্ষণ করে।
- ডেটা রিকভারি: RDB স্ন্যাপশট থেকে ডেটা রিকভারির সময় কিছু ডেটা হারানো হতে পারে, কারণ স্ন্যাপশট একবার তৈরি হওয়ার পর পরবর্তী স্ন্যাপশট তৈরি না হওয়া পর্যন্ত ডেটা ডিস্কে সেভ হয় না।
- ফাস্ট রিকভারি: RDB ফাইল রিকভার করা অনেক দ্রুত হয় কারণ স্ন্যাপশট একত্রিত আকারে থাকে।
কনফিগারেশন:
RDB স্ন্যাপশট নির্দিষ্ট সময় পর পর তৈরি করতে, redis.conf ফাইলে save কনফিগারেশন ব্যবহার করা হয়:
save 900 1 # 900 সেকেন্ড পর 1টি রাইট অপারেশন হলে স্ন্যাপশট তৈরি হবে
save 300 10 # 300 সেকেন্ড পর 10টি রাইট অপারেশন হলে স্ন্যাপশট তৈরি হবে
২. AOF (Append Only File)
AOF হল একটি পদ্ধতি যা রেডিসের সমস্ত লেখা অপারেশনকে ডিস্কে লিপিবদ্ধ করে। এটি প্রতিটি রাইট অপারেশনকে একটি ফাইলে অ্যাপেন্ড (যোগ) করে রাখে। AOF ফাইলের মাধ্যমে রেডিসের সমস্ত রাইট অপারেশন পুনরায় সম্পন্ন করা যায়।
বৈশিষ্ট্য:
- লগিং: AOF প্রতিটি রাইট অপারেশনকে লগ আকারে ডিস্কে সেভ করে। যেমন
SET,DEL,INCRইত্যাদি। - ডেটা রিকভারি: AOF ফাইলের মাধ্যমে রিকভারি অনেক নির্ভুল হয়, কারণ এটি প্রতিটি রাইট অপারেশন লিপিবদ্ধ করে।
- পারফরম্যান্স ইমপ্যাক্ট: AOF এর পারফরম্যান্সে কিছুটা প্রভাব পড়ে, কারণ এটি প্রতিটি রাইট অপারেশনকে ডিস্কে লিখে রাখে।
- ডিস্ক স্পেস: AOF সাধারণত বড় হয়, কারণ এটি রাইট অপারেশনগুলো প্রতিবার ফাইলে অ্যাপেন্ড করে রাখে।
- অফলাইন রিকভারি: AOF ফাইল রিকভারি করার সময় কিছু সময় নিতে পারে, কারণ এটি সেগুলিকে পুনরায় সম্পন্ন করতে হয়।
কনফিগারেশন:
AOF সক্ষম করতে, redis.conf ফাইলে appendonly প্যারামিটারটি yes করতে হবে:
appendonly yes # AOF সক্রিয় করা
appendfsync everysec # প্রতি সেকেন্ডে AOF ফাইল সিঙ্ক করা
Snapshot (RDB) এবং AOF এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | RDB (Snapshot) | AOF (Append Only File) |
|---|---|---|
| ডেটা পার্সিস্টেন্স | নির্দিষ্ট সময় পর পর স্ন্যাপশট তৈরি করা হয়। | প্রতিটি রাইট অপারেশনকে ডিস্কে লগ আকারে সেভ করা হয়। |
| পারফরম্যান্স | কম পারফরম্যান্স ইমপ্যাক্ট। | কিছু পারফরম্যান্স ইমপ্যাক্ট হতে পারে। |
| ডেটা হারানো | কিছু ডেটা হারানো সম্ভব (যদি স্ন্যাপশট তৈরি না হয়)। | AOF নিশ্চিতভাবে ডেটা সেভ করে, হারানো সম্ভাবনা কম। |
| ডিস্ক স্পেস | কম ডিস্ক স্পেস ব্যবহৃত হয়। | বড় ডিস্ক স্পেস ব্যবহৃত হতে পারে। |
| ফাস্ট রিকভারি | দ্রুত রিকভারি (একক স্ন্যাপশট ফাইল)। | রিকভারি সময় বেশি (লম্বা AOF ফাইল পুনঃরায় প্রসেস করা হয়)। |
| নির্ভুলতা | স্ন্যাপশট নির্ভরযোগ্য নয় (স্ন্যাপশট তৈরির সময় পর্যন্ত ডেটা সেভ হয়)। | প্রতিটি রাইট অপারেশন সেভ হয়ে থাকে। |
| ব্যবহার | দ্রুত স্ন্যাপশট তৈরির জন্য উপযুক্ত। | ডেটার সম্পূর্ণ ইতিহাস রক্ষার জন্য উপযুক্ত। |
সারাংশ
- RDB একটি স্ন্যাপশট-ভিত্তিক পার্সিস্টেন্স মেকানিজম, যা নির্দিষ্ট সময় পর পর ডেটার স্ন্যাপশট নেয় এবং ফাস্ট রিকভারি সক্ষম।
- AOF একটি লগ-ভিত্তিক পার্সিস্টেন্স মেকানিজম, যা প্রতিটি রাইট অপারেশন ডিস্কে অ্যাপেন্ড করে এবং ডেটার যথাযথ ইতিহাস সংরক্ষণ করে।
অন্যথায়, আপনি রেডিসে RDB এবং AOF একসাথে ব্যবহার করতে পারেন, যার ফলে এটি স্ন্যাপশট এবং লগ উভয় রিকভারি মেকানিজমকে একত্রে ব্যবহার করবে।
Read more