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 ميغابايت)، ولكن بشكل عام، يمكنك التعامل مع المستندات سجلات JSON خفيفة الوزن.
المجموعات
تبقى المستندات في مجموعات، وهي ببساطة حاويات للمستندات. بالنسبة
على سبيل المثال، قد يكون لديك مجموعة users
لتضمين المستخدمين المختلفين، وكل منهم
يتم تمثيلها بمستند:
مستخدم
حبة واحدة (
)first : "Ada"
last : "Lovelace"
born : 1815
في الجولة
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore بلا مخطط، لذلك لديك الحرية الكاملة في ما يتعلق بما الحقول التي تضعها في كل مستند وأنواع البيانات التي تخزنها في هذه الحقول. يمكن أن تحتوي جميع المستندات ضمن المجموعة نفسها على حقول أو متاجر مختلفة أنواع مختلفة من البيانات في هذه الحقول. ومع ذلك، يُستحسن استخدام نفس الحقول وأنواع البيانات عبر مستندات متعددة، بحيث يمكنك الاستعلام عن المستندات بسهولة أكبر.
تحتوي المجموعة على مستندات ولا شيء آخر. لا يمكن أن تحتوي على البيانات الأولية بشكل مباشر. الحقول ذات القيم، ولا يمكن أن تحتوي على مجموعات أخرى. (راجع التسلسل الهرمي البيانات للحصول على شرح حول كيفية بناء بنية أكثر تعقيدًا البيانات في Cloud Firestore.)
أسماء المستندات داخل المجموعة فريدة من نوعها. يمكنك تقديم مثل أرقام تعريف المستخدمين، أو يمكنك السماح لـ "Cloud Firestore" بإنشاء أرقام تعريف عشوائية نيابةً عنك تلقائيًا
لا تحتاج إلى "إنشاء" أو "حذف" المجموعات. بعد إنشاء أول المستند في مجموعة ما، فإن المجموعة موجودة. إذا قمت بحذف جميع مستندات في مجموعة ما، فلن تكون موجودة.
المراجع
يتم التعرّف على كل مستند في Cloud Firestore بشكل فريد من خلال موقعه الجغرافي.
داخل قاعدة البيانات. أظهر المثال السابق مستندًا alovelace
داخل
المجموعة users
. للإشارة إلى هذا الموقع في رمزك، يمكنك إنشاء
المرجعية إليها.
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+KTX
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
انتقال
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+KTX
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
انتقال
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+KTX
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
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
Unity
DocumentReference documentRef = db.Document("users/alovelace");
#C
#C
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
لغة Ruby
البيانات الهرمية
لفهم آلية عمل بُنى البيانات الهرمية في Cloud Firestore، يمكنك استخدام تطبيق للمحادثات يتضمّن الرسائل وغرف المحادثة.
يمكنك إنشاء مجموعة باسم rooms
لتخزين غرف محادثة مختلفة:
غرفتان (
)غرفة واحدة (
) أname : "my chat room"
غرفة واحدة (
)...
الآن بعد أن أصبحت لديك غرف محادثة، حدِّد كيفية تخزين رسائلك. قد لا وتريد تخزينها في مستند غرفة الدردشة. المستندات في Cloud Firestore أن يكون خفيفًا وأن تحتوي غرفة المحادثة على عدد كبير من الرسائل. ومع ذلك، يمكنك إنشاء مجموعات إضافية ضمن مستند غرفة المحادثة، كمجموعات فرعية.
المجموعات الفرعية
أفضل طريقة لتخزين الرسائل في هذا السيناريو هي استخدام المجموعات الفرعية. حاسمة المجموعة الفرعية هي مجموعة مرتبطة بوثيقة محددة.
يمكنك إنشاء مجموعة فرعية تُسمى messages
لكل مستند غرفة في
مجموعة مختاراتك في rooms
:
غرفتان (
)غرفة واحدة (
) أname : "my chat room"
الرَّسَايِلْ
رسالة1
from : "alex"
msg : "Hello World!"
الرسالة 2
...
غرفة واحدة (
)...
في هذا المثال، يمكنك إنشاء مرجع إلى رسالة في المجموعة الفرعية. مع التعليمة البرمجية التالية:
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+KTX
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
انتقال
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
وتتفاعل معها كما تفعل مع أي مجموعة أخرى
مرجع المجموعة.
يمكن أن تحتوي المستندات الموجودة في المجموعات الفرعية على مجموعات فرعية أيضًا، مما يسمح لك مزيد من بيانات Nest. يمكنك دمج البيانات حتى 100 مستوى.