Firestore Native Mode'a genel bakış

Firestore Yerel Modu, iki işlem grubundan oluşur: Firestore Core ve Firestore Pipeline işlemleri.

Firestore Core işlemleri, standart belge oluşturma, okuma, güncelleme ve silme (CRUD) işlevlerinin yanı sıra gerçek zamanlı dinleme sorguları ve çevrimdışı kalıcılık için yerleşik destek sağlar. Bu sürümdeki önemli bir operasyonel fark, dizinlerin isteğe bağlı olması ve tek alanlar için otomatik olarak oluşturulmamasıdır. Bu sayede sorgular önceden dizin yapılandırması olmadan yürütülebilir ancak dizinlenmemiş sorgular varsayılan olarak koleksiyonun tamamını tarar. Bu durum, veri kümesi büyüdükçe gecikme süresinin ve maliyetlerin artmasına neden olabilir.

Firestore Pipeline işlemleri, olası sorgu aralığını önemli ölçüde genişletmek için gelişmiş bir sorgu motoru üzerine kurulu olan Firestore Enterprise sürümünün temel bir özelliğidir. Firestore işlem hattı işlemleri, esnek bir sorgu söz dizimi ve dizinlerin isteğe bağlı olduğu ve otomatik olarak oluşturulmadığı ayrı bir dizin oluşturma yöntemi kullanır. Bu sayede uygulamalar için gelişmiş veri alma işlemleri yapılabilir.

Firestore Core işlemlerinin özellikleri

Temel işlemler, standart CRUD işlemlerine ve gerçek zamanlı dinleme sorgularına izin verir. Ancak bu işlemleri Enterprise sürümünde kullanırken dizine ekleme ve faturalandırmayla ilgili temel davranış, Standard sürümüne kıyasla önemli ölçüde değişir.

İşlevsellik ve Süreklilik

Temel işlemler, Standard sürümünde kullanılan tanıdık yöntem zincirleme söz dizimini (ör. .where(), .orderBy()) korur. Bu işlemler, mobil ve web istemcileri için gerçek zamanlı dinleme sorgularını ve çevrimdışı kalıcılığı destekler. Bu işlemlerin standart işlemsel iş yükleri, basit aramalar ve mevcut uygulama kodu taşıma için kullanılması önerilir.

Özel dizine ekleme

Enterprise sürümündeki temel işlem, Standard sürümünün aksine tek alanlı dizinleri otomatik olarak oluşturmaz. Dizinler isteğe bağlıdır ve sorgu yürütmek için gerekli değildir. Belirli bir dizin eksikse sorgu, tam koleksiyon taraması gerçekleştirir. Dizinlenmemiş sorgular hızlı prototip oluşturmaya olanak tanırken veri kümesi büyüdükçe daha yavaş çalışabilir ve daha fazla maliyete neden olabilir. Geliştiriciler, sorgu performansını optimize etmek ve okuma birimi tüketimini azaltmak için dizinleri manuel olarak oluşturmalıdır.

Faturalandırma Modeli (Birim Bazlı)

Okuma birimleri, belge sayısına göre değil 4 KB'lık dilimler halinde ücretlendirilir. Büyük bir koleksiyonu tarayan dizine eklenmemiş bir sorgu, tüm dokümanlarda taranan toplam bayt sayısına göre okuma birimi tüketir. Yazma birimleri 1 KB'lık gruplar halinde ücretlendirilir. Bir doküman yazmak için verilerle ilgili birimler ve güncellenen her dizin girişi için ek birimler kullanılır. Otomatik tek alanlı dizine eklemeyi zorunlu kılan Standart sürümün aksine, artık yazma maliyetlerini ve performansı optimize etmek için dizine eklenecek belirli alanları seçebilirsiniz.

Firestore ardışık düzen işlemlerinin özellikleri

Pipeline işlemleri içeren Firestore Enterprise sürümü, Firestore Standard sürümünün mevcut sınırlamalarının çoğunu ortadan kaldıran gelişmiş bir sorgu motoru kullanır. Firestore Pipeline işlemleri, yüzlerce ek sorgu özelliği sağlar. Firestore Pipeline işlemleri aşağıdaki özelliklere sahiptir:

Aşamaya Dayalı Birleştirilebilir Söz Dizimi

Ardışık düzen sorguları, sırayla yürütülen bir dizi sıralı aşamayı tanımlayarak oluşturulur. Bu sayede, daha önce mümkün olmayan toplama sonucuna göre filtreleme gibi karmaşık işlemler yapılabilir.

Aşağıdaki örnekte, son bir ay içinde görüntülenen benzersiz ürün kimliklerinin sayısını bulan bir kanal sorgusu gösterilmektedir:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

Genişletilmiş Özellikler

