সূচী ওভারভিউ

শুধুমাত্র ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণের জন্য প্রাসঙ্গিক।

এই পৃষ্ঠায় MongoDB সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোরের জন্য ইনডেক্সিং বর্ণনা করা হয়েছে। MongoDB সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোর ডিফল্টভাবে কোনও ইনডেক্স তৈরি করে না। ডাটাবেসের কর্মক্ষমতা উন্নত করতে, আপনার সর্বাধিক ব্যবহৃত কোয়েরির জন্য ইনডেক্স তৈরি করুন।

ডাটাবেসের কর্মক্ষমতার উপর সূচকের বিরাট প্রভাব রয়েছে। যদি কোনও প্রশ্নের জন্য একটি সূচক বিদ্যমান থাকে, তাহলে ডাটাবেস দক্ষতার সাথে ফলাফল প্রদান করতে পারে, স্ক্যান করার জন্য প্রয়োজনীয় ডেটার পরিমাণ হ্রাস করে এবং ফলাফল সাজানোর জন্য প্রয়োজনীয় কাজ হ্রাস করে। তবে, সূচক এন্ট্রিগুলি স্টোরেজ খরচ এবং ইনডেক্স করা ক্ষেত্রগুলিতে লেখার সময় করা কাজের পরিমাণ বৃদ্ধি করে।

সূচকের সংজ্ঞা এবং গঠন

একটি সূচক নিম্নলিখিতগুলি নিয়ে গঠিত:

  • একটি সংগ্রহ আইডি
  • প্রদত্ত সংগ্রহের ক্ষেত্রের একটি তালিকা
  • প্রতিটি ক্ষেত্রের জন্য একটি ক্রম, হয় আরোহী অথবা অবরোহী,

একটি সূচী sparse , multicey , অথবা unique বিকল্পগুলিও সক্ষম করতে পারে।

সূচক ক্রম

প্রতিটি ক্ষেত্রের ক্রম এবং সাজানোর দিকনির্দেশনা সূচকটিকে স্বতন্ত্রভাবে সংজ্ঞায়িত করে। উদাহরণস্বরূপ, নিম্নলিখিত সূচকগুলি দুটি স্বতন্ত্র সূচক এবং বিনিময়যোগ্য নয়:

সংগ্রহ ক্ষেত্র
শহরগুলি দেশ (ঊর্ধ্বমুখী), জনসংখ্যা (অবরোহী)
শহরগুলি জনসংখ্যা (অবরোহী), দেশ (আরোহী),

কোনও কোয়েরি সমর্থন করার জন্য একটি সূচী তৈরি করার সময়, আপনার কোয়েরির মতো একই ক্রমে ক্ষেত্রগুলি অন্তর্ভুক্ত করুন।

সূচক ঘনত্ব

ডিফল্টরূপে, ইনডেক্স এন্ট্রিগুলি একটি সংগ্রহের সমস্ত নথি থেকে ডেটা সঞ্চয় করে। এটি একটি নন-স্পার্স ইনডেক্স হিসাবে পরিচিত। ডকুমেন্টে ইনডেক্সে নির্দিষ্ট কোনও ক্ষেত্র রয়েছে কিনা তা নির্বিশেষে একটি ইনডেক্স এন্ট্রি একটি ডকুমেন্টের জন্য যোগ করা হবে। ইনডেক্স এন্ট্রি তৈরি করার সময় অস্তিত্বহীন ক্ষেত্রগুলিকে একটি NULL মান হিসাবে বিবেচনা করা হয়। এই আচরণ পরিবর্তন করতে, আপনি ইনডেক্সটিকে একটি স্পার্স ইনডেক্স হিসাবে সংজ্ঞায়িত করতে পারেন।

বিরল সূচক

একটি স্পার্স ইনডেক্স শুধুমাত্র সংগ্রহের সেইসব নথিকে সূচীবদ্ধ করে যেগুলিতে কমপক্ষে একটি সূচীকৃত ক্ষেত্রের জন্য একটি মান (নাল সহ) থাকে। একটি স্পার্স ইনডেক্স স্টোরেজ খরচ কমায় এবং কর্মক্ষমতা উন্নত করতে পারে।

