Cloud Firestore হল NoSQL, ডকুমেন্ট-ওরিয়েন্টেড ডেটাবেস। SQL ডেটাবেসের মতো, এতে কোনও টেবিল বা সারি নেই। পরিবর্তে, আপনি ডকুমেন্টে ডেটা স্টোর করেন, যা কালেকশনে সাজানো থাকে।
প্রতিটি ডকুমেন্টে কী-ভ্যালু পেয়ারের একটি সেট থাকে। Cloud Firestore ছোট ডকুমেন্টের বিশাল সংগ্রহ স্টোর করার জন্য অপ্টিমাইজ করা হয়েছে।
সব ডকুমেন্ট অবশ্যই কালেকশনে সেভ করতে হবে। ডকুমেন্টে সাবকালেকশন এবং নেস্ট করা অবজেক্ট থাকতে পারে, যার দুটিতেই স্ট্রিংয়ের মতো প্রিমিটিভ ফিল্ড বা তালিকার মতো জটিল অবজেক্ট থাকতে পারে।
Cloud Firestore-এ কালেকশন ও ডকুমেন্ট অন্তর্নিহিতভাবে তৈরি করা হয়। কোনও সংগ্রহের মধ্যে থাকা ডকুমেন্টে ডেটা অ্যাসাইন করুন। কালেকশন বা ডকুমেন্ট, এর মধ্যে কোনও একটি না থাকলে, Cloud Firestore সেটি তৈরি করে।
ডকুমেন্ট
Cloud Firestore-এ, স্টোরেজের ইউনিট হল ডকুমেন্ট। ডকুমেন্ট হল একটি লাইটওয়েট রেকর্ড যাতে ফিল্ড থাকে, যা ভ্যালুর সাথে ম্যাপ করে। প্রতিটি ডকুমেন্ট নাম দিয়ে শনাক্ত করা হয়।
alovelace ব্যবহারকারীর প্রতিনিধিত্বকারী ডকুমেন্টটি দেখতে এইরকম হতে পারে:
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
ডকুমেন্টে জটিল, নেস্টেড অবজেক্টকে ম্যাপ বলা হয়। যেমন, আপনি উপরের উদাহরণ থেকে ব্যবহারকারীর নাম ম্যাপের সাহায্যে এইভাবে সাজাতে পারেন:
alovelace
name :
first : "Ada"
last : "Lovelace"
born : 1815
আপনি লক্ষ্য করতে পারেন যে ডকুমেন্টগুলি JSON-এর মতো দেখতে। আসলে, তারা মূলত তাই। কিছু পার্থক্য আছে (যেমন, ডকুমেন্ট অতিরিক্ত ডেটার ধরন সাপোর্ট করে এবং ডকুমেন্ট সাইজের সীমা পর্যন্ত সীমাবদ্ধ), তবে সাধারণভাবে, আপনি ডকুমেন্টকে লাইটওয়েট JSON রেকর্ড হিসেবে বিবেচনা করতে পারেন।
সংগ্রহ

