এই পৃষ্ঠায় আপনার ইনডেক্সগুলো কীভাবে পরিচালনা করবেন তা বর্ণনা করা হয়েছে। ইনডেক্স সম্পর্কে আরও জানতে, ইনডেক্স ওভারভিউ দেখুন।
শুরু করার আগে
Cloud Firestore ইনডেক্স তৈরি করার আগে, নিশ্চিত করুন যে আপনাকে নিম্নলিখিত ভূমিকাগুলির মধ্যে যেকোনো একটি বরাদ্দ করা হয়েছে:
-
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 কনসোল
Firebase কনসোলে, Firestore ডেটাবেস পৃষ্ঠায় যান।
- ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
- ইনডেক্স ট্যাবে, ক্রিয়েট ইনডেক্স- এ ক্লিক করুন।
- একটি সংগ্রহ আইডি প্রবেশ করান।
- এক বা একাধিক ফিল্ড পাথ যোগ করুন এবং প্রতিটির জন্য একটি ইনডেক্স অপশন নির্বাচন করুন।
- ফিল্ড উপস্থিতির একটি বিকল্প নির্বাচন করুন, হয় নন-স্পার্স অথবা স্পার্স।
- ঐচ্ছিকভাবে, আপনি মাল্টিকি ইনডেক্স অপশনটি সেট করতে পারেন।
- তৈরি করুন- এ ক্লিক করুন।
- আপনার নতুন ইনডেক্সটি ইনডেক্সের তালিকায় প্রদর্শিত হবে এবং Cloud Firestore আপনার ইনডেক্স তৈরি করা শুরু করবে। যখন আপনার ইনডেক্স তৈরি হয়ে যাবে, আপনি ইনডেক্সটির পাশে একটি সবুজ টিক চিহ্ন দেখতে পাবেন। যদি ইনডেক্স তৈরি না হয়, তবে সম্ভাব্য কারণগুলোর জন্য ‘ইনডেক্স তৈরির ত্রুটি’ (Index building errors) দেখুন।
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মধ্যে একটি
একটি সূচক মুছে ফেলুন
একটি ইনডেক্স মুছে ফেলার জন্য, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:
MongoDB API
একটি ইনডেক্স মুছে ফেলার জন্য dropIndex() মেথডটি ব্যবহার করুন। উদাহরণস্বরূপ:
ইনডেক্সের নাম ব্যবহার করে একটি ইনডেক্স মুছে ফেলুন
db.restaurants.dropIndex("cuisine_index")
ইনডেক্স ডেফিনিশন ব্যবহার করে একটি ইনডেক্স ডিলিট করুন
db.restaurants.dropIndex({"cuisine" : 1})
Firebase কনসোল
Firebase কনসোলে, Firestore ডেটাবেস পৃষ্ঠায় যান।
- ডাটাবেসের তালিকা থেকে একটি ডাটাবেস নির্বাচন করুন।
- ইনডেক্স ট্যাবে ক্লিক করুন।
- ইনডেক্সের তালিকা থেকে, আপনি যে ইনডেক্সটি মুছতে চান সেটির জন্য 'More' বাটন থেকে 'Delete' নির্বাচন করুন।
- সূচী মুছুন-এ ক্লিক করুন।
gcloud CLI
ইনডেক্সের নাম খুঁজে বের করতে,
gcloud firestore indexes composite listকমান্ডটি ব্যবহার করুন।gcloud firestore indexes composite list \ --database='DATABASE_ID'
DATABASE_ID এর জায়গায় ডাটাবেস আইডিটি বসান।
ইনডেক্সটি ডিলিট করতে,
gcloud firestore indexes composite deleteকমান্ডটি ব্যবহার করুন।gcloud firestore indexes composite delete INDEX_NAME \ --database='DATABASE_ID'
নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
- INDEX_NAME : একটি ইনডেক্সের নাম
- DATABASE_ID : একটি ডাটাবেস আইডি
সূচক তৈরির সময়
একটি ইনডেক্স তৈরি করার জন্য, Cloud Firestore প্রথমে ইনডেক্সটি তৈরি করতে হয় এবং তারপর বিদ্যমান ডেটা দিয়ে ইনডেক্সের এন্ট্রিগুলো পূরণ করতে হয়। একটি ইনডেক্স তৈরি করতে প্রয়োজনীয় সময় নিম্নলিখিত বিষয়গুলোর উপর নির্ভর করে:
একটি ইনডেক্স তৈরি করতে ন্যূনতম কয়েক মিনিট সময় লাগে, এমনকি একটি খালি ডাটাবেসের ক্ষেত্রেও।
ইনডেক্স এন্ট্রিগুলো ব্যাকফিল করতে প্রয়োজনীয় সময় নির্ভর করে নতুন ইনডেক্সে কী পরিমাণ বিদ্যমান ডেটা অন্তর্ভুক্ত হবে তার উপর। ইনডেক্স সংজ্ঞার সাথে যত বেশি ফিল্ড ভ্যালু মেলে, ইনডেক্স এন্ট্রিগুলো ব্যাকফিল করতে তত বেশি সময় লাগে।
দীর্ঘমেয়াদী কার্যক্রম পরিচালনা করুন
ইনডেক্স তৈরি করা একটি দীর্ঘ প্রক্রিয়া । নিম্নলিখিত বিভাগগুলিতে ইনডেক্সের জন্য এই দীর্ঘ প্রক্রিয়াগুলি কীভাবে পরিচালনা করতে হয় তা বর্ণনা করা হয়েছে।
আপনি একটি ইনডেক্স তৈরি করা শুরু করার পর, Cloud Firestore অপারেশনটিকে একটি অনন্য নাম প্রদান করে। অপারেশনের নামগুলোর শুরুতে 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 ফিল্ডটি সেট করা না থাকে, তাহলে অপারেশনটি সম্পন্ন হয়নি।