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

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

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

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

ক্লাউড ফায়ারস্টোরে সংগ্রহ এবং নথিগুলি নিখুঁতভাবে তৈরি করা হয়েছে। কেবলমাত্র একটি সংগ্রহের মধ্যে একটি নথিতে ডেটা বরাদ্দ করুন। যদি সংগ্রহ বা দস্তাবেজ না থাকে, ক্লাউড ফায়ারস্টোর এটি তৈরি করে।

দলিল

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

একটি নথি একটি ব্যবহারকারী প্রতিনিধিত্বমূলক alovelace ভালো চেহারা পারে:

  • alovelace

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

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

  • alovelace

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

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

সংগ্রহ

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

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

    • alovelace

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

    • aturing

      first : "Alan"
      last : "Turing"
      born : 1912

ক্লাউড ফায়ারস্টোরটি স্কিমলেস, তাই প্রতিটি ডকুমেন্টে আপনি কোন ক্ষেত্রগুলি রাখেন এবং সেই ক্ষেত্রগুলিতে আপনি কোন ধরণের ডেটা সংরক্ষণ করেন সে বিষয়ে আপনার সম্পূর্ণ স্বাধীনতা রয়েছে। একই সংগ্রহের মধ্যে থাকা নথিতে সবগুলিই বিভিন্ন ক্ষেত্র থাকতে পারে বা সেই ক্ষেত্রগুলিতে বিভিন্ন ধরণের ডেটা সংরক্ষণ করতে পারে। যাইহোক, একাধিক ডকুমেন্ট জুড়ে একই ক্ষেত্র এবং ডেটা টাইপ ব্যবহার করা একটি ভাল ধারণা, যাতে আপনি ডকুমেন্টগুলি আরও সহজে জিজ্ঞাসা করতে পারেন।

একটি সংগ্রহে নথিপত্র রয়েছে এবং অন্য কিছু নেই। এটি সরাসরি মান সহ কাঁচা ক্ষেত্র ধারণ করতে পারে না, এবং এতে অন্যান্য সংগ্রহ থাকতে পারে না। (দেখুন হায়ারারকিকাল ডাটা ক্লাউড Firestore আরও জটিল ডাটা স্ট্রাকচার কিভাবে একটি ব্যাখ্যা জন্য।)

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

আপনার সংগ্রহগুলি "তৈরি" বা "মুছে ফেলার" প্রয়োজন নেই। আপনি একটি সংগ্রহে প্রথম নথি তৈরি করার পরে, সংগ্রহটি বিদ্যমান। যদি আপনি একটি সংগ্রহে সমস্ত নথি মুছে ফেলেন, এটি আর বিদ্যমান নেই।

তথ্যসূত্র

ক্লাউড ফায়ারস্টোরের প্রতিটি নথি অনন্যভাবে ডেটাবেসের মধ্যে তার অবস্থান দ্বারা চিহ্নিত করা হয়। পূর্ববর্তী উদাহরণে একটি নথি দেখিয়েছে alovelace সংগ্রহে মধ্যে users । আপনার কোডে এই অবস্থানে উল্লেখ করতে, আপনি এটি একটি রেফারেন্স তৈরি করতে পারেন।

ওয়েব সংস্করণ 9

import { doc } from "firebase/firestore";

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

ওয়েব সংস্করণ 8

var alovelaceDocumentRef = db.collection('users').doc('alovelace');
সুইফট
let alovelaceDocumentRef = db.collection("users").document("alovelace")
উদ্দেশ্য গ
FIRDocumentReference *alovelaceDocumentRef =
    [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];

জাভা

DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");

কোটলিন+কেটিএক্স

val alovelaceDocumentRef = db.collection("users").document("alovelace")
জাভা
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.collection("users").document("alovelace");
পাইথন
a_lovelace_ref = db.collection(u'users').document(u'alovelace')

পাইথন

a_lovelace_ref = db.collection("users").document("alovelace")
সি ++
DocumentReference alovelace_document_reference =
    db->Collection("users").Document("alovelace");
Node.js
const alovelaceDocumentRef = db.collection('users').doc('alovelace');
যাওয়া
alovelaceRef := client.Collection("users").Doc("alovelace")
পিএইচপি
$document = $db->collection('samples/php/users')->document('lovelace');
Unক্য
DocumentReference documentRef = db.Collection("users").Document("alovelace");
সি#
DocumentReference documentRef = db.Collection("users").Document("alovelace");
রুবি
document_ref = firestore.col("users").doc("alovelace")

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

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

