ক্লাউড ফায়ারস্টোর ডেটা মডেল

Cloud Firestore হল একটি NoSQL, ডকুমেন্ট-ভিত্তিক ডাটাবেস। SQL ডাটাবেসের মতো, এখানে কোনও টেবিল বা সারি নেই। পরিবর্তে, আপনি ডকুমেন্টে ডেটা সংরক্ষণ করেন, যা সংগ্রহে সংগঠিত হয়।

প্রতিটি নথিতে কী-মান জোড়ার একটি সেট থাকে। Cloud Firestore ছোট নথির বৃহৎ সংগ্রহ সংরক্ষণের জন্য অপ্টিমাইজ করা হয়েছে।

সকল ডকুমেন্ট সংগ্রহে সংরক্ষণ করতে হবে। ডকুমেন্টে উপ-সংগ্রহ এবং নেস্টেড অবজেক্ট থাকতে পারে, যার মধ্যে স্ট্রিং-এর মতো আদিম ক্ষেত্র অথবা তালিকার মতো জটিল অবজেক্ট উভয়ই অন্তর্ভুক্ত থাকতে পারে।

Cloud Firestore সংগ্রহ এবং নথিগুলি পরোক্ষভাবে তৈরি করা হয়। কেবল একটি সংগ্রহের মধ্যে একটি নথিতে ডেটা বরাদ্দ করুন। যদি সংগ্রহ বা নথির কোনওটিই বিদ্যমান না থাকে, তাহলে Cloud Firestore এটি তৈরি করে।

কাগজপত্র

Cloud Firestore , স্টোরেজের একক হল ডকুমেন্ট। ডকুমেন্ট হল একটি হালকা রেকর্ড যার মধ্যে ক্ষেত্র থাকে, যা মানগুলির সাথে ম্যাপ করে। প্রতিটি ডকুমেন্ট একটি নাম দ্বারা চিহ্নিত করা হয়।

একজন ব্যবহারকারী alovelace প্রতিনিধিত্বকারী একটি নথি দেখতে এরকম হতে পারে:

  • অ্যালোভেলেস

    first : "Ada"
    last : "Lovelace"
    born : 1815

একটি ডকুমেন্টে জটিল, নেস্টেড অবজেক্টগুলিকে মানচিত্র বলা হয়। উদাহরণস্বরূপ, আপনি উপরের উদাহরণ থেকে ব্যবহারকারীর নামটি একটি মানচিত্র দিয়ে গঠন করতে পারেন, যেমন:

  • অ্যালোভেলেস

    name :
    first : "Ada"
    last : "Lovelace"
    born : 1815

আপনি হয়তো লক্ষ্য করবেন যে ডকুমেন্টগুলি দেখতে অনেকটা JSON এর মতো। আসলে, এগুলি মূলত তাই। কিছু পার্থক্য রয়েছে (উদাহরণস্বরূপ, ডকুমেন্টগুলি অতিরিক্ত ডেটা টাইপ সমর্থন করে এবং আকারে 1 MB পর্যন্ত সীমাবদ্ধ), তবে সাধারণভাবে, আপনি ডকুমেন্টগুলিকে হালকা JSON রেকর্ড হিসাবে বিবেচনা করতে পারেন।

সংগ্রহ

ডকুমেন্টগুলি সংগ্রহে থাকে, যা কেবল ডকুমেন্টের জন্য ধারক। উদাহরণস্বরূপ, আপনার বিভিন্ন ব্যবহারকারীদের ধারণ করার জন্য একটি users সংগ্রহ থাকতে পারে, প্রতিটিকে একটি নথি দ্বারা প্রতিনিধিত্ব করা হয়:

  • ব্যবহারকারীরা

    • অ্যালোভেলেস

      first : "Ada"
      last : "Lovelace"
      born : 1815

    • পড়া

      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');
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
let alovelaceDocumentRef = db.collection("users").document("alovelace")
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
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");
জাভা
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.collection("users").document("alovelace");
পাইথন
a_lovelace_ref = db.collection("users").document("alovelace")

Python

a_lovelace_ref = db.collection("users").document("alovelace")
সি++
DocumentReference alovelace_document_reference =
    db->Collection("users").Document("alovelace");
নোড.জেএস
const alovelaceDocumentRef = db.collection('users').doc('alovelace');
যাও

import (
	"cloud.google.com/go/firestore"
)

func createDocReference(client *firestore.Client) {

	alovelaceRef := client.Collection("users").Doc("alovelace")

	_ = alovelaceRef
}
পিএইচপি