অ্যারের মানগুলির জন্য মাল্টিকি ইনডেক্স

যদি আপনি এমন একটি ফিল্ডে একটি ইনডেক্স তৈরি করেন যেখানে অ্যারের মান থাকে, তাহলে আপনাকে অবশ্যই একটি মাল্টিকি ইনডেক্স তৈরি করতে হবে। একটি নিয়মিত ইনডেক্স অ্যারের মানগুলিকে ইনডেক্স করতে পারে না। একটি মাল্টিকি ইনডেক্স ইনডেক্স সংজ্ঞায় একটি অ্যারে ফিল্ড পর্যন্ত সমর্থন করে এবং অ্যারের মানগুলিকে অতিক্রম করে এমন ক্রিয়াকলাপের জন্য ব্যবহার করা যেতে পারে।

যদি আপনি জানেন যে অ্যারের মানগুলি সূচী করতে হবে, তবেই কেবল মাল্টিকি ইনডেক্স ব্যবহার করুন। একটি কোয়েরি প্রক্রিয়াকরণের সময় নিয়মিত ইনডেক্সের সুবিধা রয়েছে। উদাহরণস্বরূপ, নিয়মিত ইনডেক্সগুলি একটি পরিসরের মধ্যে মানগুলিকে আরও দক্ষতার সাথে ফিল্টার করতে পারে।

অ্যারে মান এবং মাল্টিকি ইনডেক্স নিয়ে কাজ করার সময় নিম্নলিখিত পরিস্থিতিগুলি ত্রুটির দিকে পরিচালিত করে:

  • একটি অপারেশন একটি নিয়মিত সূচক দ্বারা সূচীকৃত একটি ক্ষেত্রে একটি অ্যারের মান যোগ করার চেষ্টা করে। অ্যারের মান যোগ করার জন্য, আপনাকে সেই ক্ষেত্রে বিদ্যমান নিয়মিত সূচকগুলি মুছে ফেলতে হবে এবং সেগুলিকে মাল্টিকি সূচক হিসাবে পুনরায় তৈরি করতে হবে।
  • আপনি এমন একটি ক্ষেত্রের উপর একটি নিয়মিত সূচক তৈরি করার চেষ্টা করেন যেখানে একটি অ্যারে মান থাকে। আপনাকে হয় একটি মাল্টিকি সূচক তৈরি করতে হবে অথবা অ্যারের মানগুলি মুছে ফেলতে হবে।
  • একটি অপারেশন অ্যারে মান সহ একাধিক ক্ষেত্র সূচী করার চেষ্টা করে। একটি মাল্টিকি ইনডেক্সে অ্যারে মান সহ একাধিক ক্ষেত্র থাকতে পারে না। এগিয়ে যেতে, আপনার ডেটা মডেল বা আপনার সূচক সংজ্ঞা পরিবর্তন করুন।
  • আপনি একটি মাল্টিকি ইনডেক্স তৈরি করার চেষ্টা করেন যেখানে দুটি ফিল্ড পাথ users.posts এবং users.zip মতো একটি সাধারণ উপসর্গ ভাগ করে।

অনন্য সূচক

সূচীকৃত ক্ষেত্রগুলির জন্য অনন্য মান প্রয়োগ করার জন্য অনন্য সূচী বিকল্পটি সেট করুন। একাধিক ক্ষেত্রের সূচীর জন্য, প্রতিটি মানের সমন্বয় সূচী জুড়ে অনন্য হতে হবে। ডাটাবেস যেকোনো আপডেট এবং সন্নিবেশ ক্রিয়াকলাপ প্রত্যাখ্যান করে যা ডুপ্লিকেট মান সহ সূচী এন্ট্রি তৈরি করার চেষ্টা করে। যদি সূচীকৃত ক্ষেত্রগুলির ডেটাতে ডুপ্লিকেট মান থাকে এবং আপনি একটি অনন্য সূচী তৈরি করার চেষ্টা করেন, তাহলে সূচী বিল্ডটি অপারেশনের বিবরণে একটি ত্রুটি বার্তা সহ ব্যর্থ হয়।

