আপনার ডেটা সূচী করুন

ফায়ারবেস আপনাকে একটি অনিচ্ছাকৃত চাবি কী ব্যবহার করে আপনার ডেটাতে অ্যাড-হক প্রশ্ন করতে দেয়। আপনি আগাম কি আপনার ইনডেক্স হতে হবে, তাহলে আপনি মাধ্যমে বর্ণনা করতে পারেন .indexOn ক্যোয়ারী পারফরম্যান্সের উন্নতি করতে আপনার Firebase রিয়েলটাইম ডাটাবেস সিকিউরিটি রুলস মধ্যে নিয়ম।

ডেটা ইনডেক্স সংজ্ঞায়িত করা

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

OrderByChild সঙ্গে সূচী

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

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

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

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

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

OrderByValue এর সাথে সূচী

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

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

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

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