সূচী ওভারভিউ

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

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

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

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

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

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

একটি সূচক স্পার্স , মাল্টিকি , বা অনন্য বিকল্পগুলিকে সক্ষম করতে পারে৷

সূচী ক্রম

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

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

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

সূচক ঘনত্ব

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

স্পার্স ইনডেক্স

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

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

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

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

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

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

অনন্য সূচক

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

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

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

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

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

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

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

সূচক বিল্ডিং ত্রুটির সমস্যা সমাধান করুন

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

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

এরপর কি