ক্লাউড ফায়ারস্টোরে সূচী পরিচালনা করুন

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

একটি ত্রুটি বার্তার মাধ্যমে একটি অনুপস্থিত সূচক তৈরি করুন

যদি আপনি একটি পরিসীমা ধারা সহ একটি যৌগিক প্রশ্নের চেষ্টা করেন যা একটি বিদ্যমান সূচকে ম্যাপ করে না, আপনি একটি ত্রুটি পাবেন৷ ত্রুটি বার্তাটিতে Firebase কনসোলে অনুপস্থিত সূচক তৈরি করার জন্য একটি সরাসরি লিঙ্ক রয়েছে।

Firebase কনসোলে তৈরি করা লিঙ্কটি অনুসরণ করুন, স্বয়ংক্রিয়ভাবে জনবহুল তথ্য পর্যালোচনা করুন এবং তৈরি করুন ক্লিক করুন।

ভূমিকা এবং অনুমতি

আপনি ক্লাউড ফায়ারস্টোরে একটি সূচী তৈরি করতে পারার আগে, নিশ্চিত করুন যে আপনাকে নিম্নলিখিত ভূমিকাগুলির মধ্যে যেকোন একটি বরাদ্দ করা হয়েছে:

  • roles/datastore.owner
  • roles/datastore.indexAdmin
  • roles/editor
  • roles/owner

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

  • datastore.indexes.create
  • datastore.indexes.delete
  • datastore.indexes.get
  • datastore.indexes.list
  • datastore.indexes.update

ফায়ারবেস কনসোল ব্যবহার করুন

Firebase কনসোল থেকে ম্যানুয়ালি একটি নতুন সূচক তৈরি করতে:

ফায়ারবেস কনসোলে ফায়ারস্টোর ইন্ডেক্সিং ইন্টারফেসের ছবি

  1. ফায়ারবেস কনসোলের ক্লাউড ফায়ারস্টোর বিভাগে যান।
  2. Indexes ট্যাবে যান এবং Add Index এ ক্লিক করুন।
  3. সংগ্রহের নাম লিখুন এবং আপনি যে ক্ষেত্রগুলি দ্বারা সূচী অর্ডার করতে চান তা সেট করুন।
  4. তৈরি করুন ক্লিক করুন।

সূচী ক্ষেত্রগুলি অবশ্যই ক্ষেত্রের পথের সীমাবদ্ধতার সাথে সামঞ্জস্যপূর্ণ হবে৷

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

সূচী সরান

একটি সূচক মুছে ফেলতে:

  1. ফায়ারবেস কনসোলের ক্লাউড ফায়ারস্টোর বিভাগে যান।
  2. ইনডেক্স ট্যাবে ক্লিক করুন।
  3. আপনি যে সূচীটি মুছে ফেলতে চান তার উপর হোভার করুন এবং প্রসঙ্গ মেনু থেকে মুছুন নির্বাচন করুন।
  4. সতর্কতা থেকে মুছুন ক্লিক করে আপনি এটি মুছে ফেলতে চান তা নিশ্চিত করুন।

Firebase CLI ব্যবহার করুন

এছাড়াও আপনি Firebase CLI এর সাথে সূচী স্থাপন করতে পারেন। শুরু করতে, আপনার প্রকল্প ডিরেক্টরিতে firebase init firestore চালান। সেটআপের সময়, Firebase CLI সঠিক বিন্যাসে ডিফল্ট সূচী সহ একটি JSON ফাইল তৈরি করে। আরও সূচী যোগ করতে ফাইলটি সম্পাদনা করুন এবং এটিকে firebase deploy কমান্ড দিয়ে স্থাপন করুন।

শুধুমাত্র ক্লাউড ফায়ারস্টোর সূচী এবং নিয়ম স্থাপন করতে, --only firestore পতাকা যোগ করুন।