পিএইচপি

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

$document = $db->collection('samples/php/users')->document('alovelace');
ঐক্য
DocumentReference documentRef = db.Collection("users").Document("alovelace");
সি#

সি#

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

DocumentReference documentRef = db.Collection("users").Document("alovelace");
রুবি
document_ref = firestore.col("users").doc("alovelace")

রেফারেন্স হলো একটি হালকা ওজনের বস্তু যা আপনার ডাটাবেসের একটি অবস্থান নির্দেশ করে। আপনি সেখানে ডেটা থাকুক বা না থাকুক, একটি রেফারেন্স তৈরি করতে পারেন এবং রেফারেন্স তৈরি করলে কোনও নেটওয়ার্ক ক্রিয়াকলাপ সম্পন্ন হয় না।

আপনি সংগ্রহের রেফারেন্সও তৈরি করতে পারেন:

Web

import { collection } from "firebase/firestore";

const usersCollectionRef = collection(db, 'users');

Web

var usersCollectionRef = db.collection('users');
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
let usersCollectionRef = db.collection("users")
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];

Kotlin

val usersCollectionRef = db.collection("users")

Java

CollectionReference usersCollectionRef = db.collection("users");

Dart

final usersCollectionRef = db.collection("users");
জাভা
// Reference to the collection "users"
CollectionReference collection = db.collection("users");
পাইথন
users_ref = db.collection("users")

Python

users_ref = db.collection("users")
সি++
CollectionReference users_collection_reference = db->Collection("users");
নোড.জেএস
const usersCollectionRef = db.collection('users');
যাও

import (
	"cloud.google.com/go/firestore"
)

func createCollectionReference(client *firestore.Client) {
	usersRef := client.Collection("users")

	_ = usersRef
}
পিএইচপি

পিএইচপি

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

$collection = $db->collection('samples/php/users');
ঐক্য
CollectionReference collectionRef = db.Collection("users");
সি#

সি#

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

CollectionReference collectionRef = db.Collection("users");
রুবি
collection_ref = firestore.col "users"

সুবিধার জন্য, আপনি একটি ডকুমেন্ট বা সংগ্রহের পাথকে একটি স্ট্রিং হিসেবে নির্দিষ্ট করে রেফারেন্স তৈরি করতে পারেন, পাথ উপাদানগুলিকে একটি ফরোয়ার্ড স্ল্যাশ ( / ) দ্বারা পৃথক করে। উদাহরণস্বরূপ, alovelace ডকুমেন্টের একটি রেফারেন্স তৈরি করতে:

Web

import { doc } from "firebase/firestore"; 

const alovelaceDocumentRef = doc(db, 'users/alovelace');

Web

var alovelaceDocumentRef = db.doc('users/alovelace');
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
let aLovelaceDocumentReference = db.document("users/alovelace")
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
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");
জাভা
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.document("users/alovelace");
পাইথন
a_lovelace_ref = db.document("users/alovelace")

Python

a_lovelace_ref = db.document("users/alovelace")
সি++
DocumentReference alovelace_document = db->Document("users/alovelace");
নোড.জেএস
const alovelaceDocumentRef = db.doc('users/alovelace');
যাও

import (
	"cloud.google.com/go/firestore"
)

func createDocReferenceFromString(client *firestore.Client) {
	// Reference to a document with id "alovelace" in the collection "users"
	alovelaceRef := client.Doc("users/alovelace")

	_ = alovelaceRef
}
পিএইচপি

পিএইচপি

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

$document = $db->document('users/alovelace');
ঐক্য
DocumentReference documentRef = db.Document("users/alovelace");
সি#

সি#

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

DocumentReference documentRef = db.Document("users/alovelace");
রুবি
document_path_ref = firestore.doc "users/alovelace"

শ্রেণিবদ্ধ তথ্য

Cloud Firestore হায়ারার্কিকাল ডেটা স্ট্রাকচার কীভাবে কাজ করে তা বোঝার জন্য, বার্তা এবং চ্যাট রুম সহ একটি চ্যাট অ্যাপের উদাহরণ বিবেচনা করুন।

আপনি বিভিন্ন চ্যাট রুম সংরক্ষণের জন্য rooms নামে একটি সংগ্রহ তৈরি করতে পারেন:

  • রুম

    • রুমA

      name : "my chat room"

    • রুম খ

      ...