ডকুমেন্ট কালেকশনে থাকে, যা আসলে ডকুমেন্টের কন্টেনার। যেমন, আপনার বিভিন্ন ব্যবহারকারীর জন্য একটি users সংগ্রহ থাকতে পারে, যার প্রতিটি
একটি ডকুমেন্ট দ্বারা উপস্থাপিত হয়:
জন ব্যবহারকারী
alovelace
first : "Ada"
last : "Lovelace"
born : 1815aturing
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore-এ কোনও স্কিমা নেই, তাই প্রতিটি ডকুমেন্টে আপনি কোন কোন ফিল্ড রাখবেন এবং সেইসব ফিল্ডে কোন ধরনের ডেটা স্টোর করবেন তা সম্পূর্ণ আপনার উপর নির্ভর করে। একই সংগ্রহের মধ্যে থাকা ডকুমেন্টে বিভিন্ন ফিল্ড থাকতে পারে অথবা সেইসব ফিল্ডে বিভিন্ন ধরনের ডেটা স্টোর করা থাকতে পারে। তবে, একাধিক ডকুমেন্ট জুড়ে একই ফিল্ড এবং ডেটার ধরন ব্যবহার করা একটি ভালো আইডিয়া, যাতে আপনি আরও সহজে ডকুমেন্ট কোয়েরি করতে পারেন।
কালেকশনে শুধু ডকুমেন্ট থাকে, অন্য কিছু নয়। এতে সরাসরি ভ্যালু সহ র ফিল্ড থাকতে পারে না এবং এতে অন্যান্য কালেকশন থাকতে পারে না। (Cloud Firestore-এ আরও জটিল ডেটা কীভাবে স্ট্রাকচার করতে হয় তার ব্যাখ্যা পেতে হায়ারার্কিক্যাল ডেটা দেখুন।)
একটি সংগ্রহের মধ্যে থাকা ডকুমেন্টের নাম অনন্য হয়। আপনি নিজের কী প্রদান করতে পারেন, যেমন ব্যবহারকারীর আইডি অথবা Cloud Firestore-কে আপনার জন্য অটোমেটিক র্যান্ডম আইডি তৈরি করতে দিতে পারেন।
আপনাকে সংগ্রহ "তৈরি" বা "মুছতে" হবে না। আপনি কোনও কালেকশনে প্রথম ডকুমেন্ট তৈরি করার পরে, কালেকশনটি তৈরি হয়। আপনি যদি কোনও সংগ্রহের সব ডকুমেন্ট মুছে দেন, তাহলে সেটি আর থাকবে না।
রেফারেন্স
Cloud Firestore-এর প্রতিটি ডকুমেন্ট ডেটাবেসের মধ্যে তার লোকেশন দ্বারা
অনন্যভাবে শনাক্ত করা হয়। আগের উদাহরণে users সংগ্রহের মধ্যে
alovelace ডকুমেন্ট দেখানো হয়েছে। আপনার কোডে এই লোকেশন উল্লেখ করতে, আপনি এটির জন্য একটি
রেফারেন্স তৈরি করতে পারেন।
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Swift
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Objective-C
FIRDocumentReference *alovelaceDocumentRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];
Kotlin
val alovelaceDocumentRef = db.collection("users").document("alovelace")
Java
DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");
Dart
final alovelaceDocumentRef = db.collection("users").doc("alovelace");
জাভা
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Ruby
রেফারেন্স হল একটি লাইটওয়েট অবজেক্ট যা আপনার ডেটাবেসের একটি লোকেশনকে পয়েন্ট করে। সেখানে ডেটা থাকুক বা না থাকুক, আপনি রেফারেন্স তৈরি করতে পারবেন এবং রেফারেন্স তৈরি করার সময় কোনও নেটওয়ার্ক অপারেশন পারফর্ম করা হয় না।
এছাড়াও, আপনি কালেকশন-এর রেফারেন্স তৈরি করতে পারবেন:
Web
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web
var usersCollectionRef = db.collection('users');
Swift
let usersCollectionRef = db.collection("users")
Objective-C
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];
Kotlin
val usersCollectionRef = db.collection("users")
Java
CollectionReference usersCollectionRef = db.collection("users");
Dart
final usersCollectionRef = db.collection("users");
জাভা
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
CollectionReference collectionRef = db.Collection("users");
C#
C#
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Ruby
সুবিধার জন্য, আপনি একটি ডকুমেন্ট বা সংগ্রহের পাথকে স্ট্রিং হিসেবে উল্লেখ করে রেফারেন্স তৈরি করতে পারেন, যেখানে পাথের উপাদানগুলি ফরওয়ার্ড স্ল্যাশ (/) দ্বারা আলাদা করা হয়। উদাহরণস্বরূপ, alovelace ডকুমেন্টের রেফারেন্স তৈরি করতে:
Web
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web
var alovelaceDocumentRef = db.doc('users/alovelace');
Swift
let aLovelaceDocumentReference = db.document("users/alovelace")
Objective-C
FIRDocumentReference *aLovelaceDocumentReference = [self.db documentWithPath:@"users/alovelace"];
Kotlin
val alovelaceDocumentRef = db.document("users/alovelace")
Java
DocumentReference alovelaceDocumentRef = db.document("users/alovelace");
Dart
final aLovelaceDocRef = db.doc("users/alovelace");
জাভা
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Ruby
হায়ারার্কিক্যাল ডেটা
Cloud Firestore-এ কীভাবে হায়ারার্কিক্যাল ডেটা স্ট্রাকচার কাজ করে তা বুঝতে, মেসেজ এবং চ্যাট রুম সহ একটি উদাহরণ চ্যাট অ্যাপ বিবেচনা করুন।
বিভিন্ন চ্যাট রুম স্টোর করার জন্য আপনি rooms নামে একটি সংগ্রহ তৈরি করতে পারেন:
টি রুম
roomA
name : "my chat room"roomB
...
এখন আপনার চ্যাট রুম আছে, আপনার মেসেজ কীভাবে স্টোর করবেন তা ঠিক করুন। আপনি হয়ত চ্যাট রুমের ডকুমেন্টে সেগুলি স্টোর করতে চাইবেন না। Cloud Firestore-এ ডকুমেন্ট হালকা হওয়া উচিত এবং চ্যাট রুমে অনেক মেসেজ থাকতে পারে। তবে, আপনি নিজের চ্যাট রুমের ডকুমেন্টের মধ্যে অতিরিক্ত কালেকশন তৈরি করতে পারবেন, সাবকালেকশন হিসেবে।
সাবকালেকশন
এই পরিস্থিতিতে মেসেজ স্টোর করার সবচেয়ে ভালো উপায় হল সাবকালেকশন ব্যবহার করা। সাবকালেকশন হল নির্দিষ্ট ডকুমেন্টের সাথে সম্পর্কিত কালেকশন।
আপনার rooms কালেকশনে প্রতিটি রুম ডকুমেন্টের জন্য আপনি messages নামে একটি সাবকালেকশন তৈরি করতে পারেন:
টি রুম
roomA
name : "my chat room"মেসেজ
message1
from : "alex"
msg : "Hello World!"message2
...
roomB
...
এই উদাহরণে, আপনি নিম্নলিখিত কোড ব্যবহার করে সাবকালেকশনে একটি মেসেজের রেফারেন্স তৈরি করবেন:
Web
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Swift
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Objective-C
FIRDocumentReference *messageRef = [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"] collectionWithPath:@"messages"] documentWithPath:@"message1"];
Kotlin
val messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Java
DocumentReference messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1");
Dart
final messageRef = db .collection("rooms") .doc("roomA") .collection("messages") .doc("message1");
জাভা
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Ruby
কালেকশন ও ডকুমেন্টের অল্টারনেটিং প্যাটার্ন লক্ষ্য করুন। আপনার সংগ্রহ এবং ডকুমেন্টকে সবসময় এই প্যাটার্ন অনুসরণ করতে হবে। আপনি কোনও কালেকশনে অন্য কোনও কালেকশন বা কোনও ডকুমেন্টে অন্য কোনও ডকুমেন্ট রেফারেন্স হিসেবে ব্যবহার করতে পারবেন না।
সাবকালেকশন আপনাকে ডেটা হায়ারার্কি অনুযায়ী স্ট্রাকচার করতে দেয়, যার ফলে ডেটা অ্যাক্সেস করা সহজ হয়। roomA-এ সব মেসেজ পেতে, আপনি messages সাবকালেকশনের জন্য একটি কালেকশন রেফারেন্স তৈরি করতে পারেন
এবং অন্য যেকোনও কালেকশন রেফারেন্সের মতো এটির সাথে ইন্টার্যাক্ট করতে পারেন।
সাবকালেকশনের ডকুমেন্টে সাবকালেকশনও থাকতে পারে, যা আপনাকে আরও নেস্ট ডেটা করার অনুমতি দেয়। আপনি সর্বাধিক ১০০ লেভেল পর্যন্ত ডেটা নেস্ট করতে পারবেন।