Elasticsearch-এ Document এবং Shard এর ধারণা
Elasticsearch-এ Document এবং Shard দুইটি গুরুত্বপূর্ণ উপাদান, যা ডেটা সংরক্ষণ, ইন্ডেক্সিং, এবং সার্চ অপারেশনকে কার্যকর করতে সহায়ক। Document হলো Elasticsearch-এর ডেটা ইউনিট, যেখানে তথ্য JSON ফরম্যাটে সংরক্ষণ করা হয়, এবং Shard হলো ইন্ডেক্সের একটি অংশ বা সেগমেন্ট, যা ডেটা স্কেলেবল এবং দ্রুত রিট্রিভাল নিশ্চিত করতে ব্যবহৃত হয়। নিচে Document এবং Shard সম্পর্কে বিস্তারিত আলোচনা করা হলো:
১. Document (ডকুমেন্ট)
- Document হলো Elasticsearch-এর মৌলিক ডেটা ইউনিট। এটি JSON ফরম্যাটে তথ্য ধারণ করে এবং একটি ইন্ডেক্সের মধ্যে সংরক্ষিত থাকে।
- প্রতিটি ডকুমেন্টে একটি ইউনিক ID এবং বিভিন্ন Field থাকে, যা ডেটার গঠন এবং বৈশিষ্ট্য সম্পর্কে তথ্য ধারণ করে। উদাহরণস্বরূপ, একটি ডকুমেন্টে একটি প্রোডাক্টের নাম, দাম, বিবরণ ইত্যাদি সংরক্ষিত থাকতে পারে।
- Document গুলোতে সাধারণত যে ধরনের তথ্য থাকতে পারে:
- String (টেক্সট বা শব্দ)
- Number (সংখ্যা)
- Boolean (True/False)
- Date (তারিখ ও সময়)
- Array (একাধিক মানের তালিকা)
- Nested Objects (একটি ডকুমেন্টের মধ্যে অন্য ডকুমেন্ট)
- একটি ডকুমেন্ট এককভাবে একটি JSON অবজেক্ট হিসেবে থাকে এবং একটি ইন্ডেক্সে অনেক ডকুমেন্ট সংরক্ষণ করা যায়।
- ডকুমেন্টগুলোতে একটি Mapping প্রয়োগ করা হয়, যা প্রতিটি ফিল্ডের ডেটা টাইপ নির্ধারণ করে এবং Elasticsearch-কে ডেটা সঠিকভাবে ইন্ডেক্স এবং সার্চ করতে সহায়ক করে।
উদাহরণ:
{
"product_id": "123",
"name": "Wireless Headphones",
"brand": "TechSound",
"price": 59.99,
"in_stock": true,
"release_date": "2023-01-15",
"categories": ["Electronics", "Audio", "Accessories"]
}
- উপরোক্ত ডকুমেন্টে একটি প্রোডাক্টের বিভিন্ন তথ্য সংরক্ষিত আছে এবং এটি JSON ফরম্যাটে রয়েছে।
২. Shard (শার্ড)
- Shard হলো Elasticsearch-এর একটি ইন্ডেক্সের লজিক্যাল সেগমেন্ট বা অংশ। একটি ইন্ডেক্স যখন বড় আকারের ডেটা ধারণ করে, তখন সেটি শার্ডে ভাগ করা হয়, যাতে ডেটা সহজে স্কেল এবং দ্রুত রিট্রিভ করা যায়।
- শার্ড Elasticsearch-এর ডিস্ট্রিবিউটেড আর্কিটেকচারের মূল উপাদান এবং এটি বড় আকারের ইন্ডেক্সকে ছোট ছোট অংশে ভাগ করে বিভিন্ন নোডে বিতরণ করে।
- দুটি প্রকারের শার্ড রয়েছে:
- Primary Shard: ইন্ডেক্সের মূল শার্ড, যেখানে ডেটা প্রথমে সংরক্ষিত হয়। প্রতিটি ইন্ডেক্সে এক বা একাধিক প্রাইমারি শার্ড থাকে।
- Replica Shard: প্রাইমারি শার্ডের একটি বা একাধিক কপি। রেপ্লিকা শার্ডগুলো ফল্ট টলারেন্স এবং হাই অ্যাভেলেবিলিটি নিশ্চিত করতে ব্যবহৃত হয়। যদি কোনো প্রাইমারি শার্ড ব্যর্থ হয়, তবে রেপ্লিকা শার্ড সক্রিয় হয়ে ডেটা অ্যাক্সেস নিশ্চিত করে।
- Elasticsearch শার্ডগুলোকে স্বয়ংক্রিয়ভাবে বিভিন্ন নোডে বরাদ্দ করে এবং ক্লাস্টারের লোড ব্যালান্স করে, যাতে সার্ভার ডাউন হলে বা লোড বৃদ্ধি পেলে শার্ডগুলো পুনর্বন্টন করা যায়।
উদাহরণ:
- ধরুন একটি ইন্ডেক্সে ১০০ মিলিয়ন ডকুমেন্ট রয়েছে। এটি যদি একটি একক নোডে থাকে, তাহলে সার্চ অপারেশন ধীর গতির হতে পারে। তাই Elasticsearch সেই ইন্ডেক্সকে ৫টি প্রাইমারি শার্ডে ভাগ করে দেয় এবং প্রতিটি শার্ডকে ভিন্ন নোডে রাখে, যা সার্চ এবং ইন্ডেক্সিং পারফরম্যান্সকে বাড়ায়।
- প্রতিটি প্রাইমারি শার্ডের ১ বা একাধিক রেপ্লিকা শার্ড তৈরি করা হয়, যাতে কোনো প্রাইমারি শার্ড ব্যর্থ হলে রেপ্লিকা শার্ড দিয়ে ডেটা পুনরুদ্ধার করা যায়।
Document এবং Shard একসঙ্গে কিভাবে কাজ করে?
ডেটা ইন্ডেক্সিং:
- যখন একটি ডকুমেন্ট ইন্ডেক্স করা হয়, তখন Elasticsearch সেই ডকুমেন্টকে একটি প্রাইমারি শার্ডে সংরক্ষণ করে। এরপর প্রাইমারি শার্ডের রেপ্লিকা শার্ডগুলোতে সেই ডকুমেন্ট কপি করে।
- প্রতিটি ডকুমেন্টের ID এবং হ্যাশিং অ্যালগরিদম ব্যবহার করে Elasticsearch শার্ড নির্ধারণ করে, যাতে ডকুমেন্টটি কোন শার্ডে সংরক্ষণ করা হবে।
সার্চ অপারেশন:
- সার্চ রিকোয়েস্ট পাওয়ার পর, Elasticsearch সেই রিকোয়েস্টটি বিভিন্ন শার্ডে ভাগ করে দেয়। প্রতিটি শার্ড থেকে সার্চ রেজাল্ট সংগ্রহ করা হয় এবং তা মিলে একটি সম্মিলিত রেসপন্স তৈরি করা হয়।
- রেপ্লিকা শার্ডগুলো সার্চ অপারেশনে ব্যবহার করা যেতে পারে, যা সার্চ পারফরম্যান্স বাড়ায় এবং লোড ব্যালান্স করতে সহায়ক।
উপসংহার
Document হলো Elasticsearch-এর মৌলিক ডেটা ইউনিট, যেখানে JSON ফরম্যাটে ডেটা সংরক্ষিত থাকে এবং ডেটাকে দ্রুত সার্চ এবং রিট্রিভ করার জন্য ইনডেক্স করা হয়। Shard হলো ইন্ডেক্সের একটি সেগমেন্ট, যা ডেটা স্কেলেবল এবং দ্রুত রিট্রিভাল নিশ্চিত করতে ব্যবহৃত হয়। শার্ডগুলো Elasticsearch-এর ডিস্ট্রিবিউটেড আর্কিটেকচারের মাধ্যমে বিভিন্ন নোডে বিতরণ করা হয়, যা ফল্ট টলারেন্স এবং হাই পারফরম্যান্স নিশ্চিত করে। Document এবং Shard একসঙ্গে কাজ করে Elasticsearch-এর ডেটা স্টোরেজ এবং সার্চ কার্যক্রমকে কার্যকর এবং দ্রুত সম্পন্ন করতে সহায়ক।