এখন যেহেতু আপনার চ্যাট রুম আছে, আপনার বার্তাগুলি কীভাবে সংরক্ষণ করবেন তা ঠিক করুন। আপনি হয়তো চ্যাট রুমের ডকুমেন্টে সেগুলি সংরক্ষণ করতে চাইবেন না। Cloud Firestore ডকুমেন্টগুলি হালকা হওয়া উচিত এবং একটি চ্যাট রুমে প্রচুর সংখ্যক বার্তা থাকতে পারে। তবে, আপনি আপনার চ্যাট রুমের ডকুমেন্টের মধ্যে উপ-সংগ্রহ হিসাবে অতিরিক্ত সংগ্রহ তৈরি করতে পারেন।

উপ-সংগ্রহ

এই পরিস্থিতিতে বার্তা সংরক্ষণের সর্বোত্তম উপায় হল উপ-সংগ্রহ ব্যবহার করা। একটি উপ-সংগ্রহ হল একটি নির্দিষ্ট নথির সাথে সম্পর্কিত একটি সংগ্রহ।

আপনার rooms সংগ্রহের প্রতিটি রুম ডকুমেন্টের জন্য আপনি messages নামে একটি উপ-সংগ্রহ তৈরি করতে পারেন:

  • রুম

    • রুমA

      name : "my chat room"

      • বার্তা

        • মেসেজ১

          from : "alex"
          msg : "Hello World!"

        • মেসেজ২

          ...

    • রুম খ

      ...

এই উদাহরণে, আপনি নিম্নলিখিত কোড ব্যবহার করে উপ-সংগ্রহে একটি বার্তার একটি রেফারেন্স তৈরি করবেন:

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');
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
let messageRef = db
  .collection("rooms").document("roomA")
  .collection("messages").document("message1")
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
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");
জাভা
// Reference to a document in subcollection "messages"
DocumentReference document =
    db.collection("rooms").document("roomA").collection("messages").document("message1");
পাইথন
room_a_ref = db.collection("rooms").document("roomA")
message_ref = room_a_ref.collection("messages").document("message1")

Python

room_a_ref = db.collection("rooms").document("roomA")
message_ref = room_a_ref.collection("messages").document("message1")
সি++
DocumentReference message_reference = db->Collection("rooms")
    .Document("roomA")
    .Collection("messages")
    .Document("message1");
নোড.জেএস
const messageRef = db.collection('rooms').doc('roomA')
  .collection('messages').doc('message1');
যাও

import (
	"cloud.google.com/go/firestore"
)

func createSubcollectionReference(client *firestore.Client) {
	messageRef := client.Collection("rooms").Doc("roomA").
		Collection("messages").Doc("message1")

	_ = messageRef
}
পিএইচপি

পিএইচপি

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

$document = $db
    ->collection('rooms')
    ->document('roomA')
    ->collection('messages')
    ->document('message1');
ঐক্য
DocumentReference documentRef = db
	.Collection("Rooms").Document("RoomA")
	.Collection("Messages").Document("Message1");
সি#

সি#

Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

DocumentReference documentRef = db
    .Collection("Rooms").Document("RoomA")
    .Collection("Messages").Document("Message1");
রুবি
message_ref = firestore.col("rooms").doc("roomA").col("messages").doc("message1")

সংগ্রহ এবং নথির পর্যায়ক্রমিক ধরণ লক্ষ্য করুন। আপনার সংগ্রহ এবং নথিগুলিকে সর্বদা এই ধরণ অনুসরণ করতে হবে। আপনি একটি সংগ্রহে একটি সংগ্রহ বা একটি নথিতে একটি নথি উল্লেখ করতে পারবেন না।

উপ-সংগ্রহ আপনাকে ডেটা শ্রেণিবদ্ধভাবে গঠন করতে দেয়, যার ফলে ডেটা অ্যাক্সেস করা সহজ হয়। roomA তে সমস্ত বার্তা পেতে, আপনি উপ-সংগ্রহ messages জন্য একটি সংগ্রহ রেফারেন্স তৈরি করতে পারেন এবং অন্য কোনও সংগ্রহ রেফারেন্সের মতো এটির সাথে ইন্টারঅ্যাক্ট করতে পারেন।

উপ-সংগ্রহের নথিতে উপ-সংগ্রহও থাকতে পারে, যা আপনাকে আরও নেস্ট ডেটা সংরক্ষণ করতে দেয়। আপনি ১০০ স্তর গভীর পর্যন্ত ডেটা নেস্ট করতে পারেন।