Dynamic এবং Static Mapping এর ব্যবহার
Elasticsearch-এ ডেটা ইন্ডেক্সিং-এর জন্য Dynamic এবং Static Mapping উভয় পদ্ধতি ব্যবহার করা যায়। প্রতিটি পদ্ধতির নিজস্ব সুবিধা এবং ব্যবহারিক ক্ষেত্রে রয়েছে। নিচে Dynamic এবং Static Mapping-এর বিস্তারিত আলোচনা এবং কখন, কীভাবে এগুলো ব্যবহার করা হয় তা নিয়ে আলোচনা করা হলো।
১. Dynamic Mapping
- Dynamic Mapping ডিফল্টভাবে Elasticsearch-এ সক্রিয় থাকে। এটি একটি স্বয়ংক্রিয় প্রক্রিয়া, যেখানে Elasticsearch নতুন ডকুমেন্ট পাওয়ার পর নতুন ফিল্ড সনাক্ত করে এবং সেগুলোর ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে।
- Dynamic Mapping নতুন ডকুমেন্ট দ্রুত ইন্ডেক্স করার জন্য উপযোগী এবং যেসব ক্ষেত্রে ডেটার কাঠামো পরিবর্তন হতে পারে বা পূর্ব নির্ধারিত না থাকে, সেখানে এটি বেশ কার্যকর।
Dynamic Mapping-এর উদাহরণ
- যদি Elasticsearch-এ একটি নতুন ডকুমেন্ট পাঠানো হয় এবং এর ফিল্ডগুলো পূর্বে ইন্ডেক্সে নির্ধারণ করা না থাকে, তখন Dynamic Mapping স্বয়ংক্রিয়ভাবে ফিল্ডগুলো ইন্ডেক্স করবে:
POST /my-dynamic-index/_doc
{
"name": "John Doe",
"age": 30,
"occupation": "Engineer",
"join_date": "2022-10-01"
}- এখানে Elasticsearch নতুন
"name","age","occupation", এবং"join_date"ফিল্ড সনাক্ত করে এবং সেগুলোর ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে:"name"->text"age"->integer"occupation"->text"join_date"->date
- Dynamic Mapping ফিল্ড এবং ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে এবং ডেটা দ্রুত ইন্ডেক্স করা যায়।
Dynamic Mapping কখন ব্যবহার করবেন
- যখন ডেটার কাঠামো অগ্রিম নির্ধারণ করা সম্ভব নয় বা ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ পরিবর্তন হতে পারে।
- যখন দ্রুত নতুন ডকুমেন্ট ইন্ডেক্স করা প্রয়োজন এবং প্রতিটি ফিল্ড ম্যানুয়ালি নির্ধারণ করার প্রয়োজন নেই।
- API বা লজিক্যাল সিস্টেমের মাধ্যমে অপ্রত্যাশিত ফিল্ড বা ডেটা টাইপ তৈরি হতে পারে, সেক্ষেত্রে Dynamic Mapping কার্যকর।
Dynamic Mapping-এর সুবিধা এবং সীমাবদ্ধতা
- সুবিধা:
- নতুন ডকুমেন্ট দ্রুত এবং স্বয়ংক্রিয়ভাবে ইন্ডেক্স করা যায়।
- ম্যানুয়ালি ফিল্ড এবং ডেটা টাইপ নির্ধারণ করতে হয় না।
- সীমাবদ্ধতা:
- Dynamic Mapping সবসময় সঠিক ডেটা টাইপ নির্ধারণ করতে পারে না, যেমন সংখ্যা
floatবাintegerহিসেবে সনাক্ত করা। - স্কিমা অনুমান করতে গিয়ে সার্চ পারফরম্যান্স কমতে পারে।
- Dynamic Mapping সবসময় সঠিক ডেটা টাইপ নির্ধারণ করতে পারে না, যেমন সংখ্যা
২. Static Mapping
- Static Mapping একটি পদ্ধতি যেখানে ব্যবহারকারী বা ডেভেলপার ইন্ডেক্স তৈরির সময় ডকুমেন্টের প্রতিটি ফিল্ড এবং তার ডেটা টাইপ আগে থেকেই নির্ধারণ করে।
- Static Mapping ব্যবহার করলে ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ সবসময় সঠিক এবং নির্দিষ্ট থাকে, যা সার্চ অপারেশনের পারফরম্যান্স বাড়ায়।
Static Mapping-এর উদাহরণ
- একটি ইন্ডেক্স তৈরি করার সময় ফিল্ডের ডেটা টাইপ নির্ধারণ করতে পারেন:
PUT /my-static-index
{
"mappings": {
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" },
"occupation": { "type": "keyword" },
"join_date": { "type": "date", "format": "yyyy-MM-dd" }
}
}
}- এখানে:
"name"ফিল্ডtextটাইপ হিসেবে নির্ধারণ করা হয়েছে।"age"ফিল্ডintegerহিসেবে,"occupation"ফিল্ডkeywordহিসেবে এবং"join_date"ফিল্ডdateটাইপ নির্ধারণ করা হয়েছে।
- ডকুমেন্ট ইন্ডেক্স করার সময় Elasticsearch এই নির্ধারিত ফিল্ড টাইপ অনুসারে কাজ করবে এবং সঠিকভাবে ডেটা ইন্ডেক্স করবে।
Static Mapping কখন ব্যবহার করবেন
- যখন ডেটার কাঠামো আগে থেকেই নির্ধারণ করা আছে এবং তা পরিবর্তন হওয়ার সম্ভাবনা নেই।
- যখন ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ নিশ্চিত করা প্রয়োজন এবং সঠিক ডেটা টাইপ নির্ধারণ করে সার্চ অপারেশন অপ্টিমাইজ করা প্রয়োজন।
- যেসব ক্ষেত্রে পারফরম্যান্স এবং নির্ভুলতা গুরুত্বপূর্ণ, সেখানে Static Mapping ব্যবহার করা উচিত।
Static Mapping-এর সুবিধা এবং সীমাবদ্ধতা
- সুবিধা:
- সার্চ এবং ইন্ডেক্সিং পারফরম্যান্স উন্নত হয়, কারণ ডেটা টাইপ নির্ধারণ করা থাকে।
- ফিল্ড এবং ডেটার নির্ভুলতা নিশ্চিত করা যায়, যা সার্চ অপারেশন সঠিকভাবে পরিচালনা করতে সহায়ক।
- সীমাবদ্ধতা:
- Dynamic Mapping-এর তুলনায় Static Mapping কিছুটা সময়সাপেক্ষ, কারণ প্রতিটি ফিল্ড ম্যানুয়ালি নির্ধারণ করতে হয়।
- নতুন ফিল্ড যোগ করার জন্য Mapping আপডেট করতে হয়, যা Dynamic Mapping-এর মতো স্বয়ংক্রিয়ভাবে সম্পন্ন হয় না।
Dynamic এবং Static Mapping এর সংমিশ্রণ
- আপনি Dynamic এবং Static Mapping একত্রে ব্যবহার করতে পারেন। যেমন, কিছু ফিল্ড Static Mapping-এ নির্ধারণ করা থাকবে এবং বাকি ফিল্ড Dynamic Mapping-এ যোগ করা হবে।
- Dynamic Mapping নির্দিষ্ট ক্ষেত্রেই সীমাবদ্ধ রাখতে পারেন, যেখানে Static Mapping-এর বাইরে নতুন ডেটা যোগ করার প্রয়োজন হতে পারে।
Dynamic এবং Static Mapping এর সংমিশ্রণ উদাহরণ
PUT /mixed-index
{
"mappings": {
"dynamic": "true",
"properties": {
"product_id": { "type": "keyword" },
"price": { "type": "float" }
}
}
}
- এখানে
"product_id"এবং"price"ফিল্ড Static Mapping-এ নির্ধারিত, কিন্তু অন্য নতুন ফিল্ড Dynamic Mapping ব্যবহার করে ইন্ডেক্স করা হবে।
উপসংহার
- Dynamic Mapping সাধারণত দ্রুত নতুন ডকুমেন্ট ইন্ডেক্স করার জন্য এবং যেখানে ডেটার কাঠামো পূর্ব নির্ধারিত নয়, সেখানে ব্যবহৃত হয়।
- Static Mapping নির্ধারিত এবং নির্ভুল ডেটার ক্ষেত্রে ব্যবহৃত হয়, যেখানে ফিল্ড এবং ডেটা টাইপ নিশ্চিত করা যায় এবং সার্চ পারফরম্যান্স উন্নত করা যায়।
- Dynamic এবং Static Mapping একত্রে ব্যবহার করে ডেটার ফ্লেক্সিবিলিটি এবং নির্ভুলতা নিশ্চিত করা যায়, যা ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশনের জন্য কার্যকরী হয়।
Content added By
Read more