এই পৃষ্ঠায় Cloud Firestore ডেটাবেস তৈরি, আপডেট এবং ডিলিট করার পদ্ধতি বর্ণনা করা হয়েছে। আপনি প্রতিটি প্রজেক্টের জন্য একাধিক Cloud Firestore ডেটাবেস তৈরি করতে পারেন। প্রোডাকশন ও টেস্টিং এনভায়রনমেন্ট সেট আপ করতে, গ্রাহকের ডেটা আলাদা রাখতে এবং ডেটার আঞ্চলিকীকরণের জন্য আপনি একাধিক ডেটাবেস ব্যবহার করতে পারেন।
ফ্রি টিয়ার ব্যবহার
Cloud Firestore একটি ফ্রি টিয়ার অফার করে, যার মাধ্যমে আপনি কোনো খরচ ছাড়াই এটি ব্যবহার শুরু করতে পারেন।
ফ্রি টিয়ার প্রতিটি প্রজেক্টের জন্য শুধুমাত্র একটি Cloud Firestore ডেটাবেসের ক্ষেত্রে প্রযোজ্য। যে প্রজেক্টে কোনো ফ্রি টিয়ার ডেটাবেস নেই, সেখানে প্রথম যে ডেটাবেসটি তৈরি করা হবে, সেটিই ফ্রি টিয়ার সুবিধা পাবে। যদি ফ্রি টিয়ার সুবিধাযুক্ত ডেটাবেসটি মুছে ফেলা হয়, তবে পরবর্তীতে তৈরি করা ডেটাবেসটি ফ্রি টিয়ার সুবিধা পাবে।
শুরু করার আগে
ডাটাবেস তৈরি করার আগে আপনাকে নিম্নলিখিতগুলি অবশ্যই সম্পন্ন করতে হবে:
যদি আগে থেকে তৈরি করা না থাকে, তাহলে একটি Firebase প্রজেক্ট তৈরি করুন: Firebase কনসোলে , 'Add project'-এ ক্লিক করুন, তারপর একটি Firebase প্রজেক্ট তৈরি করতে বা বিদ্যমান Google Cloud প্রজেক্টে Firebase পরিষেবা যোগ করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
- পরবর্তী বিভাগে বর্ণিত অনুযায়ী উপযুক্ত পরিচয় ও প্রবেশাধিকার ব্যবস্থাপনা ভূমিকাগুলো নির্ধারণ করুন।
প্রয়োজনীয় ভূমিকা
ডাটাবেস তৈরি ও পরিচালনা করার জন্য আপনার Owner অথবা Datastore Owner Identity and Access Management রোলটি প্রয়োজন। এই রোলগুলো প্রয়োজনীয় অনুমতি প্রদান করে।
প্রয়োজনীয় অনুমতি
ডাটাবেস পরিচালনা করার জন্য আপনার নিম্নলিখিত অনুমতিগুলো প্রয়োজন:
- একটি ডাটাবেস তৈরি করুন:
datastore.databases.create - ডাটাবেস কনফিগারেশন পড়ুন:
datastore.databases.getMetadata - একটি ডাটাবেস কনফিগার করুন:
datastore.databases.update - ডাটাবেস মুছুন:
datastore.databases.delete - একটি ডাটাবেস ক্লোন করুন:
datastore.databases.clone
একটি ডাটাবেস তৈরি করুন
Cloud Firestore ডাটাবেস তৈরি করতে, নিম্নলিখিত পদ্ধতিগুলোর মধ্যে একটি ব্যবহার করুন:
Firebase কনসোল
Firebase কনসোলে, Firestore ডেটাবেস পৃষ্ঠায় যান।
- ডাটাবেস যোগ করুন -এ ক্লিক করুন।
- এন্টারপ্রাইজ সংস্করণ নির্বাচন করুন। পরবর্তী বোতামে ক্লিক করুন।
- নেটিভ মোডে ফায়ারস্টোর নির্বাচন করুন।
- একটি ডাটাবেস আইডি প্রবেশ করান।
- আপনার ডেটাবেসের জন্য একটি অবস্থান নির্বাচন করুন। পরবর্তী ধাপে যান।
আপনার Cloud Firestore Security Rules জন্য একটি প্রারম্ভিক মোড নির্বাচন করুন:
- টেস্ট মোড
- মোবাইল এবং ওয়েব ক্লায়েন্ট লাইব্রেরি দিয়ে কাজ শুরু করার জন্য এটি ভালো, কিন্তু এর মাধ্যমে যে কেউ আপনার ডেটা পড়তে এবং মুছে ফেলতে পারে। পরীক্ষা করার পর, ‘ আপনার ডেটা সুরক্ষিত করুন’ অংশটি অবশ্যই পর্যালোচনা করে নেবেন।
- উৎপাদন মোড
- মোবাইল এবং ওয়েব ক্লায়েন্ট থেকে সমস্ত রিড এবং রাইট অ্যাক্সেস অস্বীকার করা হয়েছে। আপনার প্রমাণীকৃত অ্যাপ্লিকেশন সার্ভারগুলি (Node.js, Python, Java) এখনও আপনার ডাটাবেস অ্যাক্সেস করতে পারবে।
- তৈরি করুন- এ ক্লিক করুন।
gcloud CLI
gcloud firestore databases create কমান্ডটি ব্যবহার করুন:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=enterprise \ --enable-firestore-data-access \ --enable-realtime-updates
নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
- DATABASE_ID : একটি বৈধ ডেটাবেস আইডি ।
- LOCATION : একটি Cloud Firestore মাল্টি-রিজিওন বা রিজিওনের নাম।
ডাটাবেস আইডি
বৈধ ডাটাবেস আইডিগুলোর মধ্যে সেইসব আইডি অন্তর্ভুক্ত, যেগুলো নিম্নলিখিত শর্তগুলো পূরণ করে:
- শুধুমাত্র অক্ষর, সংখ্যা এবং হাইফেন (
-) চিহ্ন অন্তর্ভুক্ত। - অক্ষরগুলো অবশ্যই ছোট হাতের হতে হবে।
- প্রথম অক্ষরটি অবশ্যই একটি বর্ণ হতে হবে।
- শেষের অক্ষরটি অবশ্যই বর্ণ বা সংখ্যা হতে হবে।
- ন্যূনতম ৪টি অক্ষর।
- সর্বাধিক ৬৩টি অক্ষর।
- এটি অবশ্যই কোনো UUID হবে না বা এর অনুরূপ হবে না। উদাহরণস্বরূপ,
f47ac10b-58cc-0372-8567-0e02b2c3d479এর মতো কোনো আইডি ব্যবহার করবেন না।
যদি আপনি কোনো ডেটাবেস মুছে ফেলেন, তাহলে ৫ মিনিট অতিবাহিত না হওয়া পর্যন্ত আপনি তাৎক্ষণিকভাবে ডেটাবেস আইডিটি পুনরায় ব্যবহার করতে পারবেন না।
সুরক্ষা মুছুন
ডাটাবেস ভুলবশত মুছে যাওয়া রোধ করতে ডিলিট প্রোটেকশন ব্যবহার করুন। ডিলিট প্রোটেকশন নিম্নলিখিত উপায়ে কাজ করে:
- ডিলিট প্রোটেকশন চালু থাকা কোনো ডেটাবেস আপনি ডিলিট প্রোটেকশন বন্ধ না করা পর্যন্ত ডিলিট করতে পারবেন না।
- ডিলিট সুরক্ষা ডিফল্টরূপে নিষ্ক্রিয় থাকে।
- আপনি ডাটাবেস তৈরি করার সময় ডিলিট প্রোটেকশন সক্রিয় করতে পারেন অথবা ডাটাবেস কনফিগারেশন আপডেট করেও তা চালু করতে পারেন।
তালিকা ডাটাবেস
আপনার ডাটাবেসগুলোর তালিকা তৈরি করতে নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:
gcloud CLI
আপনার প্রোজেক্টের সমস্ত ডেটাবেসের তালিকা দেখতে gcloud firestore databases list কমান্ডটি ব্যবহার করুন।
gcloud firestore databases list
ডাটাবেসের বিবরণ দেখুন
একটিমাত্র ডেটাবেসের বিস্তারিত তথ্য দেখতে, নিম্নলিখিত পদ্ধতিগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:
gcloud CLI
gcloud firestore databases describe কমান্ডটি ব্যবহার করুন:
gcloud firestore databases describe --database=DATABASE_ID
DATABASE_ID এর জায়গায় ডাটাবেস আইডি বসান।
ডাটাবেস কনফিগারেশন আপডেট করুন
একটি ডাটাবেসের কনফিগারেশন সেটিংস আপডেট করতে, gcloud firestore databases update কমান্ডটি ব্যবহার করুন।
ডিলিট প্রোটেকশন পরিবর্তন, সক্রিয় বা নিষ্ক্রিয় করতে এই কমান্ডটি ব্যবহার করুন।
ডিলিট প্রোটেকশন সেটিং আপডেট করুন
একটি ডাটাবেসে ডিলিট প্রোটেকশন সক্রিয় করতে, --delete-protection ফ্ল্যাগ সহ gcloud firestore databases update কমান্ডটি ব্যবহার করুন। উদাহরণস্বরূপ:
gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection
DATABASE_ID এর জায়গায় ডাটাবেস আইডি বসান।
একটি ডাটাবেসে ডিলিট প্রোটেকশন নিষ্ক্রিয় করতে, --no-delete-protection ফ্ল্যাগ সহ gcloud firestore databases update কমান্ডটি ব্যবহার করুন। উদাহরণস্বরূপ:
gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
DATABASE_ID এর জায়গায় ডাটাবেস আইডি বসান।
একটি ডাটাবেস মুছে ফেলুন
ডাটাবেস ডিলিট করতে কনসোল বা কমান্ড-লাইন টুল ব্যবহার করুন। ডাটাবেস ডিলিট করার জন্য কোনো চার্জ প্রযোজ্য হয় না।
যদি ডাটাবেসে ডিলিট প্রোটেকশন সেটিং সক্রিয় করা থাকে, তাহলে আপনাকে প্রথমে ডিলিট প্রোটেকশন নিষ্ক্রিয় করতে হবে।
gcloud CLI
`gcloud firestore databases delete` কমান্ডটি ব্যবহার করুন।
gcloud firestore databases delete --database=DATABASE_ID
যে ডাটাবেসটি মুছে ফেলতে চান, তার আইডি দিয়ে DATABASE_ID প্রতিস্থাপন করুন।
একটি ডাটাবেস ক্লোন করুন
আপনি একটি বিদ্যমান ডেটাবেসকে একটি নির্বাচিত টাইমস্ট্যাম্পে ক্লোন করে একটি নতুন ডেটাবেস তৈরি করতে পারেন:
ক্লোন করা ডেটাবেস হলো একটি নতুন ডেটাবেস যা উৎস ডেটাবেসের একই অবস্থানে তৈরি করা হবে।
একটি ক্লোন তৈরি করতে, Cloud Firestore উৎস ডেটাবেসের পয়েন্ট-ইন-টাইম রিকভারি (PITR) ডেটা ব্যবহার করে। ক্লোন করা ডেটাবেসে সমস্ত ডেটা এবং ইনডেক্স অন্তর্ভুক্ত থাকে।
ডিফল্টরূপে, ক্লোন করা ডেটাবেসটি সোর্স ডেটাবেসের মতোই এনক্রিপ্ট করা হবে, যেখানে গুগলের ডিফল্ট এনক্রিপশন অথবা CMEK এনক্রিপশন ব্যবহার করা হবে। আপনি একটি ভিন্ন এনক্রিপশন টাইপ নির্দিষ্ট করতে পারেন অথবা CMEK এনক্রিপশনের জন্য একটি ভিন্ন কী ব্যবহার করতে পারেন।
টাইমস্ট্যাম্পটির সূক্ষ্মতা এক মিনিট এবং এটি PITR উইন্ডো দ্বারা সংজ্ঞায়িত সময়কালের মধ্যে অতীতের একটি নির্দিষ্ট সময়কে নির্দেশ করে।
- যদি আপনার ডেটাবেসের জন্য PITR সক্রিয় করা থাকে, তাহলে আপনি গত ৭ দিনের মধ্যে যেকোনো একটি মিনিট নির্বাচন করুন (অথবা তার কম সময়, যদি PITR ৭ দিনেরও কম সময় আগে সক্রিয় করা হয়ে থাকে)।
- যদি PITR চালু না থাকে, তাহলে আপনি গত এক ঘণ্টার যেকোনো মিনিট বেছে নিতে পারেন।
- আপনি আপনার ডেটাবেসের বিবরণ থেকে সবচেয়ে পুরনো টাইমস্ট্যাম্পটি যাচাই করতে পারেন।
কনসোল
গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
যে ডাটাবেসটি আপনি ক্লোন করতে চান, সেটির টেবিলের সারিতে থাকা 'আরও দেখুন ক্লিক করুন। 'ক্লোন' (Clone ) বিকল্পে ক্লিক করুন। ' একটি ক্লোন তৈরি করুন' (Create a clone) ডায়ালগ বক্সটি প্রদর্শিত হবে।
'Create a clone' ডায়ালগে, ডাটাবেস ক্লোন করার জন্য প্যারামিটার প্রদান করুন:
'Give the clone an ID' ফিল্ডে, নতুন ক্লোন করা ডেটাবেসের জন্য একটি ডেটাবেস আইডি দিন। এই ডেটাবেস আইডিটি অবশ্যই কোনো বিদ্যমান ডেটাবেসের সাথে যুক্ত থাকা যাবে না।
'ক্লোন ফ্রম' ফিল্ডে, ক্লোনিংয়ের জন্য ব্যবহার করার মতো একটি সময় নির্বাচন করুন। নির্বাচিত সময়টি মিনিট-ভিত্তিক একটি PITR টাইমস্ট্যাম্পের সাথে সঙ্গতিপূর্ণ।
ক্লোন তৈরি করুন- এ ক্লিক করুন।
জিক্লাউড
একটি ডাটাবেস ক্লোন করতে gcloud firestore databases clone কমান্ডটি ব্যবহার করুন:
gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
SOURCE_DATABASE : বিদ্যমান কোনো ডাটাবেসের নাম, যেটি আপনি ক্লোন করতে চান। নামটি
projects/ PROJECT_ID /databases/ SOURCE_DATABASE_IDফরম্যাটে ব্যবহৃত হয়।PITR_TIMESTAMP : RFC 3339 ফরম্যাটে একটি PITR টাইমস্ট্যাম্প , যা মিনিটের ব্যবধানে বিন্যস্ত। উদাহরণস্বরূপ:
2025-06-01T10:20:00.00Zঅথবা2025-06-01T10:30:00.00-07:00।DESTINATION_DATABASE_ID : একটি নতুন ক্লোন করা ডাটাবেসের জন্য ডাটাবেস আইডি । এই ডাটাবেস আইডিটি অবশ্যই কোনো বিদ্যমান ডাটাবেসের সাথে যুক্ত থাকা যাবে না।
উদাহরণ:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
ডাটাবেস ক্লোন করার সময় যদি আপনি কিছু ট্যাগ বাইন্ড করতে চান, তাহলে পূর্ববর্তী কমান্ডটির সাথে --tags ফ্ল্যাগটি ব্যবহার করুন, যা হলো বাইন্ড করার জন্য ট্যাগগুলোর KEY=VALUE জোড়ের একটি ঐচ্ছিক তালিকা।
উদাহরণ:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2
ডিফল্টরূপে, ক্লোন করা ডাটাবেসটির এনক্রিপশন কনফিগারেশন সোর্স ডাটাবেসের মতোই থাকবে। এনক্রিপশন কনফিগারেশন পরিবর্তন করতে, --encryption-type আর্গুমেন্টটি ব্যবহার করুন:
- (ডিফল্ট)
use-source-encryption: উৎস ডাটাবেসের মতোই এনক্রিপশন কনফিগারেশন ব্যবহার করুন। -
google-default-encryption: গুগলের ডিফল্ট এনক্রিপশন ব্যবহার করুন। -
customer-managed-encryption: CMEK এনক্রিপশন ব্যবহার করুন।--kms-key-nameআর্গুমেন্টে একটি কী আইডি উল্লেখ করুন।
নিম্নলিখিত উদাহরণে দেখানো হয়েছে কীভাবে ক্লোন করা ডেটাবেসের জন্য CMEK এনক্রিপশন কনফিগার করতে হয়:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
ফায়ারবেস সিএলআই
একটি ডাটাবেস ক্লোন করতে ` firebase firestore:databases:clone কমান্ডটি ব্যবহার করুন:
firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP' \
নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
SOURCE_DATABASE : বিদ্যমান কোনো ডাটাবেসের নাম, যেটি আপনি ক্লোন করতে চান। নামটি
projects/ PROJECT_ID /databases/ SOURCE_DATABASE_IDফরম্যাটে ব্যবহৃত হয়।DESTINATION_DATABASE : একটি নতুন ক্লোন করা ডাটাবেসের নাম। নামটি
projects/ PROJECT_ID /databases/ DESTINATION_DATABASE_IDফরম্যাটে ব্যবহৃত হয়। এই ডাটাবেসের নামটি কোনো বিদ্যমান ডাটাবেসের সাথে যুক্ত থাকা যাবে না।PITR_TIMESTAMP : RFC 3339 ফরম্যাটে একটি PITR টাইমস্ট্যাম্প , যা মিনিটের ব্যবধানে নির্ধারিত হয়। উদাহরণস্বরূপ:
2025-06-01T10:20:00.00Zঅথবা2025-06-01T10:30:00.00-07:00। যদি এটি নির্দিষ্ট না করা হয়, তবে নির্বাচিত স্ন্যাপশটটি হবে বর্তমান সময়, যা মিনিট পর্যন্ত রাউন্ড ডাউন করা হবে।
ডিফল্টরূপে, ক্লোন করা ডাটাবেসটির এনক্রিপশন কনফিগারেশন সোর্স ডাটাবেসের মতোই থাকবে। এনক্রিপশন কনফিগারেশন পরিবর্তন করতে, --encryption-type আর্গুমেন্টটি ব্যবহার করুন:
- (ডিফল্ট)
USE_SOURCE_ENCRYPTION: উৎস ডাটাবেসের মতোই এনক্রিপশন কনফিগারেশন ব্যবহার করুন। -
GOOGLE_DEFAULT_ENCRYPTION: গুগলের ডিফল্ট এনক্রিপশন ব্যবহার করুন। -
CUSTOMER_MANAGED_ENCRYPTIONএনক্রিপশন: CMEK এনক্রিপশন ব্যবহার করুন।--kms-key-nameআর্গুমেন্টে একটি কী আইডি উল্লেখ করুন।
প্রতি-ডাটাবেস অ্যাক্সেস অনুমতি কনফিগার করুন
আপনি প্রতিটি ডেটাবেসের জন্য আলাদাভাবে অ্যাক্সেস পারমিশন কনফিগার করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট কন্ডিশন ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণগুলিতে এক বা একাধিক ডেটাবেসের জন্য শর্তসাপেক্ষ অ্যাক্সেস নির্ধারণ করতে গুগল ক্লাউড সিএলআই (Google Cloud CLI) ব্যবহার করা হয়েছে। এছাড়াও আপনি গুগল ক্লাউড কনসোলে আইএএম (IAM) কন্ডিশন নির্ধারণ করতে পারেন।
বিদ্যমান IAM নীতিগুলি দেখুন
gcloud projects get-iam-policy PROJECT_ID
PROJECT_ID আপনার প্রজেক্ট আইডি হিসেবে সেট করুন।
একটি ডাটাবেসে অ্যাক্সেস দিন
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
নিম্নলিখিতগুলি সেট করুন:
-
PROJECT_ID: আপনার প্রজেক্ট আইডি -
EMAIL: একটি ইমেল ঠিকানা যা একটি নির্দিষ্ট অ্যাকাউন্টকে প্রতিনিধিত্ব করে। উদাহরণস্বরূপ,alice@example.com। -
DATABASE_ID: একটি ডেটাবেস আইডি। -
TITLE: অভিব্যক্তিটির জন্য একটি ঐচ্ছিক শিরোনাম। -
DESCRIPTION: অভিব্যক্তিটির একটি ঐচ্ছিক বিবরণ।
একটি ডাটাবেস ছাড়া বাকি সবগুলোতে অ্যাক্সেস দিন।
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
নিম্নলিখিতগুলি সেট করুন:
-
PROJECT_ID: আপনার প্রজেক্ট আইডি -
EMAIL: একটি ইমেল ঠিকানা যা একটি নির্দিষ্ট অ্যাকাউন্টকে প্রতিনিধিত্ব করে। উদাহরণস্বরূপ,alice@example.com। -
DATABASE_ID: একটি ডেটাবেস আইডি। -
TITLE: অভিব্যক্তিটির জন্য একটি ঐচ্ছিক শিরোনাম। -
DESCRIPTION: অভিব্যক্তিটির একটি ঐচ্ছিক বিবরণ।
নির্দিষ্ট সদস্য এবং ভূমিকার জন্য নীতিগুলি অপসারণ করুন
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all
নিম্নলিখিতগুলি সেট করুন:
-
PROJECT_ID: আপনার প্রজেক্ট আইডি -
EMAIL: একটি ইমেল ঠিকানা যা একটি নির্দিষ্ট অ্যাকাউন্টকে প্রতিনিধিত্ব করে। উদাহরণস্বরূপ,alice@example.com।
সীমাবদ্ধতা
প্রতিটি প্রজেক্টে আপনি সর্বোচ্চ ১০০টি ডেটাবেস রাখতে পারবেন। এই সীমা বাড়ানোর জন্য আপনি সাপোর্টে যোগাযোগ করতে পারেন।
এরপর কী?
- কুইকস্টার্টটি চালান: একটি ডেটাবেস তৈরি করুন এবং এতে সংযোগ স্থাপন করুন ।
- আচরণগত পার্থক্য সম্পর্কে জানুন।
- Cloud Firestore Cloud Monitoring মেট্রিক্স সম্পর্কে জানুন।