Cloud Firestore, NoSQL, belge tabanlı bir veritabanıdır. SQL veritabanının aksine tablo veya satır yok. Bunun yerine, verilerinizi sizin için saklanmış olan dokümanlarda koleksiyonlar halinde düzenlenir.
Her doküman bir dizi anahtar/değer çifti içerir. Cloud Firestore büyük doküman koleksiyonlarını depolamak için optimize edilmiştir.
Tüm dokümanlar koleksiyonlarda depolanmalıdır. Dokümanlar şunları içerebilir: alt koleksiyonlar ve iç içe yerleştirilmiş nesneler (her ikisi de temel alanlar içerebilir) dizeler veya listeler gibi karmaşık nesneler gibi.
Koleksiyonlar ve dokümanlar Cloud Firestore ürününde dolaylı olarak oluşturulur. Bir koleksiyondaki dokümana veri atamanız yeterlidir. Koleksiyon doküman yoksa Cloud Firestore dokümanı oluşturur.
Dokümanlar
Cloud Firestore ürününde, depolama birimi dokümandır. Belge, değerlerle eşlenen alanlar içeren basit kayıt. Her belge, bir adla tanımlanır.
alovelace
kullanıcısını temsil eden bir doküman aşağıdaki gibi görünebilir:
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
Bir dokümandaki karmaşık, iç içe yerleştirilmiş nesnelere harita adı verilir. Örneğin herkesin Kullanıcı adını yukarıdaki örnekten yola çıkarak bir haritayla şu şekilde yapılandırın:
alovelace
name :
first : "Ada"
last : "Lovelace"
born : 1815
Dokümanların JSON'a çok benzediğini fark edebilirsiniz. Öyle diyebiliriz. Bazı farklılıklar vardır (örneğin, dokümanlar ek veri türlerini destekler ve dosya boyutu 1 MB ile sınırlıdır), ancak genel olarak dokümanları basit JSON kayıtları.
Koleksiyonlar
Dokümanlar, yalnızca doküman kapsayıcıları olan koleksiyonlarda bulunur. Örneğin,
Örneğin, her biri çeşitli kullanıcılarınızı içeren bir users
koleksiyonunuz olabilir
bir belgeyle temsil ediliyor:
kullanıcı
alovelace
first : "Ada"
last : "Lovelace"
born : 1815
turu
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore şemasız olduğundan hangi öğelerin alanları ve bu alanlarda hangi veri türlerini depoladığınızı gösterir. Aynı koleksiyondaki dokümanların tümü farklı alanlar veya depo içerebilir veri türlerini konuşacağız. Ancak bunun için birden çok belgede aynı alanları ve veri türlerini kapsar. Böylece, daha kolay hale getirir.
Koleksiyonlar yalnızca belgeler içerir ancak başka hiçbir öğe içermez. Doğrudan RAW içeremez alanları değer içerir ve diğer koleksiyonları içeremez. (Bkz. Hiyerarşik Veriler'i tıklayın. verileri Cloud Firestore içindedir.)
Bir koleksiyondaki dokümanların adları benzersizdir. Kendi URL'lerinizi sağlayabilirsiniz anahtarları (kullanıcı kimlikleri gibi) seçebilir veya Cloud Firestore ürününün rastgele kimlikler oluşturmasına izin verebilirsiniz sizin için otomatik olarak.
"Oluşturmanız" gerekmez veya "sil" koleksiyonlar oluşturun. İlk dosyayı oluşturduktan sonra doküman bir koleksiyonda bulunuyorsa koleksiyon var demektir. Tüm doküman koleksiyonda bulunuyorsa bu koleksiyon artık mevcut değildir.
Referanslar
Cloud Firestore hizmetindeki her doküman, konumuyla benzersiz şekilde tanımlanır
söz konusu olabilir. Önceki örnekte, içinde alovelace
başlıklı bir doküman gösterildi
users
koleksiyonu. Kodunuzda bu konuma referans vermek için,
referansta bulunabilir.
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");
Java
Python
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Ruby
Referans, yalnızca projenizdeki bir konuma işaret eden hafif bir nesnedir Burada veri olup olmamasına bakılmaksızın bir referans oluşturabilir ve referans oluşturulması herhangi bir ağ işlemi gerçekleştirmez.
Ayrıca koleksiyonlar için referanslar oluşturabilirsiniz:
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");
Java
Python
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
CollectionReference collectionRef = db.Collection("users");
C#
C#
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Ruby
Kolaylık sağlaması açısından aynı zamanda bir
yol bileşenleri ileriye doğru ayrılmış şekilde, dize olarak doküman veya koleksiyon
eğik çizgi (/
). Örneğin, alovelace
dokümanına referans oluşturmak için:
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");
Java
Python
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Ruby
Hiyerarşik Veriler
Cloud Firestore ürününde hiyerarşik veri yapılarının işleyiş şeklini anlamak için mesajlar ve sohbet odaları içeren örnek bir sohbet uygulaması düşünün.
Farklı sohbet odalarını depolamak için rooms
adında bir koleksiyon oluşturabilirsiniz:
oda
oda A
name : "my chat room"
oda B
...
Artık sohbet odalarınız olduğuna göre mesajlarınızı nasıl depolayacağınıza karar verebilirsiniz. B bunları sohbet odasının dokümanında depolamak istiyorsunuz. Cloud Firestore klasöründeki dokümanlar basit olmalıdır ve bir sohbet odası çok sayıda mesaj içerebilir. Ancak, sohbet odanızın dokümanında ek koleksiyonlar oluşturabilirsiniz. bunları alt koleksiyon olarak düzenleyebilirsiniz.
Alt koleksiyonlar
Bu senaryoda, iletileri depolamanın en iyi yolu alt koleksiyonlar kullanmaktır. CEVAP alt koleksiyon, belirli bir dokümanla ilişkili koleksiyonlardır.
Şuradaki her oda dokümanı için messages
adlı bir alt koleksiyon oluşturabilirsiniz:
rooms
koleksiyonunuz:
oda
oda A
name : "my chat room"
. mesaj
. mesaj1
from : "alex"
msg : "Hello World!"
. mesaj2
...
oda B
...
Bu örnekte, alt koleksiyondaki bir mesaja referans aşağıdaki kodla değiştirin:
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");
Java
Python
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Ruby
Koleksiyonların ve dokümanların alternatif kalıbına dikkat edin. Koleksiyonlarınız ve dokümanlar her zaman bu kalıbı izlemelidir. Bir koleksiyona referans veremezsiniz kolayca erişilebilir hale getirebilirsiniz.
Alt koleksiyonlar, verileri hiyerarşik olarak yapılandırmanıza olanak tanır. Böylece,
erişim. roomA
uygulamasındaki tüm mesajları almak için koleksiyon referansı oluşturabilirsiniz
ve diğer alt koleksiyona benzer şekilde bu alt koleksiyonla messages
koleksiyonu referansını gösterir.
Alt koleksiyonlardaki dokümanlar alt koleksiyonlar da içerebilir. daha fazla iç içe yerleştirme. Verileri 100 seviye derine kadar iç içe yerleştirebilirsiniz.