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

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

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

শুরু করার আগে

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

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

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

মঙ্গোডিবি এপিআই

একটি সূচক তৈরি করতে 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 কনসোলে, ফায়ারস্টোর ডাটাবেস পৃষ্ঠায় যান।

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

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

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

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 দেখুন।

একটি স্পার্স ইনডেক্স তৈরি করতে, --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 মধ্যে একটি

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

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

মঙ্গোডিবি এপিআই

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

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

db.restaurants.dropIndex("cuisine_index")

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

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

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

  2. ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
  3. ইনডেক্সেস ট্যাবে ক্লিক করুন।
  4. সূচীর তালিকায়, আপনি যে সূচীটি মুছতে চান বোতাম থেকে Delete নির্বাচন করুন।
  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 এবং workCompleted মেট্রিক্সও ফেরত পাঠায়। workEstimated একটি অপারেশন প্রক্রিয়া করবে এমন আনুমানিক মোট ডকুমেন্টের সংখ্যা দেখায়। workCompleted এখন পর্যন্ত প্রক্রিয়াকৃত ডকুমেন্টের সংখ্যা দেখায়। অপারেশন সম্পন্ন হওয়ার পরে, workCompleted আসলে প্রক্রিয়াকৃত ডকুমেন্টের মোট সংখ্যা প্রতিফলিত করে, যা workEstimated এর মানের চেয়ে ভিন্ন হতে পারে।

একটি অপারেশনের অগ্রগতি অনুমান করতে, workCompleted workEstimated দ্বারা ভাগ করুন।

একটি সূচক তৈরির অগ্রগতির একটি উদাহরণ নিচে দেওয়া হল:

{
  "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 ফিল্ড সেট না করা থাকে, তাহলে অপারেশনটি সম্পন্ন হয়নি।