আপনি যদি Firebase কনসোল ব্যবহার করে সূচীতে সম্পাদনা করেন তবে নিশ্চিত করুন যে আপনি আপনার স্থানীয় সূচী ফাইলটিও আপডেট করেছেন। JSON সূচক সংজ্ঞা রেফারেন্স পড়ুন।

Terraform ব্যবহার করুন

ডাটাবেসে সূচী তৈরি করা

ক্লাউড ফায়ারস্টোর ডাটাবেসে একটি একক-ক্ষেত্র সূচক বা যৌগিক সূচক অন্তর্ভুক্ত থাকতে পারে। আপনার ডাটাবেসের জন্য একটি সূচক তৈরি করতে আপনি Terraform কনফিগারেশন ফাইলটি সম্পাদনা করতে পারেন।

একক-ক্ষেত্র সূচক

নিম্নলিখিত উদাহরণ টেরাফর্ম কনফিগারেশন ফাইল chatrooms সংগ্রহের name ক্ষেত্রে একটি একক-ক্ষেত্র সূচক তৈরি করে:

firestore.tf

resource "random_id" "variable"{
  byte_length = 8
}

resource "google_firestore_field" "single-index" {
  project = "project-id"
  database = "database-id"
  collection = "chatrooms_${random_id.variable.hex}"
  field = "name"

  index_config {
    indexes {
        order = "ASCENDING"
        query_scope = "COLLECTION_GROUP"
    }
    indexes {
        array_config = "CONTAINS"
    }
  }

  ttl_config {}
}
  • আপনার প্রকল্প আইডি দিয়ে project-id প্রতিস্থাপন করুন। প্রকল্প আইডি অবশ্যই অনন্য হতে হবে।
  • আপনার ডাটাবেস আইডি দিয়ে database-id প্রতিস্থাপন করুন।

যৌগিক সূচক

নিম্নলিখিত উদাহরণ টেরাফর্ম কনফিগারেশন ফাইল chatrooms সংগ্রহে name ক্ষেত্র এবং description ক্ষেত্রের সংমিশ্রণের জন্য একটি যৌগিক সূচক তৈরি করে:

firestore.tf

resource "google_firestore_index" "composite-index" {
  project = "project-id"
  database = "database-id"

  collection = "chatrooms"

  fields {
    field_path = "name"
    order      = "ASCENDING"
  }

  fields {
    field_path = "description"
    order      = "DESCENDING"
  }

}
  • আপনার প্রকল্প আইডি দিয়ে project-id প্রতিস্থাপন করুন। প্রকল্প আইডি অবশ্যই অনন্য হতে হবে।
  • আপনার ডাটাবেস আইডি দিয়ে database-id প্রতিস্থাপন করুন।

সূচক তৈরির সময়

একটি সূচক তৈরি করতে, ক্লাউড ফায়ারস্টোরকে অবশ্যই সূচী সেট আপ করতে হবে এবং তারপরে বিদ্যমান ডেটা সহ সূচকটি ব্যাকফিল করতে হবে। ইনডেক্স বিল্ড টাইম হল সেটআপ টাইম এবং ব্যাকফিল টাইমের সমষ্টি:

  • একটি সূচক সেট আপ করতে কয়েক মিনিট সময় লাগে৷ একটি সূচকের জন্য সর্বনিম্ন বিল্ড সময় কয়েক মিনিট, এমনকি একটি খালি ডাটাবেসের জন্যও।

  • ব্যাকফিল সময় নির্ভর করে নতুন সূচকে বিদ্যমান ডেটা কতটা তার উপর। সূচকের সংজ্ঞার সাথে যত বেশি ফিল্ড মান মেলে, সূচকটি ব্যাকফিল করতে তত বেশি সময় লাগে।

সূচক বিল্ড দীর্ঘ-চলমান ক্রিয়াকলাপ

আপনি একটি সূচক তৈরি শুরু করার পরে, ক্লাউড ফায়ারস্টোর অপারেশনটিকে একটি অনন্য নাম দেয়৷ অপারেশনের নামগুলো projects/[PROJECT_ID]/databases/(default)/operations/ এর সাথে প্রিফিক্স করা হয়েছে, উদাহরণস্বরূপ:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