Pipelines sorgusu, aşağıdakiler de dahil olmak üzere çok sayıda yeni özellik sunar:

  • Toplamalar: Rastgele gruplandırma alanlarıyla birlikte yeni toplama işlevleri (ör. sum(...), min(...) ve count_distinct(...)) desteği.
  • Karmaşık filtreleme: where(...) ifadelerini rastgele karmaşık şekilde ifade etmek için yüzlerce ek işlev desteği (regex_match(...), add(...) ve str_contains(...) dahil). Tüm bunlar, katı dizin şartları olmadan yapılabilir.
  • Kısmi Okumalar / Projeksiyonlar: select(...), remove_fields(...) ve diğer birçok belge işleme aşamasını kullanarak belgelerin dinamik alt kümelerini alın.

Bu özellikler hakkında daha fazla bilgi edinmek için Verileri Pipeline işlemleriyle sorgulama başlıklı makaleyi inceleyin.

Anında ve Çevrimdışı Destek

Geliştiriciler, Gerçek Zamanlı ve Çevrimdışı özelliklerinden yararlanmak için Firestore Enterprise sürümünde Firestore Core işlemlerini kullanabilir.

İstemci ve Araç Entegrasyonu

Enterprise sürümü, Pipeline sorgularıyla etkileşim kurmak ve bunları yönetmek için özel özellikler içerir:

  • Sorgu açıklama ve profil oluşturma: Sorgunun kaç okuma veya yazma birimi kullandığını anlamak ve yürütülmesini analiz etmek için Sorgu Açıklama sonuçlarını kullanabilirsiniz.
  • Sorgu analizleri: Enterprise sürümünde, veritabanınızda çalıştırılan en iyi sorgular ve bunların performans özellikleri hakkında görünürlük sağlayarak performansı ve maliyeti iyileştirmek için dizinlerin nerede oluşturulabileceğini belirlemenize yardımcı olan sorgu analizleri desteklenir.
  • Yeni dizin türleri: Enterprise sürümü için seyrek, seyrek olmayan ve benzersiz dizinler gibi dizin türleri de dahil olmak üzere özel dizinler oluşturabilirsiniz. Ayrıca Enterprise veritabanları için vektör araması dizinleri oluşturmayı ve düzenlemeyi de destekler.

Firestore Standard ve Firestore Enterprise arasındaki farklar

Core ve Pipeline işlemleri arasındaki temel operasyonel fark, dizine ekleme yönetiminde yatar. Bu durum, performansı ve maliyeti doğrudan etkiler.

Firestore Standard - Temel işlemler Firestore Enterprise - Temel ve işlem hattı işlemleri
Dizine ekleme koşulu Sorgular için dizinler gereklidir.

Tek tek alanların dizinleri otomatik olarak oluşturulur. Daha karmaşık sorgular ise manuel olarak yapılandırılması gereken birleşik dizinleri veya koleksiyon grubu dizinlerini kullanır.

Dizinler gerekli değildir ve bu nedenle sorgular için isteğe bağlıdır.

Dizinleri gerektiği şekilde tanımlarsınız. Enterprise sürümü, seyrek olmayan/seyrek ve benzersiz indeksler de dahil olmak üzere daha geniş bir indeks türü aralığını da destekler.

Performans Dizinlenmiş sorgular: Performans ve maliyet, sonuç kümenizin boyutuyla orantılıdır.

Dizinlenmemiş sorgular: Performans ve maliyet, veri kümenizin boyutuyla birlikte ölçeklenir.

Dizinlenmiş sorgular: Performans ve maliyet, sonuç kümenizin boyutuyla orantılıdır.

Dizin oluşturmak ve sorgularınızın performansını ve maliyetini iyileştirmek için Sorgu Açıklama ve Sorgu Analizleri araçlarını kullanmanızı öneririz.

Depolama Maliyeti Etkisi Otomatik dizinler ve birleşik dizinler nedeniyle depolama ek yükü oluşur. Her alan için otomatik olarak dizin oluşturulmadığından depolama maliyetlerinden tasarruf edersiniz.
Maliyet Esası Belge okuma, yazma ve silme işlemi başına ücret alınır. Okuma birimi (4 KB'lık dilimler) ve yazma birimi (1 KB'lık dilimler) başına ücretlendirilir. Dizin girişleri yazma işlemleri yoğunluk birimi tüketir.

Yeni fiyatlandırma hakkında örnekler üzerinden bilgi edinin.

Güvenlik Kuralları Güvenlik kuralları, okuma/yazma izinlerini doğrulayarak koleksiyonları korur. Güvenlik kuralları, okuma/yazma izinlerini doğrulayarak koleksiyonları korur. Veri Modeli rehberinden, verilerinizi işlem hattı sorgularını destekleyecek şekilde nasıl modelleyeceğinizi öğrenebilirsiniz.