Native mode'da Firestore'a genel bakış

Yerel moddaki Firestore, iki işlem grubundan oluşur: Firestore Core işlemleri 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 belirgin 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 gecikmenin 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. İş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şlemler Enterprise sürümünde kullanılırken, dizine ekleme ve faturalandırma ile 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 yöntemi zincirleme söz dizimini (örneğin, .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şlemler, Standart sürümü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ır ancak 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 Birimleri tüketir. Yazma birimleri 1 KB'lık gruplar halinde ücretlendirilir. Belge yazmak için verilerle ilgili birimler ve güncellenen her dizin girişi için ek birimler kullanılır. Otomatik tek alanlı indekslemenin zorunlu olduğu Standart sürümün aksine, artık yazma maliyetlerini ve performansı optimize etmek için indekslenecek 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. Pipeline işlemleri, yüzlerce ek sorgu özelliği sunar. Ardışık düzen işlemleri aşağıdaki özelliklere sahiptir:

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

Ardışık bir dizi aşama tanımlanarak oluşturulan ve sırayla yürütülen sorgulara işlem hattı sorguları denir. 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

Pipeline 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(...), regex_match(...), add(...) ve str_contains(...) dahil olmak üzere, rastgele karmaşık where(...) ifadelerini ifade etmek için yüzlerce ek işlev desteklenir. Tüm bunlar, katı dizin şartları olmadan yapılır.
  • 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.

Gerçek Zamanlı ve Çevrimdışı Destek

Geliştiriciler, Realtime ve Offline ö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 profilleme: 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ü, 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 analizlerini destekler.
  • 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 ile Firestore Enterprise arasındaki farklar

Core ve Pipeline işlemleri arasındaki temel operasyonel fark, performansı ve maliyeti doğrudan etkileyen indekslemenin yönetiminde yatar.

Standart sürüm - Temel işlemler Enterprise sürümü - Core ve Pipeline 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 dizinler de dahil olmak üzere daha geniş bir dizin 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 kılavuzunda, verilerinizi ardışık düzen sorgularını destekleyecek şekilde nasıl modelleyeceğinizi öğrenin.