Cloud Firestore প্রতিটি প্রশ্নের জন্য একটি সূচক প্রয়োজন করে কোয়েরি কর্মক্ষমতা নিশ্চিত করে। সবচেয়ে মৌলিক প্রশ্নের জন্য প্রয়োজনীয় সূচকগুলি স্বয়ংক্রিয়ভাবে আপনার জন্য তৈরি হয় । আপনি যখন আপনার অ্যাপ ব্যবহার এবং পরীক্ষা করেন, তখন ক্লাউড ফায়ারস্টোর ত্রুটি বার্তা তৈরি করে যা আপনাকে আপনার অ্যাপের জন্য প্রয়োজনীয় অতিরিক্ত সূচক তৈরি করতে সহায়তা করে। এই পৃষ্ঠাটি আপনার একক-ক্ষেত্র , কম্পোজিট এবং ভেক্টর সূচকগুলি কীভাবে পরিচালনা করবেন তা বর্ণনা করে।
একটি ত্রুটি বার্তার মাধ্যমে একটি অনুপস্থিত সূচক তৈরি করুন
যদি আপনি এমন একটি যৌগিক কোয়েরি চেষ্টা করেন যার একটি রেঞ্জ ক্লজ বিদ্যমান সূচকের সাথে ম্যাপ করে না, তাহলে আপনি একটি ত্রুটি পাবেন। ত্রুটি বার্তাটিতে Firebase কনসোলে অনুপস্থিত সূচক তৈরি করার জন্য একটি সরাসরি লিঙ্ক অন্তর্ভুক্ত থাকে।
Firebase কনসোলে জেনারেট করা লিঙ্কটি অনুসরণ করুন, স্বয়ংক্রিয়ভাবে পূরণ হওয়া তথ্য পর্যালোচনা করুন এবং Create এ ক্লিক করুন।
যদি ভেক্টর ইনডেক্সের প্রয়োজন হয়, তাহলে ত্রুটি বার্তায় অনুপস্থিত ভেক্টর ইনডেক্স তৈরি করার জন্য একটি Google Cloud CLI কমান্ড অন্তর্ভুক্ত থাকবে। অনুপস্থিত ইনডেক্স তৈরি করতে কমান্ডটি চালান।
ভূমিকা এবং অনুমতি
Cloud Firestore একটি সূচক তৈরি করার আগে, নিশ্চিত করুন যে আপনাকে নিম্নলিখিত ভূমিকাগুলির মধ্যে একটি বরাদ্দ করা হয়েছে:
-
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 কনসোল থেকে ম্যানুয়ালি একটি নতুন সূচক তৈরি করতে:

- Firebase কনসোলের Cloud Firestore বিভাগে যান।
- ইনডেক্স ট্যাবে যান এবং ইনডেক্স যোগ করুন এ ক্লিক করুন।
- সংগ্রহের নাম লিখুন এবং আপনি যে ক্ষেত্রগুলি অনুসারে সূচীটি সাজাতে চান তা সেট করুন।
- তৈরি করুন ক্লিক করুন।
সূচক ক্ষেত্রগুলিকে অবশ্যই ক্ষেত্রের পথের সীমাবদ্ধতা মেনে চলতে হবে।
কোয়েরির আকারের উপর নির্ভর করে সূচী তৈরি হতে কয়েক মিনিট সময় লাগতে পারে। তৈরি করার পরে, আপনি কম্পোজিট সূচী বিভাগে আপনার সূচী এবং তাদের স্থিতি দেখতে পাবেন। যদি তারা এখনও তৈরি হতে থাকে, তাহলে Firebase কনসোলে একটি বিল্ডিং স্ট্যাটাস বার থাকে।
সূচীগুলি সরান
একটি সূচক মুছে ফেলার জন্য:
- Firebase কনসোলের Cloud Firestore বিভাগে যান।
- ইনডেক্সেস ট্যাবে ক্লিক করুন।
- আপনি যে সূচীটি মুছতে চান তার উপর কার্সার রাখুন এবং প্রসঙ্গ মেনু থেকে মুছুন নির্বাচন করুন।
- সতর্কতা থেকে মুছে ফেলুন ক্লিক করে নিশ্চিত করুন যে আপনি এটি মুছে ফেলতে চান।
ফায়ারবেস সিএলআই ব্যবহার করুন
আপনি Firebase CLI দিয়েও indexes স্থাপন করতে পারেন। শুরু করতে, আপনার প্রোজেক্ট ডিরেক্টরিতে firebase init firestore চালান। সেটআপের সময়, Firebase CLI সঠিক ফর্ম্যাটে ডিফল্ট indexes সহ একটি JSON ফাইল তৈরি করে। আরও indexes যোগ করতে ফাইলটি সম্পাদনা করুন এবং firebase deploy কমান্ড দিয়ে এটি স্থাপন করুন।
শুধুমাত্র Cloud Firestore সূচক এবং নিয়ম স্থাপন করতে, --only firestore পতাকা যোগ করুন।
যদি আপনি Firebase কনসোল ব্যবহার করে সূচীগুলিতে সম্পাদনা করেন, তাহলে নিশ্চিত করুন যে আপনি আপনার স্থানীয় সূচী ফাইলটিও আপডেট করেছেন। JSON সূচী সংজ্ঞা রেফারেন্স দেখুন।
টেরাফর্ম ব্যবহার করুন
ডাটাবেসে ইনডেক্স তৈরি করা
Cloud Firestore ডাটাবেসে সিঙ্গেল-ফিল্ড এবং কম্পোজিট ইনডেক্স উভয়ই অন্তর্ভুক্ত থাকতে পারে। আপনার ডাটাবেসের জন্য একটি ইনডেক্স তৈরি করতে আপনি টেরাফর্ম কনফিগারেশন ফাইল সম্পাদনা করতে পারেন। সিঙ্গেল-ফিল্ড এবং কম্পোজিট ইনডেক্সে আলাদা আলাদা টেরাফর্ম রিসোর্স টাইপ ( google_firestore_index এবং google_firestore_field ) ব্যবহার করা হয়।
একক-ক্ষেত্র সূচক
নিচের উদাহরণে টেরাফর্ম কনফিগারেশন ফাইলটি chatrooms সংগ্রহের name ক্ষেত্রে একটি একক-ক্ষেত্র সূচক তৈরি করে:
অনুসরণ
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 ক্ষেত্রটির সংমিশ্রণের জন্য একটি যৌগিক সূচক তৈরি করে:
অনুসরণ
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 আপনার ডাটাবেস আইডি দিয়ে প্রতিস্থাপন করুন।
ভেক্টর সূচক
নিচের উদাহরণে টেরাফর্ম কনফিগারেশন ফাইলটি chatrooms সংগ্রহের embedding ফিল্ডে একটি ভেক্টর সূচক তৈরি করে:
অনুসরণ
resource "google_firestore_index" "vector-index" {
project = "project-id"
database = "database-id"
collection = "chatrooms"
fields {
field_path = "__name__"
order = "ASCENDING"
}
fields {
field_path = "embedding"
vector_config {
dimension = 128
flat {}
}
}
}
- আপনার প্রোজেক্ট আইডি দিয়ে project-id প্রতিস্থাপন করুন। প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে।
- database-id আপনার ডাটাবেস আইডি দিয়ে প্রতিস্থাপন করুন।
সূচক তৈরির সময়
একটি সূচক তৈরি করতে, Cloud Firestore সূচকটি সেট আপ করতে হবে এবং তারপরে বিদ্যমান ডেটা দিয়ে সূচকটি ব্যাকফিল করতে হবে। সূচক তৈরির সময় হল সেটআপ সময় এবং ব্যাকফিল সময়ের যোগফল:
একটি সূচক সেট আপ করতে কয়েক মিনিট সময় লাগে। একটি সূচকের জন্য সর্বনিম্ন নির্মাণ সময় কয়েক মিনিট, এমনকি একটি খালি ডাটাবেসের জন্যও।
ব্যাকফিলের সময় নির্ভর করে নতুন সূচকে বিদ্যমান ডেটা কতটা অন্তর্ভুক্ত তার উপর। সূচকের সংজ্ঞার সাথে যত বেশি ক্ষেত্রের মান মেলে, সূচকটি ব্যাকফিল করতে তত বেশি সময় লাগে।
ইনডেক্স বিল্ডগুলি দীর্ঘমেয়াদী কার্যক্রম ।
একটি ইনডেক্স বিল্ড শুরু করার পর, Cloud Firestore অপারেশনটিকে একটি অনন্য নাম দেয়। অপারেশনের নামগুলি projects/[PROJECT_ID]/databases/(default)/operations/ এর সাথে পূর্বে যুক্ত করা হয়, উদাহরণস্বরূপ:
projects/project-id/databases/(default)/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 ফিল্ড সেট না করা থাকে, তাহলে এর মান false । চলমান অপারেশনের জন্য done মানের অস্তিত্বের উপর নির্ভর করবেন না।
সূচক তৈরির ত্রুটি
কম্পোজিট ইনডেক্স এবং সিঙ্গেল-ফিল্ড ইনডেক্স এক্সেম্পশন পরিচালনা করার সময় আপনি ইনডেক্স বিল্ডিং ত্রুটির সম্মুখীন হতে পারেন। Cloud Firestore যদি ইনডেক্সিং করা ডেটাতে কোনও সমস্যার সম্মুখীন হয় তবে একটি ইনডেক্সিং অপারেশন ব্যর্থ হতে পারে। সাধারণত, এর অর্থ হল আপনি একটি ইনডেক্স সীমা অতিক্রম করেছেন। উদাহরণস্বরূপ, অপারেশনটি প্রতি ডকুমেন্টে সর্বোচ্চ সংখ্যক ইনডেক্স এন্ট্রিতে পৌঁছে থাকতে পারে।
যদি ইনডেক্স তৈরি ব্যর্থ হয়, তাহলে আপনি কনসোলে ত্রুটি বার্তা দেখতে পাবেন। আপনি কোনও ইনডেক্স সীমা অতিক্রম করছেন না তা যাচাই করার পরে, আপনার ইনডেক্স অপারেশনটি পুনরায় চেষ্টা করুন।