একটি অনন্য সূচকে অনুপস্থিত ক্ষেত্রগুলি

যদি আপনি অনন্য সূচকের জন্য অনুপস্থিত ক্ষেত্র সহ একটি নথি সন্নিবেশ করান, তাহলে সূচকটি অনুপস্থিত ক্ষেত্রগুলির জন্য null মান সেট করে। ফলস্বরূপ সূচক এন্ট্রিটি অনন্য হতে হবে অন্যথায় অপারেশনটি ব্যর্থ হবে।

উদাহরণস্বরূপ, এই সূচকের সাথে:

db.cities.createIndex( { "name": 1 }, { unique: true } )

যদি আপনি সংগ্রহে {"abbreviation": "LA"} ডকুমেন্টটি যোগ করেন, তাহলে অনন্য সূচকটি null name সেট করে একটি এন্ট্রি তৈরি করে। এরপর যদি আপনি {"abbreviation": "NYC"} ডকুমেন্টটি যোগ করার চেষ্টা করেন, তাহলে অপারেশনটি ব্যর্থ হয় কারণ অনন্য সূচকের জন্য প্রাপ্ত এন্ট্রিটি একই।

একই আচরণ একাধিক ক্ষেত্র সহ অনন্য সূচীর ক্ষেত্রে প্রযোজ্য। একটি নথি তৈরি বা আপডেট করার সময়, অনুপস্থিত সূচীকৃত ক্ষেত্রগুলি null এ সেট করা হয় এবং ফলস্বরূপ সূচী এন্ট্রিটি সূচীতে অনন্য হতে হবে।

সূচক তৈরির ত্রুটির সমাধান করুন

আপনার ইনডেক্স পরিচালনা করার সময় আপনি ইনডেক্স তৈরির ত্রুটির সম্মুখীন হতে পারেন। ডাটাবেস ডেটা নিয়ে কোনও সমস্যার সম্মুখীন হলে একটি ইনডেক্সিং অপারেশন ব্যর্থ হতে পারে। নিম্নলিখিত কারণে ইনডেক্সিং অপারেশন ব্যর্থ হতে পারে:

  • আপনি একটি সূচক সীমায় পৌঁছে গেছেন। উদাহরণস্বরূপ, অপারেশনটি প্রতিটি নথিতে সর্বোচ্চ সংখ্যক সূচক এন্ট্রিতে পৌঁছে যেতে পারে। যদি সূচক তৈরি ব্যর্থ হয়, তাহলে আপনি একটি ত্রুটি বার্তা দেখতে পাবেন। যদি আপনি একটি সূচক সীমায় না পৌঁছান, তাহলে সূচক সীমায় পুনরায় চেষ্টা করুন।
  • একটি মাল্টিকি ইনডেক্স প্রয়োজন। ইনডেক্স করা ফিল্ডগুলির মধ্যে অন্তত একটিতে একটি অ্যারে মান রয়েছে। এগিয়ে যাওয়ার জন্য, আপনাকে হয় একটি মাল্টিকি ইনডেক্স ব্যবহার করতে হবে অথবা অ্যারের মানগুলি মুছে ফেলতে হবে।
  • একটি অপারেশন অ্যারে মান সহ একাধিক ক্ষেত্র সূচী করার চেষ্টা করে। একটি মাল্টিকি ইনডেক্সে অ্যারে মান সহ একাধিক ক্ষেত্র থাকতে পারে না। এগিয়ে যেতে, আপনার ডেটা মডেল বা আপনার সূচক সংজ্ঞা পরিবর্তন করুন।
  • আপনি অনন্য সূচক বিকল্পটি সেট করেন এবং সূচীকৃত ক্ষেত্রগুলির ডেটা ডুপ্লিকেট সূচক এন্ট্রি তৈরি করবে। এগিয়ে যাওয়ার জন্য, ডেটা থেকে মানগুলির ডুপ্লিকেট সমন্বয়গুলি সরান।

এরপর কি?