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

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

ডেটা সূচক সংজ্ঞায়িত করা

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

OrderByChild এর সাথে ইন্ডেক্সিং

এটি ব্যাখ্যা করার সবচেয়ে সহজ উপায় হল একটি উদাহরণের মাধ্যমে। ফায়ারবেসে আমরা সবাই একমত যে ডাইনোসরগুলি বেশ দুর্দান্ত। এখানে ডাইনোসরের তথ্যের একটি নমুনা ডাটাবেস থেকে একটি স্নিপেট রয়েছে৷ .indexOn কিভাবে orderByChild() এর সাথে কাজ করে তা ব্যাখ্যা করতে আমরা এটি ব্যবহার করব।

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

আসুন কল্পনা করি যে আমাদের অ্যাপে, আমাদের প্রায়শই নাম, উচ্চতা এবং দৈর্ঘ্য অনুসারে ডাইনোসরের অর্ডার দিতে হয়, কিন্তু ওজন দ্বারা কখনই নয়। আমরা ফায়ারবেসকে এই তথ্য জানিয়ে আমাদের প্রশ্নের কর্মক্ষমতা উন্নত করতে পারি। যেহেতু ডাইনোসরের নাম শুধুমাত্র কী, ফায়ারবেস ইতিমধ্যেই ডাইনোসরের নাম দ্বারা প্রশ্নের জন্য অপ্টিমাইজ করে, যেহেতু এটিই রেকর্ডের চাবিকাঠি। আমরা ফায়ারবেসকে উচ্চতা এবং দৈর্ঘ্যের জন্যও কোয়েরি অপ্টিমাইজ করতে বলতে .indexOn ব্যবহার করতে পারি:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

অন্যান্য নিয়মের মতো, আপনি আপনার নিয়মের যেকোনো স্তরে একটি .indexOn নিয়ম উল্লেখ করতে পারেন। উপরের উদাহরণের জন্য আমরা এটিকে রুট লেভেলে রেখেছি কারণ ডাইনোসরের সমস্ত ডেটা ডাটাবেসের রুটে সংরক্ষিত থাকে।

OrderByValue দিয়ে ইন্ডেক্সিং

এই উদাহরণে, আমরা দেখাব কিভাবে .indexOn কাজ করে orderByValue() এর সাথে। ধরা যাক আমরা নিম্নোক্ত ডেটা দিয়ে ডিনো স্পোর্টস স্কোরের একটি লিডারবোর্ড তৈরি করছি:

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

যেহেতু আমরা লিডারবোর্ড তৈরি করতে orderByValue() ব্যবহার করছি, তাই আমরা আমাদের /scores নোডে একটি .value নিয়ম যোগ করে আমাদের প্রশ্নগুলি অপ্টিমাইজ করতে পারি:

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}