যাইহোক, describe কমান্ডের জন্য অপারেশনের নাম উল্লেখ করার সময় আপনি উপসর্গটি ছেড়ে দিতে পারেন।

সমস্ত দীর্ঘ-চলমান ক্রিয়াকলাপ তালিকাভুক্ত করা

দীর্ঘস্থায়ী ক্রিয়াকলাপ তালিকাভুক্ত করতে, gcloud firestore অপারেশন তালিকা কমান্ড ব্যবহার করুন। এই কমান্ড চলমান এবং সম্প্রতি সম্পন্ন ক্রিয়াকলাপ তালিকাভুক্ত করে। কাজ শেষ হওয়ার পর কয়েক দিনের জন্য তালিকাভুক্ত করা হয়:

gcloud firestore operations list

অপারেশন স্ট্যাটাস চেক করুন

সমস্ত দীর্ঘ-চলমান ক্রিয়াকলাপ তালিকাভুক্ত করার পরিবর্তে, আপনি একটি একক অপারেশনের বিবরণ তালিকাভুক্ত করতে পারেন:

gcloud firestore operations describe operation-name

সমাপ্তির সময় অনুমান করা হচ্ছে

আপনার অপারেশন চলাকালীন, অপারেশনের সামগ্রিক অবস্থার জন্য state ক্ষেত্রের মান দেখুন।

একটি দীর্ঘ-চলমান অপারেশনের অবস্থার জন্য একটি অনুরোধ মেট্রিক্সের workEstimated এবং workCompleted । নথির সংখ্যার জন্য এই মেট্রিকগুলি ফেরত দেওয়া হয়। workEstimated একটি অপারেশন প্রক্রিয়া করবে আনুমানিক মোট নথির সংখ্যা দেখায়। workCompleted এখন পর্যন্ত প্রক্রিয়াকৃত নথির সংখ্যা দেখায়। অপারেশন শেষ হওয়ার পরে, workCompleted প্রকৃতপক্ষে প্রক্রিয়াকৃত নথির মোট সংখ্যা প্রতিফলিত করে, যা workEstimated এর মান থেকে ভিন্ন হতে পারে।

মোটামুটি অগ্রগতির অনুমানের জন্য workEstimated দ্বারা সম্পন্ন workCompleted ভাগ করুন। অনুমানটি ভুল হতে পারে কারণ এটি দেরি হওয়া পরিসংখ্যান সংগ্রহের উপর নির্ভর করে।

উদাহরণস্বরূপ, এখানে একটি সূচক তৈরির অগ্রগতি স্থিতি রয়েছে:

{
  "operations": [
    {
      "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
      "metadata": {
        "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
        "common": {
          "operationType": "CREATE_INDEX",
          "startTime": "2020-06-23T16:52:25.697539Z",
          "state": "PROCESSING"
        },
        "progressDocuments": {
          "workCompleted": "219327",
          "workEstimated": "2198182"
        }
       },
    },
    ...

যখন একটি অপারেশন করা হয়, অপারেশনের বিবরণে "done": true । অপারেশনের ফলাফলের জন্য state ক্ষেত্রের মান দেখুন। যদি done ক্ষেত্রটি প্রতিক্রিয়াতে সেট করা না থাকে, তাহলে এর মান false । চলমান ক্রিয়াকলাপের জন্য done মানের অস্তিত্বের উপর নির্ভর করবেন না।

সূচক বিল্ডিং ত্রুটি

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

যদি সূচক তৈরি ব্যর্থ হয়, আপনি কনসোলে ত্রুটি বার্তা দেখতে পাবেন। আপনি যাচাই করার পরে যে আপনি কোনো সূচকের সীমা অতিক্রম করছেন না, আপনার সূচক অপারেশন পুনরায় চেষ্টা করুন।