সূচী পরিচালনা করুন

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

এই পৃষ্ঠাটি আপনার সূচকগুলি কীভাবে পরিচালনা করবেন তা বর্ণনা করে। সূচী সম্পর্কে আরও জানতে, সূচী ওভারভিউ দেখুন।

আপনি শুরু করার আগে

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

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

একটি ভূমিকা প্রদান করতে, একটি একক ভূমিকা মঞ্জুর করুন দেখুন। Cloud Firestore ভূমিকা এবং সংশ্লিষ্ট অনুমতি সম্পর্কে আরও তথ্যের জন্য, পূর্বনির্ধারিত ভূমিকা দেখুন।

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

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

একটি সূচক তৈরি করুন

একটি সূচক তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

MongoDB API

একটি সূচক তৈরি করতে createIndex() পদ্ধতি ব্যবহার করুন। যেমন:

  •   db.restaurants.createIndex({"cuisine" : 1})
      
  •   db.restaurants.createIndex({"cuisine" : 1}, {sparse: true})
      
  • db.runCommand() দিয়ে সূচক তৈরি করাও সর্বাধিক একটি সূচকের সাথে সমর্থিত।

      db.runCommand({"createIndexes":"restaurant", "index": [{"key": {"cuisine":1}, {"name": "cuisine_index"}]})
      

নিম্নলিখিত সীমাবদ্ধতা নোট করুন:

  • আপনি প্রতি অনুরোধে শুধুমাত্র একটি সূচক তৈরি করতে পারেন। db. collection .createIndexes() সমর্থিত নয়।
  • MongoDB API-এর সাথে সূচী তৈরির জন্য অডিট লগগুলি google.firestore.admin.v1.FirestoreAdmin.CreateIndex পদ্ধতির নাম ব্যবহার করে।
  • সমর্থিত সূচক বিকল্পের জন্য, সূচী এবং সূচক বৈশিষ্ট্য দেখুন।
Firebase কনসোল
  1. Firebase কনসোলে, ফায়ারস্টোর ডেটাবেস পৃষ্ঠায় যান।

    Firestore ডাটাবেসে যান

  2. ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
  3. ইনডেক্স ট্যাবে, সূচক তৈরি করুন ক্লিক করুন।
  4. একটি সংগ্রহ আইডি লিখুন।
  5. এক বা একাধিক ক্ষেত্রের পথ যোগ করুন এবং প্রতিটির জন্য একটি সূচক বিকল্প নির্বাচন করুন।
  6. একটি ক্ষেত্র উপস্থিতি বিকল্প নির্বাচন করুন, হয় নন-স্পার্স বা স্পারস।
  7. ঐচ্ছিকভাবে, আপনি multikey সূচক বিকল্প সেট করতে পারেন।
  8. তৈরি করুন ক্লিক করুন।
  9. আপনার নতুন ইনডেক্স ইনডেক্সের তালিকায় প্রদর্শিত হয় এবং MongoDB সামঞ্জস্যের সাথে ক্লাউড ফায়ারস্টোর আপনার সূচক তৈরি করা শুরু করে। আপনার ইনডেক্স তৈরি হয়ে গেলে, আপনি ইনডেক্সের পাশে একটি সবুজ চেক মার্ক দেখতে পাবেন। যদি সূচক তৈরি করা না হয়, তাহলে সম্ভাব্য কারণগুলির জন্য সূচক বিল্ডিং ত্রুটিগুলি দেখুন।
gcloud CLI

একটি সূচক তৈরি করতে, gcloud firestore indexes composite create কমান্ড ব্যবহার করুন। mongodb-compatible-apiapi-scope সেট করুন।

gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION \
--field-config=FIELD_CONFIGURATION \
--query-scope=collection-group \
--density=dense \
--api-scope=mongodb-compatible-api

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • DATABASE_ID : একটি ডাটাবেস আইডি।
  • COLLECTION : একটি সংগ্রহের নাম।
  • FIELD_CONFIGURATION : একটি ক্ষেত্র কনফিগারেশন। প্রতিটি ক্ষেত্রের জন্য, --field-config=field-path= যোগ করুন। যেমন:
        --field-config=field-path=user-id,order=descending \
        --field-config=field-path=score,order=descending
        

    এই ক্ষেত্রগুলি কনফিগার করার বিষয়ে আরও তথ্যের জন্য, --field-config দেখুন।

একটি sparse সূচক তৈরি করতে, --density=sparse-any সেট করুন।

একটি মাল্টিকি সূচক তৈরি করতে, --multikey পতাকা যোগ করুন।

একটি অনন্য সূচক তৈরি করতে, --unique পতাকা যোগ করুন।

টেরাফর্ম

google_firestore_index রিসোর্সটি ব্যবহার করুন এবং api_scope কে MONGODB_COMPATIBLE_API এবং query_scope COLLECTION_GROUP এ সেট করুন।

resource "google_firestore_index" "index" {
  database    = "DATABASE_ID"
  collection  = "COLLECTION"
  api_scope   = "MONGODB_COMPATIBLE_API"
  query_scope = "COLLECTION_GROUP"

  // You can include multiple field blocks
  fields {
    field_path = "FIELD_PATH"
    order      = "ORDER"
  }

  // Optional
  multikey = true
  density  = "DENSITY"
}

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • DATABASE_ID : আপনার নির্বাচিত ডাটাবেসের জন্য ডাটাবেস আইডি
  • COLLECTION : সূচীতে সংগ্রহের নাম
  • FIELD_PATH : সূচকের ক্ষেত্রের নাম
  • ORDER : ASCENDING বা DESCENDING একটি
  • DENSITY : SPARSE_ANY বা DENSE এর মধ্যে একটি

একটি সূচক মুছুন

একটি সূচক মুছে ফেলতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

MongoDB API

একটি সূচক মুছে ফেলতে dropIndex() পদ্ধতি ব্যবহার করুন। যেমন:

সূচক নাম ব্যবহার করে একটি সূচক মুছুন

db.restaurants.dropIndex("cuisine_index")

সূচক সংজ্ঞা ব্যবহার করে একটি সূচক মুছুন

db.restaurants.dropIndex({"cuisine" : 1})
Firebase কনসোল
  1. Firebase কনসোলে, ফায়ারস্টোর ডেটাবেস পৃষ্ঠায় যান।

    ফায়ারস্টোর ডাটাবেসে যান

  2. ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
  3. ইনডেক্স ট্যাবে ক্লিক করুন।
  4. ইনডেক্সের তালিকায়, আপনি যে সূচীটি মুছতে চান বোতাম থেকে মুছুন নির্বাচন করুন।
  5. সূচক মুছুন ক্লিক করুন।
gcloud CLI
  1. সূচকের নাম খুঁজে পেতে, gcloud firestore indexes composite list কমান্ডটি ব্যবহার করুন।

    gcloud firestore indexes composite list \
    --database='DATABASE_ID'

    ডেটাবেস আইডি দিয়ে DATABASE_ID প্রতিস্থাপন করুন।

  2. সূচী মুছে ফেলতে, gcloud firestore indexes composite delete কমান্ডটি ব্যবহার করুন।

    gcloud firestore indexes composite delete INDEX_NAME \
    --database='DATABASE_ID'

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • INDEX_NAME : একটি সূচকের নাম
    • DATABASE_ID : একটি ডাটাবেস আইডি

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

একটি সূচক তৈরি করতে, MongoDB সামঞ্জস্য সহ ক্লাউড ফায়ারস্টোরকে অবশ্যই সূচক তৈরি করতে হবে এবং তারপরে বিদ্যমান ডেটা সহ সূচক এন্ট্রিগুলিকে ব্যাকফিল করতে হবে। একটি সূচক তৈরি করতে প্রয়োজনীয় সময় নিম্নলিখিত দ্বারা নির্ধারিত হয়:

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

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

দীর্ঘস্থায়ী ক্রিয়াকলাপ পরিচালনা করুন

সূচক বিল্ড দীর্ঘ-চলমান ক্রিয়াকলাপ । নিম্নলিখিত বিভাগগুলি সূচীগুলির জন্য দীর্ঘস্থায়ী ক্রিয়াকলাপগুলির সাথে কীভাবে কাজ করতে হয় তা বর্ণনা করে৷

আপনি একটি সূচক তৈরি করা শুরু করার পরে, MongoDB সামঞ্জস্য সহ ক্লাউড ফায়ারস্টোর অপারেশনটিকে একটি অনন্য নাম নির্ধারণ করে। অপারেশনের নামগুলো projects/ PROJECT_ID /databases/ DATABASE_ID /operations/ এর সাথে প্রিফিক্স করা হয়েছে, উদাহরণস্বরূপ:

projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

describe কমান্ডের জন্য একটি অপারেশন নাম উল্লেখ করার সময় আপনি উপসর্গটি বাদ দিতে পারেন।

সব দীর্ঘ-চলমান অপারেশন তালিকা

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

gcloud firestore operations list

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

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

gcloud firestore operations describe operation-name

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

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

একটি দীর্ঘ-চলমান অপারেশনের অবস্থার জন্য একটি অনুরোধ মেট্রিক্সের workEstimated এবং workCompletedworkEstimated একটি অপারেশন প্রক্রিয়া করবে আনুমানিক মোট নথির সংখ্যা দেখায়। 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 ক্ষেত্রটি প্রতিক্রিয়াতে সেট করা না থাকে, তাহলে অপারেশনটি সম্পূর্ণ হয়নি।