Cloud Firestore প্রতিটি প্রশ্নের জন্য একটি সূচী প্রয়োজন করে ক্যোয়ারী কর্মক্ষমতা নিশ্চিত করে। সর্বাধিক মৌলিক প্রশ্নের জন্য প্রয়োজনীয় সূচীগুলি আপনার জন্য স্বয়ংক্রিয়ভাবে তৈরি করা হয়। আপনি যখন আপনার অ্যাপ ব্যবহার করেন এবং পরীক্ষা করেন, ক্লাউড ফায়ারস্টোর ত্রুটির বার্তা তৈরি করে যা আপনাকে আপনার অ্যাপের প্রয়োজনীয় অতিরিক্ত সূচী তৈরি করতে সহায়তা করে। এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে আপনার একক-ক্ষেত্র এবং যৌগিক সূচকগুলি পরিচালনা করবেন।
একটি ত্রুটি বার্তার মাধ্যমে একটি অনুপস্থিত সূচক তৈরি করুন
আপনি যদি একটি পরিসীমা ধারা সহ একটি যৌগিক প্রশ্নের চেষ্টা করেন যা একটি বিদ্যমান সূচকে ম্যাপ করে না, আপনি একটি ত্রুটি পাবেন৷ ত্রুটি বার্তাটিতে Firebase কনসোলে অনুপস্থিত সূচক তৈরি করার জন্য একটি সরাসরি লিঙ্ক রয়েছে।
Firebase কনসোলে তৈরি করা লিঙ্কটি অনুসরণ করুন, স্বয়ংক্রিয়ভাবে জনবহুল তথ্য পর্যালোচনা করুন এবং তৈরি করুন ক্লিক করুন।
ভূমিকা এবং অনুমতি
আপনি 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 কনসোল থেকে ম্যানুয়ালি একটি নতুন সূচক তৈরি করতে:
- ফায়ারবেস কনসোলের Cloud Firestore বিভাগে যান।
- Indexes ট্যাবে যান এবং Add Index এ ক্লিক করুন।
- সংগ্রহের নাম লিখুন এবং আপনি যে ক্ষেত্রগুলি দ্বারা সূচী অর্ডার করতে চান তা সেট করুন।
- তৈরি করুন ক্লিক করুন।
সূচী ক্ষেত্রগুলি অবশ্যই ক্ষেত্রের পথের সীমাবদ্ধতার সাথে সামঞ্জস্যপূর্ণ হবে৷
কোয়েরির আকারের উপর নির্ভর করে সূচকগুলি তৈরি হতে কয়েক মিনিট সময় নিতে পারে। আপনি সেগুলি তৈরি করার পরে, আপনি কম্পোজিট ইনডেক্স বিভাগে আপনার সূচী এবং তাদের স্থিতি দেখতে পাবেন। যদি তারা এখনও নির্মাণ করে, Firebase কনসোলে একটি বিল্ডিং স্ট্যাটাস বার অন্তর্ভুক্ত থাকে।
সূচী সরান
একটি সূচক মুছে ফেলতে:
- ফায়ারবেস কনসোলের Cloud Firestore বিভাগে যান।
- ইনডেক্স ট্যাবে ক্লিক করুন।
- আপনি যে সূচীটি মুছে ফেলতে চান তার উপর হোভার করুন এবং প্রসঙ্গ মেনু থেকে মুছুন নির্বাচন করুন।
- সতর্কতা থেকে মুছুন ক্লিক করে আপনি এটি মুছে ফেলতে চান তা নিশ্চিত করুন।
Firebase CLI ব্যবহার করুন
এছাড়াও আপনি Firebase CLI এর সাথে সূচী স্থাপন করতে পারেন। শুরু করতে, আপনার প্রকল্প ডিরেক্টরিতে firebase init firestore
চালান। সেটআপের সময়, Firebase CLI সঠিক বিন্যাসে ডিফল্ট সূচী সহ একটি JSON ফাইল তৈরি করে। আরও সূচী যোগ করতে ফাইলটি সম্পাদনা করুন এবং এটিকে firebase deploy
কমান্ড দিয়ে স্থাপন করুন।
শুধুমাত্র Cloud Firestore সূচী এবং নিয়ম স্থাপন করতে, --only firestore
পতাকা যোগ করুন।
আপনি যদি Firebase কনসোল ব্যবহার করে সূচীতে সম্পাদনা করেন, তাহলে নিশ্চিত করুন যে আপনি আপনার স্থানীয় সূচী ফাইলটিও আপডেট করেছেন। JSON সূচক সংজ্ঞা রেফারেন্স পড়ুন।
Terraform ব্যবহার করুন
ডাটাবেসে সূচী তৈরি করা
Cloud Firestore ডেটাবেসে একক-ক্ষেত্র এবং যৌগিক সূচক উভয়ই অন্তর্ভুক্ত থাকতে পারে। আপনার ডাটাবেসের জন্য একটি সূচক তৈরি করতে আপনি Terraform কনফিগারেশন ফাইলটি সম্পাদনা করতে পারেন। একক-ক্ষেত্র এবং যৌগিক সূচকগুলি স্বতন্ত্র টেরাফর্ম রিসোর্স প্রকার ব্যবহার করে।
একক-ক্ষেত্র সূচক
নিম্নলিখিত উদাহরণ টেরাফর্ম কনফিগারেশন ফাইল chatrooms
সংগ্রহের name
ক্ষেত্রে একটি একক-ক্ষেত্র সূচক তৈরি করে:
firestore.tf
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
ক্ষেত্রের সংমিশ্রণের জন্য একটি যৌগিক সূচক তৈরি করে:
firestore.tf
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 প্রতিস্থাপন করুন।
সূচক তৈরির সময়
একটি সূচক তৈরি করতে, Cloud Firestore অবশ্যই সূচী সেট আপ করতে হবে এবং তারপরে বিদ্যমান ডেটা সহ সূচকটি ব্যাকফিল করতে হবে। ইনডেক্স বিল্ড টাইম হল সেটআপ টাইম এবং ব্যাকফিল টাইমের সমষ্টি:
একটি সূচক সেট আপ করতে কয়েক মিনিট সময় লাগে৷ একটি সূচকের জন্য সর্বনিম্ন বিল্ড সময় কয়েক মিনিট, এমনকি একটি খালি ডাটাবেসের জন্যও।
ব্যাকফিল সময় নির্ভর করে নতুন সূচকে বিদ্যমান ডেটা কতটা তার উপর। সূচকের সংজ্ঞার সাথে যত বেশি ফিল্ড মান মেলে, সূচকটি ব্যাকফিল করতে তত বেশি সময় লাগে।
সূচক বিল্ড দীর্ঘ-চলমান ক্রিয়াকলাপ ।
আপনি একটি সূচক তৈরি শুরু করার পরে, Cloud Firestore অপারেশনটিকে একটি অনন্য নাম দেয়৷ অপারেশনের নামগুলো projects/[PROJECT_ID]/databases/(default)/operations/
এর সাথে প্রিফিক্স করা হয়েছে, উদাহরণস্বরূপ:
projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
যাইহোক, describe
কমান্ডের জন্য অপারেশনের নাম উল্লেখ করার সময় আপনি উপসর্গটি ছেড়ে দিতে পারেন।
সমস্ত দীর্ঘ-চলমান ক্রিয়াকলাপ তালিকাভুক্ত করা
দীর্ঘস্থায়ী ক্রিয়াকলাপ তালিকাভুক্ত করতে, gcloud firestore অপারেশন তালিকা কমান্ড ব্যবহার করুন। এই কমান্ড চলমান এবং সম্প্রতি সম্পন্ন ক্রিয়াকলাপ তালিকাভুক্ত করে। কাজ শেষ হওয়ার পর কয়েক দিনের জন্য তালিকাভুক্ত করা হয়:
gcloud firestore operations list
অপারেশন স্ট্যাটাস চেক করুন
সমস্ত দীর্ঘ-চলমান ক্রিয়াকলাপ তালিকাভুক্ত করার পরিবর্তে, আপনি একটি একক অপারেশনের বিবরণ তালিকাভুক্ত করতে পারেন:
gcloud firestore operations describe operation-name
সমাপ্তির সময় অনুমান করা হচ্ছে
আপনার অপারেশন চলাকালীন, অপারেশনের সামগ্রিক অবস্থার জন্য state
ক্ষেত্রের মান দেখুন।
একটি দীর্ঘ-চলমান অপারেশনের অবস্থার জন্য একটি অনুরোধ মেট্রিক্সের workEstimated
এবং workCompleted
। নথির সংখ্যার জন্য এই মেট্রিকগুলি ফেরত দেওয়া হয়। workEstimated
একটি অপারেশন প্রক্রিয়া করবে আনুমানিক মোট নথির সংখ্যা দেখায়। 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
ক্ষেত্রটি প্রতিক্রিয়াতে সেট করা না থাকে, তাহলে এর মান false
। চলমান ক্রিয়াকলাপের জন্য done
মানের অস্তিত্বের উপর নির্ভর করবেন না।
সূচক বিল্ডিং ত্রুটি
যৌগিক সূচক এবং একক-ক্ষেত্র সূচক ছাড়গুলি পরিচালনা করার সময় আপনি সূচক বিল্ডিং ত্রুটির সম্মুখীন হতে পারেন। Cloud Firestore ইনডেক্সিং করা ডেটাতে কোনো সমস্যার সম্মুখীন হলে একটি ইন্ডেক্সিং অপারেশন ব্যর্থ হতে পারে। সাধারণত, এর মানে আপনি একটি সূচক সীমাতে আঘাত করেছেন৷ উদাহরণস্বরূপ, অপারেশনটি প্রতি নথিতে সর্বাধিক সংখ্যক সূচক এন্ট্রিতে পৌঁছেছে।
যদি সূচক তৈরি ব্যর্থ হয়, আপনি কনসোলে ত্রুটি বার্তা দেখতে পাবেন। আপনি যাচাই করার পরে যে আপনি কোনো সূচকের সীমা অতিক্রম করছেন না, আপনার সূচক অপারেশন পুনরায় চেষ্টা করুন।