Firestore Enterprise এডিশন ইনডেক্স সম্পর্কে আরও জানতে, ইনডেক্স ওভারভিউ দেখুন।
শুরু করার আগে
Cloud Firestore-এ ইন্ডেক্স তৈরি করার আগে, আপনাকে নিম্নলিখিত ভূমিকাগুলির মধ্যে যেকোনও একটিতে অ্যাসাইন করা হয়েছে কিনা তা নিশ্চিত করুন:
roles/datastore.ownerroles/datastore.indexAdminroles/editorroles/owner
কোনও ভূমিকা মঞ্জুর করতে, একটি ভূমিকা মঞ্জুর করুন দেখুন। Cloud Firestore ভূমিকা ও সংশ্লিষ্ট অনুমতি সম্পর্কে আরও জানতে, আগে থেকে নির্ধারিত ভূমিকা দেখুন।
আপনি কাস্টম ভূমিকা নির্ধারণ করে থাকলে, ইন্ডেক্স তৈরি করার জন্য নিম্নলিখিত সব অনুমতি অ্যাসাইন করুন:
datastore.indexes.createdatastore.indexes.deletedatastore.indexes.getdatastore.indexes.listdatastore.indexes.update
একটি ইন্ডেক্স তৈরি করুন
ইনডেক্স তৈরি করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
Firebase কনসোল
-
Firebase কনসোলে, Firestore Database পৃষ্ঠায় যান।
- ডেটাবেসের তালিকা থেকে একটি ডেটাবেস বেছে নিন।
- ইনডেক্স ট্যাবে, ইনডেক্স তৈরি করুন বিকল্পে ক্লিক করুন।
- কালেকশন আইডি লিখুন।
- এক বা একাধিক ফিল্ড পাথ যোগ করুন এবং প্রতিটির জন্য একটি ইন্ডেক্স বিকল্প বেছে নিন।
- ফিল্ডের উপস্থিতি সংক্রান্ত বিকল্প বেছে নিন, হয় নন-স্পার্স অথবা স্পার্স।
- তৈরি করুন বিকল্পে ক্লিক করুন।
- আপনার নতুন ইন্ডেক্স, ইন্ডেক্সের তালিকায় দেখানো হয় এবং Cloud Firestore আপনার ইন্ডেক্স তৈরি করা শুরু করে। আপনার ইন্ডেক্স তৈরি হয়ে গেলে, ইন্ডেক্সের পাশে একটি সবুজ টিক চিহ্ন দেখতে পাবেন। ইনডেক্স তৈরি না হলে, সম্ভাব্য কারণের জন্য ইনডেক্স তৈরি করার সময় হওয়া সমস্যা দেখুন।
gcloud CLI
ইনডেক্স তৈরি করতে, gcloud firestore indexes composite create
কমান্ড ব্যবহার করুন।
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION \ --field-config=FIELD_CONFIGURATION \ --query-scope=collection-group \ --density=dense
নিম্নলিখিতগুলি পরিবর্তন করুন:
- 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 সেট করুন।
অনন্য ইনডেক্স তৈরি করতে, --unique ফ্ল্যাগ যোগ করুন।
Terraform
google_firestore_index
রিসোর্স ব্যবহার করুন।
resource "google_firestore_index" "index" { database = "DATABASE_ID" collection = "COLLECTION" 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-এর মধ্যে একটি
টেক্সট ইন্ডেক্স তৈরি করুন
টেক্সট ইন্ডেক্স তৈরি করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
Google Cloud কনসোল
-
Google Cloud কনসোল থেকে ডেটাবেস পৃষ্ঠায় যান।
- ডেটাবেসের তালিকা থেকে একটি ডেটাবেস বেছে নিন।
- নেভিগেশন মেনুতে, ইনডেক্স বিকল্পে ক্লিক করুন।
- ঐচ্ছিক: ইন্ডেক্সের জন্য একটি নাম লিখুন।
- সার্চের ধরন বিকল্পে গিয়ে টেক্সট বেছে নিন।
- কালেকশন আইডি লিখুন।
- ইন্ডেক্স করার জন্য এক বা একাধিক ফিল্ড কনফিগার করুন।
- ইন্ডেক্সের জন্য কোয়েরি স্কোপ সেট করুন।
- ডিফল্ট ভাষা বেছে নিন।
- ঐচ্ছিক: কোনও ফিল্ডের নামের জন্য ভাষা ওভাররাইড করার পাথ সেট করুন যাতে ডকুমেন্টের ভাষা সংক্রান্ত সেটিংস থাকে।
- তৈরি করুন বিকল্পে ক্লিক করুন।
- আপনার নতুন ইন্ডেক্স, ইন্ডেক্সের তালিকায় দেখানো হয় এবং Cloud Firestore আপনার ইন্ডেক্স তৈরি করা শুরু করে। আপনার ইনডেক্স তৈরি হয়ে গেলে, ইনডেক্সের পাশে একটি সবুজ টিক চিহ্ন দেখানো হয়।
gcloud CLI
টেক্সট ইন্ডেক্স তৈরি করতে, gcloud firestore indexes composite create
কমান্ড ব্যবহার করুন:
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION_GROUP \ --field-config=field-path=FIELD_NAME,search-config='{"text-spec": {"index-specs": [{"index-type": "tokenized", "match-type": "match-globally"}]}}' \ --search-index-options=text-language=en \ --async
নিম্নলিখিতগুলি পরিবর্তন করুন:
- DATABASE_ID: ডেটাবেসের আইডি।
- COLLECTION_GROUP: ইন্ডেক্স করার জন্য কালেকশনের আইডি।
- FIELD_NAME: ইন্ডেক্স করার জন্য ফিল্ডের নাম।
--async ফ্ল্যাগ ব্যাকগ্রাউন্ডে ইন্ডেক্স তৈরি করার অপারেশন চালায়।
একটি ভূস্থানিক ইন্ডেক্স তৈরি করুন
জিওস্পেশিয়াল ইন্ডেক্স তৈরি করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
Google Cloud কনসোল
-
Google Cloud কনসোল থেকে ডেটাবেস পৃষ্ঠায় যান।
- ডেটাবেসের তালিকা থেকে একটি ডেটাবেস বেছে নিন।
- নেভিগেশন মেনুতে, ইনডেক্স বিকল্পে ক্লিক করুন।
- ঐচ্ছিক: ইন্ডেক্সের জন্য একটি নাম লিখুন।
- সার্চের ধরন বিকল্পে গিয়ে জিও (2dsphere) বেছে নিন।
- কালেকশন আইডি লিখুন।
- ইন্ডেক্স করার জন্য এক বা একাধিক ফিল্ড কনফিগার করুন।
- ইন্ডেক্সের জন্য কোয়েরি স্কোপ সেট করুন।
- তৈরি করুন বিকল্পে ক্লিক করুন।
আপনার নতুন ইন্ডেক্স, ইন্ডেক্সের তালিকায় দেখানো হয় এবং Cloud Firestore আপনার ইন্ডেক্স তৈরি করা শুরু করে। আপনার ইন্ডেক্স তৈরি হয়ে গেলে, ইন্ডেক্সের পাশে একটি সবুজ টিক চিহ্ন দেখানো হয়।
gcloud CLI
জিওস্পেশিয়াল ইন্ডেক্স তৈরি করতে, gcloud firestore indexes composite create
কমান্ড ব্যবহার করুন:
gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION_GROUP \
--field-config=field-path=FIELD_NAME,search-config='{"geo-spec": {}}' \
--asyncনিম্নলিখিতগুলি পরিবর্তন করুন:
- DATABASE_ID: ডেটাবেসের আইডি।
- COLLECTION_GROUP: ইন্ডেক্স করার জন্য কালেকশনের আইডি।
- FIELD_NAME: ইন্ডেক্স করার জন্য ফিল্ডের নাম।
--async ফ্ল্যাগ ব্যাকগ্রাউন্ডে ইন্ডেক্স তৈরি করার অপারেশন চালায়।
ইন্ডেক্স মুছে দেওয়া
কোনও ইন্ডেক্স মুছে ফেলতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
Firebase কনসোল
-
Firebase কনসোলে, Firestore Database পৃষ্ঠায় যান।
- ডেটাবেসের তালিকা থেকে একটি ডেটাবেস বেছে নিন।
- ইনডেক্স ট্যাবে ক্লিক করুন।
- ইনডেক্সের তালিকা থেকে, আপনি যে ইনডেক্স মুছতে চান সেটির জন্য আরও বোতাম থেকে মুছুন বিকল্প বেছে নিন।
- ইনডেক্স মুছুন বিকল্পে ক্লিক করুন।
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: একটি ডেটাবেসের আইডি
Index build time
ইনডেক্স তৈরি করতে, 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 ফিল্ড সেট করা না থাকলে,
অপারেশন সম্পূর্ণ হয়নি।