Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

क्लाउड फायरस्टार डेटा मॉडल

क्लाउड फायरस्टार एक NoSQL, दस्तावेज़-उन्मुख डेटाबेस है। SQL डेटाबेस के विपरीत, कोई तालिका या पंक्तियाँ नहीं हैं। इसके बजाय, आप दस्तावेज़ों में डेटा संग्रहीत करते हैं, जो संग्रह में व्यवस्थित होते हैं।

प्रत्येक दस्तावेज़ में कुंजी-मूल्य जोड़े का एक सेट होता है। क्लाउड फायरस्टार छोटे दस्तावेजों के बड़े संग्रह को संग्रहीत करने के लिए अनुकूलित है।

सभी दस्तावेजों को संग्रह में संग्रहीत किया जाना चाहिए। दस्तावेज़ में सब- कलैक्शन और नेस्टेड ऑब्जेक्ट शामिल हो सकते हैं, जिनमें दोनों स्ट्रिंग या कॉम्प्लेक्स ऑब्जेक्ट जैसे कि सूची में आदिम फ़ील्ड शामिल हो सकते हैं।

क्लाउड फायरस्टार में संग्रह और दस्तावेजों को स्पष्ट रूप से बनाया गया है। बस एक संग्रह के भीतर एक दस्तावेज़ को डेटा असाइन करें। यदि या तो संग्रह या दस्तावेज़ मौजूद नहीं है, तो क्लाउड फायरस्टार इसे बनाता है।

दस्तावेज़

क्लाउड फायरस्टार में, भंडारण की इकाई दस्तावेज है। एक दस्तावेज़ एक हल्का रिकॉर्ड है जिसमें फ़ील्ड होते हैं, जो मानों के लिए मैप करते हैं। प्रत्येक दस्तावेज़ को एक नाम से पहचाना जाता है।

एक उपयोगकर्ता alovelace प्रतिनिधित्व करने वाला एक दस्तावेज इस तरह alovelace सकता है:

  • अलोवेलेस

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

किसी दस्तावेज़ में जटिल, नेस्टेड वस्तुओं को मानचित्र कहा जाता है। उदाहरण के लिए, आप उपर्युक्त उदाहरण से उपयोगकर्ता के नाम को संरचना के साथ जोड़ सकते हैं, जैसे:

  • अलोवेलेस

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

आप देख सकते हैं कि दस्तावेज़ JSON की तरह दिखते हैं। वास्तव में, वे मूल रूप से हैं। कुछ अंतर हैं (उदाहरण के लिए, दस्तावेज़ अतिरिक्त डेटा प्रकारों का समर्थन करते हैं और आकार में 1 एमबी तक सीमित होते हैं), लेकिन सामान्य तौर पर, आप दस्तावेजों को हल्के JSON रिकॉर्ड के रूप में मान सकते हैं।

संग्रह

दस्तावेज़ संग्रह में रहते हैं, जो दस्तावेजों के लिए बस कंटेनर हैं। उदाहरण के लिए, आपके पास अपने विभिन्न उपयोगकर्ताओं को शामिल करने के लिए एक users संग्रह हो सकता है, प्रत्येक एक दस्तावेज़ द्वारा प्रस्तुत किया गया है:

  • उपयोगकर्ता

    • अलोवेलेस

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

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

क्लाउड फायरस्टार योजनाबद्ध है, इसलिए आपको प्रत्येक दस्तावेज़ में किस फ़ील्ड में और किन डेटा प्रकारों को आप उन फ़ील्ड में संग्रहीत करते हैं, इस पर पूर्ण स्वतंत्रता है। एक ही संग्रह के भीतर दस्तावेज़ों में सभी अलग-अलग फ़ील्ड हो सकते हैं या उन क्षेत्रों में विभिन्न प्रकार के डेटा संग्रहीत कर सकते हैं। हालाँकि, कई दस्तावेज़ों में समान फ़ील्ड और डेटा प्रकारों का उपयोग करना एक अच्छा विचार है, ताकि आप दस्तावेज़ों को अधिक आसानी से क्वेरी कर सकें।

एक संग्रह में दस्तावेज़ होते हैं और कुछ नहीं। इसमें मूल्यों के साथ सीधे कच्चे फ़ील्ड नहीं हो सकते हैं, और इसमें अन्य संग्रह नहीं हो सकते हैं। (क्लाउड फायरस्टार में अधिक जटिल डेटा की संरचना कैसे करें, इसकी व्याख्या के लिए पदानुक्रमित डेटा देखें।)

एक संग्रह के भीतर दस्तावेजों के नाम अद्वितीय हैं। आप अपनी खुद की चाबियाँ प्रदान कर सकते हैं, जैसे कि उपयोगकर्ता आईडी, या आप क्लाउड फायरस्टोर को स्वचालित रूप से आपके लिए यादृच्छिक आईडी बनाने दे सकते हैं।

आपको संग्रह "बनाने" या "हटाने" की आवश्यकता नहीं है। जब आप किसी संग्रह में पहला दस्तावेज़ बनाते हैं, तो संग्रह मौजूद होता है। यदि आप एक संग्रह में सभी दस्तावेजों को हटाते हैं, तो यह मौजूद नहीं है।

संदर्भ

Cloud Firestore में प्रत्येक दस्तावेज़ को विशिष्ट रूप से डेटाबेस के भीतर उसके स्थान से पहचाना जाता है। पिछले उदाहरण ने संग्रह users भीतर एक दस्तावेज़ alovelace दिखाया। अपने कोड में इस स्थान को संदर्भित करने के लिए, आप इसका संदर्भ बना सकते हैं।

