Cloud Firestore, belge odaklı bir NoSQL veritabanıdır. Bir SQL veritabanının aksine, tablo veya satır yoktur. Bunun yerine, verileri koleksiyonlar halinde düzenlenmiş belgelerde depolarsınız.
Her belge bir dizi anahtar/değer çifti içerir. Cloud Firestore, büyük küçük belge koleksiyonlarını depolamak için optimize edilmiştir.
Tüm belgeler koleksiyonlarda saklanmalıdır. Belgeler, her ikisi de dizeler gibi ilkel alanları veya listeler gibi karmaşık nesneleri içerebilen alt koleksiyonlar ve iç içe geçmiş nesneler içerebilir.
Koleksiyonlar ve belgeler dolaylı olarak Cloud Firestore'da oluşturulur. Bir koleksiyon içindeki bir belgeye veri atamanız yeterlidir. Koleksiyon veya belge yoksa Cloud Firestore bunu oluşturur.
Belgeler
Cloud Firestore'da depolama birimi belgedir. Bir belge, değerlerle eşlenen alanları içeren hafif bir kayıttır. Her belge bir adla tanımlanır.
Bir alovelace
temsil eden bir belge şöyle görünebilir:
first : "Ada"
last : "Lovelace"
born : 1815
Bir belgedeki karmaşık, iç içe geçmiş nesnelere haritalar denir. Örneğin, yukarıdaki örnekteki kullanıcının adını aşağıdaki gibi bir haritayla yapılandırabilirsiniz:
name :
first : "Ada"
last : "Lovelace"
born : 1815
Belgelerin JSON'a çok benzediğini fark edebilirsiniz. Aslında, temelde öyleler. Bazı farklılıklar vardır (örneğin, belgeler ekstra veri türlerini destekler ve boyut olarak 1 MB ile sınırlıdır), ancak genel olarak belgeleri hafif JSON kayıtları olarak değerlendirebilirsiniz.
Koleksiyonlar
Belgeler, yalnızca belgeler için kaplar olan koleksiyonlarda yaşar. Örneğin, her biri bir belgeyle temsil edilen çeşitli kullanıcılarınızı içeren bir users
koleksiyonunuz olabilir:
first : "Ada"
last : "Lovelace"
born : 1815
first : "Alan"
last : "Turing"
born : 1912
Cloud Firestore şemasız olduğundan, her bir belgeye hangi alanları koyacağınız ve bu alanlarda hangi veri türlerini depolayacağınız konusunda tamamen özgürsünüz. Aynı koleksiyondaki belgelerin tümü farklı alanlar içerebilir veya bu alanlarda farklı türde veriler depolayabilir. Ancak, belgeleri daha kolay sorgulayabilmeniz için birden çok belgede aynı alanları ve veri türlerini kullanmak iyi bir fikirdir.
Bir koleksiyon belgeler içerir ve başka hiçbir şey içermez. Değerleri olan ham alanları doğrudan içeremez ve başka koleksiyonları içeremez. (Cloud Firestore'da daha karmaşık verilerin nasıl yapılandırılacağına ilişkin bir açıklama için bkz . Hiyerarşik Veriler .)
Bir koleksiyondaki belgelerin adları benzersizdir. Kullanıcı kimlikleri gibi kendi anahtarlarınızı sağlayabilir veya Cloud Firestore'un sizin için otomatik olarak rastgele kimlikler oluşturmasına izin verebilirsiniz.
Koleksiyon "oluşturmanız" veya "silmeniz" gerekmez. Bir koleksiyondaki ilk belgeyi oluşturduktan sonra koleksiyon var olur. Bir koleksiyondaki tüm belgeleri silerseniz koleksiyon artık mevcut değildir.
Referanslar
Cloud Firestore'daki her belge, veritabanı içindeki konumuna göre benzersiz bir şekilde tanımlanır. Önceki örnek, users
koleksiyonu içinde bir belge alovelace
gösteriyordu. Kodunuzda bu konuma atıfta bulunmak için, buna bir referans oluşturabilirsiniz.
Web modular API
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users', 'alovelace');
Web namespaced API
var alovelaceDocumentRef = db.collection('users').doc('alovelace');
Süratli
let alovelaceDocumentRef = db.collection("users").document("alovelace")
Amaç-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
Piton
Python
C++
DocumentReference alovelace_document_reference = db->Collection("users").Document("alovelace");
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
DocumentReference documentRef = db.Collection("users").Document("alovelace");
C#
C#
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Yakut
Referans, yalnızca veritabanınızdaki bir konumu işaret eden hafif bir nesnedir. Orada veri olsun ya da olmasın bir referans oluşturabilirsiniz ve referans oluşturmak herhangi bir ağ işlemi gerçekleştirmez.
Koleksiyonlara referanslar da oluşturabilirsiniz:
Web modular API
import { collection } from "firebase/firestore"; const usersCollectionRef = collection(db, 'users');
Web namespaced API
var usersCollectionRef = db.collection('users');
Süratli
let usersCollectionRef = db.collection("users")
Amaç-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
Piton
Python
C++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
CollectionReference collectionRef = db.Collection("users");
C#
C#
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Yakut
Kolaylık sağlamak için, bir belgeye veya koleksiyona giden yolu bir eğik çizgi ( /
) ile ayrılmış yol bileşenleri ile bir dize olarak belirterek referanslar da oluşturabilirsiniz. Örneğin, alovelace
belgesine bir referans oluşturmak için:
Web modular API
import { doc } from "firebase/firestore"; const alovelaceDocumentRef = doc(db, 'users/alovelace');
Web namespaced API
var alovelaceDocumentRef = db.doc('users/alovelace');
Süratli
let aLovelaceDocumentReference = db.document("users/alovelace")
Amaç-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
Piton
Python
C++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
DocumentReference documentRef = db.Document("users/alovelace");
C#
C#
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Yakut
Hiyerarşik Veriler
Hiyerarşik veri yapılarının Cloud Firestore'da nasıl çalıştığını anlamak için mesajlar ve sohbet odaları içeren örnek bir sohbet uygulamasını düşünün.
Farklı sohbet odalarını depolamak için rooms
adlı bir koleksiyon oluşturabilirsiniz:
name : "my chat room"
...
Artık sohbet odalarınız olduğuna göre, mesajlarınızı nasıl saklayacağınıza karar verin. Bunları sohbet odasının belgesinde saklamak istemeyebilirsiniz. Cloud Firestore'daki belgeler hafif olmalıdır ve bir sohbet odası çok sayıda mesaj içerebilir. Ancak, sohbet odanızın belgesinde alt koleksiyonlar olarak ek koleksiyonlar oluşturabilirsiniz.
Alt koleksiyonlar
Bu senaryoda iletileri depolamanın en iyi yolu, alt koleksiyonları kullanmaktır. Bir alt koleksiyon, belirli bir belgeyle ilişkili bir koleksiyondur.
rooms
koleksiyonunuzdaki her oda belgesi için messages
adı verilen bir alt koleksiyon oluşturabilirsiniz:
name : "my chat room"
from : "alex"
msg : "Hello World!"
...
...
Bu örnekte, aşağıdaki kodla alt koleksiyondaki bir mesaja referans oluşturacaksınız:
Web modular API
import { doc } from "firebase/firestore"; const messageRef = doc(db, "rooms", "roomA", "messages", "message1");
Web namespaced API
var messageRef = db.collection('rooms').doc('roomA') .collection('messages').doc('message1');
Süratli
let messageRef = db .collection("rooms").document("roomA") .collection("messages").document("message1")
Amaç-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
Piton
Python
C++
DocumentReference message_reference = db->Collection("rooms") .Document("roomA") .Collection("messages") .Document("message1");
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
DocumentReference documentRef = db .Collection("Rooms").Document("RoomA") .Collection("Messages").Document("Message1");
C#
C#
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Yakut
Koleksiyonların ve belgelerin değişen düzenine dikkat edin. Koleksiyonlarınız ve belgeleriniz her zaman bu modeli takip etmelidir. Bir koleksiyondaki bir koleksiyona veya bir belgedeki bir belgeye referans veremezsiniz.
Alt koleksiyonlar, verileri hiyerarşik olarak yapılandırmanıza izin vererek verilere erişimi kolaylaştırır. roomA
içindeki tüm mesajları almak için, alt koleksiyon messages
bir koleksiyon referansı oluşturabilir ve diğer koleksiyon referanslarında yaptığınız gibi onunla etkileşim kurabilirsiniz.
Alt koleksiyonlardaki belgeler, alt koleksiyonları da içerebilir ve bu da verileri daha fazla iç içe geçirmenize olanak tanır. Verileri 100 düzey derinliğe kadar yuvalayabilirsiniz.