ওয়েব সংস্করণ 9

import { collection } from "firebase/firestore";

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

ওয়েব সংস্করণ 8

var usersCollectionRef = db.collection('users');
সুইফট
let usersCollectionRef = db.collection("users")
উদ্দেশ্য গ
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];

জাভা

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

কোটলিন+কেটিএক্স

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

পাইথন

users_ref = db.collection("users")
সি ++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
const usersCollectionRef = db.collection('users');
যাওয়া
usersRef := client.Collection("users")
পিএইচপি
$collection = $db->collection('samples/php/users');
Unক্য
CollectionReference collectionRef = db.Collection("users");
সি#
CollectionReference collectionRef = db.Collection("users");
রুবি
collection_ref = firestore.col "users"

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

ওয়েব সংস্করণ 9

import { doc } from "firebase/firestore"; 

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

ওয়েব সংস্করণ 8

var alovelaceDocumentRef = db.doc('users/alovelace');
সুইফট
let aLovelaceDocumentReference = db.document("users/alovelace")
উদ্দেশ্য গ
FIRDocumentReference *aLovelaceDocumentReference =
    [self.db documentWithPath:@"users/alovelace"];

জাভা

DocumentReference alovelaceDocumentRef = db.document("users/alovelace");

কোটলিন+কেটিএক্স

val alovelaceDocumentRef = db.document("users/alovelace")
জাভা
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.document("users/alovelace");
পাইথন
a_lovelace_ref = db.document(u'users/alovelace')

পাইথন

a_lovelace_ref = db.document("users/alovelace")
সি ++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
const alovelaceDocumentRef = db.doc('users/alovelace');
যাওয়া
alovelaceRef := client.Doc("users/alovelace")
পিএইচপি
$document = $db->document('users/lovelace');
Unক্য
DocumentReference documentRef = db.Document("users/alovelace");
সি#
DocumentReference documentRef = db.Document("users/alovelace");
রুবি
document_path_ref = firestore.doc "users/alovelace"

অনুক্রমিক তথ্য

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

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

  • কক্ষ

    • roomA

      name : "my chat room"

    • roomB

      ...

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

উপ -সংগ্রহ

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

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

  • কক্ষ

    • roomA

      name : "my chat room"

      • বার্তা

        • message1

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

        • message2

          ...

    • roomB

      ...

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

ওয়েব সংস্করণ 9

import { doc } from "firebase/firestore"; 

const messageRef = doc(db, "rooms", "roomA", "messages", "message1");

ওয়েব সংস্করণ 8

var messageRef = db.collection('rooms').doc('roomA')
                .collection('messages').doc('message1');
সুইফট
let messageRef = db
    .collection("rooms").document("roomA")
    .collection("messages").document("message1")
উদ্দেশ্য গ
FIRDocumentReference *messageRef =
    [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"]
    collectionWithPath:@"messages"] documentWithPath:@"message1"];

জাভা

DocumentReference messageRef = db
        .collection("rooms").document("roomA")
        .collection("messages").document("message1");

কোটলিন+কেটিএক্স

val messageRef = db
        .collection("rooms").document("roomA")
        .collection("messages").document("message1")
জাভা
// Reference to a document in subcollection "messages"
DocumentReference document =
    db.collection("rooms").document("roomA").collection("messages").document("message1");
পাইথন
room_a_ref = db.collection(u'rooms').document(u'roomA')
message_ref = room_a_ref.collection(u'messages').document(u'message1')

পাইথন

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");
Node.js
const messageRef = db.collection('rooms').doc('roomA')
  .collection('messages').doc('message1');
যাওয়া
messageRef := client.Collection("rooms").Doc("roomA").
	Collection("messages").Doc("message1")
পিএইচপি
$document = $db
    ->collection('rooms')
    ->document('roomA')
    ->collection('messages')
    ->document('message1');
Unক্য
DocumentReference documentRef = db
	.Collection("Rooms").Document("RoomA")
	.Collection("Messages").Document("Message1");
সি#
DocumentReference documentRef = db
    .Collection("Rooms").Document("RoomA")
    .Collection("Messages").Document("Message1");
রুবি
message_ref = firestore.col("rooms").doc("roomA").col("messages").doc("message1")

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

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

সাবকলেকশনে থাকা ডকুমেন্টে সাবকলেকশনও থাকতে পারে, যা আপনাকে আরও নেস্ট ডেটা দিতে দেয়। আপনি 100 স্তর গভীর পর্যন্ত ডেটা নেস্ট করতে পারেন।