वेब v8

var alovelaceDocumentRef = db.collection('users').doc('alovelace');

वेब 9

import { doc } from "firebase/firestore";

const alovelaceDocumentRef = doc(db, 'users', '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')
सी ++
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('users')->document('lovelace');
एकता
DocumentReference documentRef = db.Collection("users").Document("alovelace");
है
सी#
DocumentReference documentRef = db.Collection("users").Document("alovelace");
माणिक
document_ref = firestore.col("users").doc("alovelace")

एक संदर्भ एक हल्की वस्तु है जो आपके डेटाबेस में किसी स्थान को इंगित करता है। आप एक संदर्भ बना सकते हैं कि वहां डेटा मौजूद है या नहीं, और संदर्भ बनाने से कोई नेटवर्क संचालन नहीं होता है।

आप संग्रह के संदर्भ भी बना सकते हैं:

वेब v8

var usersCollectionRef = db.collection('users');

वेब 9

import { collection } from "firebase/firestore";

const usersCollectionRef = collection(db, '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')
सी ++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
const usersCollectionRef = db.collection('users');
जाओ
usersRef := client.Collection("users")
पीएचपी
$collection = $db->collection('users');
एकता
CollectionReference collectionRef = db.Collection("users");
सी#
CollectionReference collectionRef = db.Collection("users");
माणिक
collection_ref = firestore.col "users"

सुविधा के लिए, आप किसी दस्तावेज़ या संग्रह को पथ को स्ट्रिंग के रूप में निर्दिष्ट करके भी संदर्भ बना सकते हैं, जिसमें आगे की स्लैश ( / ) द्वारा अलग किए गए पथ घटक होते हैं। उदाहरण के लिए, alovelace दस्तावेज़ का संदर्भ बनाने के लिए:

वेब v8

var alovelaceDocumentRef = db.doc('users/alovelace');

वेब 9

import { doc } from "firebase/firestore"; 

const alovelaceDocumentRef = doc(db, '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");
अजगर
0e8989bd0
सी ++
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');
एकता
DocumentReference documentRef = db.Document("users/alovelace");
सी#
DocumentReference documentRef = db.Document("users/alovelace");
माणिक
document_path_ref = firestore.doc "users/alovelace"

पदानुक्रमित डेटा

क्लाउड फायरस्टार में पदानुक्रमित डेटा संरचनाएं कैसे काम करती हैं, यह समझने के लिए, संदेशों और चैट रूम के साथ एक उदाहरण चैट ऐप पर विचार करें।

आप अलग-अलग चैट रूम को स्टोर करने के लिए rooms नामक एक संग्रह बना सकते हैं:

  • कमरे

    • रूम

      name : "my chat room"

    • कक्ष

      ...

अब जब आपके पास चैट रूम हैं, तो तय करें कि अपने संदेशों को कैसे संग्रहीत किया जाए। आप उन्हें चैट रूम के दस्तावेज़ में संग्रहीत नहीं करना चाह सकते हैं। क्लाउड फायरस्टार में दस्तावेज़ हल्के होने चाहिए, और एक चैट रूम में बड़ी संख्या में संदेश हो सकते हैं। हालाँकि, आप अपने चैट रूम के दस्तावेज़ में अतिरिक्त संग्रह बना सकते हैं, सबकोक्लिनेशन के रूप में।

उपविभाजन

इस परिदृश्य में संदेशों को संग्रहीत करने का सबसे अच्छा तरीका सबकोक्लिनेशन का उपयोग करना है। एक सबकोलिलेशन एक संग्रह है जो एक विशिष्ट दस्तावेज़ से जुड़ा हुआ है।

आप अपने rooms संग्रह में हर कमरे के दस्तावेज़ के लिए एक messages नाम का एक उपकेंद्र बना सकते हैं:

  • कमरे

    • रूम

      name : "my chat room"

      • संदेश

        • संदेश १

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

        • संदेश २

          ...

    • कक्ष

      ...

इस उदाहरण में, आप निम्न कोड के साथ एक संदेश के संदर्भ में बनायेंगे:

वेब v8

var messageRef = db.collection('rooms').doc('roomA')
                .collection('messages').doc('message1');

वेब 9

import { doc } from "firebase/firestore"; 

const messageRef = doc(db, "rooms", "roomA", "messages", "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')
सी ++
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');
एकता
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")

संग्रह और दस्तावेजों के वैकल्पिक पैटर्न पर ध्यान दें। आपके संग्रह और दस्तावेजों को हमेशा इस पैटर्न का पालन करना चाहिए। आप एक संग्रह में एक संग्रह या एक दस्तावेज़ में एक दस्तावेज का संदर्भ नहीं दे सकते।

Subcollections आपको डेटा को पदानुक्रमित करने की अनुमति देते हैं, जिससे डेटा तक पहुंच आसान हो जाती है। में सभी संदेशों को प्राप्त करने के लिए roomA , आप subcollection करने के लिए एक संग्रह संदर्भ बना सकते हैं messages और उसके साथ सहभागिता की तरह आप किसी भी अन्य संग्रह संदर्भ।

Subcollections में दस्तावेज़ों में subcollections भी हो सकते हैं, जिससे आप आगे के घोंसले के डेटा को प्राप्त कर सकते हैं। आप अधिकतम 100 स्तरों तक डेटा को घोंसला कर सकते हैं।