Bir Firebase Data Connect hizmeti üç ana bileşenden oluşur:
- Kendi SQL şemasına sahip temel bir PostgreSQL veritabanı
- Data Connect uygulama şeması (
.gql
dosyalarınızda beyan edilir) - Bir dizi bağlayıcı (
.gql
dosyalarınızda belirtilir,connector.yaml
dosyalarında yapılandırılır).
SQL şeması, verileriniz için doğru kaynağı ifade eder. Data Connect şeması, bağlayıcılarınızın bu verileri nasıl görebileceğini gösterir. Bağlayıcılar, istemcilerinizin bu verilere erişmek için kullanabileceği API'leri bildirir.
Data Connect hizmetinizi CLI ile dağıttığınızda SQL şemanızı taşıyacak, ardından Data Connect şemanızı güncelleyecek ve son olarak bağlayıcılarınızın her birini güncelleyeceksiniz.
Dağıtımla ilgili önemli kavramlar
Dağıtımı tam olarak anlamak için şemalar ve bağlayıcılarla ilgili temel kavramları bilmek önemlidir.
Şema dağıtımları
Data Connect şemasının dağıtımı, Cloud SQL veritabanınızın SQL şemasını etkiler. Data Connect, yeni bir veritabanıyla çalışıyor olsanız veya mevcut bir veritabanını tahrip etmeden uyarlamanız gerekse de dağıtım sırasında şemalarınızı taşımanıza yardımcı olur.
Data Connect şema taşımalarında iki farklı şema doğrulama modu vardır: strict (katı) ve compatible (uyumlu).
Katı mod doğrulama, uygulama şemasının güncellenebilmesi için veritabanı şemasının uygulama şemasıyla tam olarak eşleşmesini gerektirir. Data Connect şemanızda kullanılmayan tüm tablolar veya sütunlar veritabanından silinir.
Uyumluluk modu doğrulaması, uygulama şemasının güncellenebilmesi için önce veritabanı şemasının uygulama şemasıyla uyumlu olmasını gerektirir. Şemaları, tabloları veya sütunları kaldıran ek değişiklikler isteğe bağlıdır.
Uyumlu, şema taşımalarının yalnızca uygulama şemanızda referans verilen tabloları ve sütunları etkilediği anlamına gelir. Veritabanınızda uygulama şemananız tarafından kullanılmayan öğeler değiştirilmeden bırakılır. Bu nedenle, dağıtımdan sonra veritabanınızda kullanılmayan şu öğeler olabilir:
- Şemalar
- Tablolar
- Sütunlar
Bağlayıcı dağıtımları
Data Connect sorguları ve mutasyonları istemci kodu tarafından gönderilmez ve sunucuda yürütülmez. Bunun yerine, dağıtıldığında bu Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu, dağıtımın mevcut kullanıcıları etkileyebileceği anlamına gelir.
Data Connect, bağlayıcı güncellemelerinizdeki önemli değişikliklerin analizini Firebase CLI'ye entegre eder.
CLI, her bağlayıcıdaki değişiklikleri şemanıza göre analiz eder ve bağlayıcı değişiklikleriyle ilgili bir dizi değerlendirme mesajı yayınlar. Bu değişiklikler, istemci davranışını değiştirebilir (mesajlar uyarı düzeyindedir) veya istemci kodunun önceki sürümlerini bozabilir ya da bozacaktır (mesajlar bozma düzeyindedir).
Örneğin:
- İstemci davranışını değiştirebilecek bağlayıcı değişiklikleri arasında,
@retired
şema açıklaması olmayan bir sorgudan boş değer atanabilir bir alanın kaldırılması yer alır. - İstemcilerin bozulmasına neden olabilecek veya neden olacak bağlayıcı değişiklikleri arasında, varsayılan değeri olmayan bir boş değer atanabilir işlem değişkenini boş değer atanabilir olmayan bir değişkene dönüştürme ya da bir alanın veri türünü uyumsuz bir türle (ör.
String
ileInt
) değiştirme yer alır.
Uyarı düzeyinde ve hataya neden olan düzeyde senaryoların daha kapsamlı bir listesi KSA referans kılavuzunda verilmiştir.
Dağıtım iş akışını takip etme
Data Connect projesi üzerinde hem yerel proje dizininde hem de Firebase konsolunda çalışabilirsiniz.
Önerilen dağıtım akışı şunları içerir:
- Şu anda dağıtılmış şemaları ve bağlayıcıları
firebase dataconnect:services:list
ile listeleme. - Şema güncellemelerini yönetme
firebase dataconnect:sql:diff
ile Cloud SQL veritabanınız ve yerel Data Connect şeması arasındaki SQL şema farklılıklarını kontrol edin.- Gerekirse
dataconnect:sql:migrate
ile SQL şeması taşıma işlemini gerçekleştirin.
firebase deploy
komutunu çalıştırarak şema ve bağlantı dağıtımları gerçekleştirme (yalnızca şemanız, yalnızca bağlayıcılarınız veya kaynak kombinasyonları için).
Data Connect kaynaklarını dağıtma ve yönetme
Dağıtım yapmadan önce üretim kaynaklarını doğrulamanız önerilir.
firebase dataconnect:services:list
Yerel bir proje dizininde çalışırken genellikle şemanızı ve bağlayıcılarınızı üretime dağıtmak için firebase deploy
komutunu kullanırsınız. Bu komut, etkileşimli geri bildirim sağlar.
deploy
komutlarından herhangi birini kullanırken --only dataconnect
işareti, Data Connect dağıtımlarını projenizdeki diğer ürünlerden ayırmanıza olanak tanır.
Normal dağıtım
firebase deploy --only dataconnect
Bu normal dağıtımda, Firebase KSA, şemanızı ve bağlayıcılarınızı dağıtmaya çalışır.
Yeni şemanın mevcut bağlayıcıları bozmadığını doğrular. Değişiklik yaparken en iyi uygulamalara uyun.
Ayrıca, Data Connect şeması güncellenmeden önce SQL şemasının zaten taşındığını doğrular. Aksi takdirde, şemaları taşıma için gerekli adımları otomatik olarak uygulamanızı ister.
--force
işaret dağıtımı
firebase deploy --only dataconnect --force
Bağlayıcı veya SQL şeması doğrulamalarıyla ilgili bir sorun yoksa bunları yoksaymak için komutu --force
ile yeniden çalıştırabilirsiniz.
--force
dağıtımı, SQL şemasının Data Connect şemasıyla eşleşip eşleşmediğini kontrol etmeye, uyumsuzluk konusunda uyarmaya ve istemde bulunmaya devam eder.
Seçili kaynakları dağıtma
Daha ayrıntılı denetimle dağıtmak için --only
bağımsız değişkeniyle serviceId
işaretini kullanın. Belirli bir hizmet için yalnızca şema değişikliklerini dağıtmak istiyorsanız:
firebase deploy --only dataconnect:serviceId:schema
Belirli bir bağlayıcı ve hizmet için tüm kaynakları da dağıtabilirsiniz.
firebase deploy --only dataconnect:serviceId:connectorId
Son olarak, şemayı ve tüm bağlayıcıları tek bir hizmet için dağıtabilirsiniz.
firebase deploy --only dataconnect:serviceId
Dağıtımı geri alma
Manuel geri alma işlemi gerçekleştirmek için kodunuzun önceki bir sürümünü inceleyin ve dağıtın. Orijinal dağıtım yıkıcı değişiklikler içeriyorsa silinen verilerin tamamını kurtaramayabilirsiniz.
Veritabanı şemalarını taşıma
Hızlı prototipleme yapıyorsanız, şemalarla denemeler yapıyorsanız ve şema değişikliklerinizin yıkıcı olduğunu biliyorsanız değişiklikleri doğrulamak ve güncellemelerin nasıl yapıldığını denetlemek için Data Connect araçlarını kullanmayı planlayabilirsiniz.
SQL şema değişikliklerini karşılaştırma
Değişiklikleri doğrulayabilirsiniz:
firebase dataconnect:sql:diff
Virgülle ayrılmış bir hizmet listesi iletebilirsiniz.
Bu komut, bir hizmetin yerel şemasını ilgili Cloud SQL veritabanının mevcut şemasıyla karşılaştırır. Fark varsa bu farkı düzeltmek için çalıştırılacak SQL komutlarını yazdırır.
Değişiklikleri uygula
Memnun kaldığınızda ve şema Cloud SQL örneğindeki değişiklikleri dağıtmaya hazır olduğunuzda firebase dataconnect:sql:migrate
komutunu verin. Değişiklikleri onaylamanız istenir.
firebase dataconnect:sql:migrate [serviceId]
Etkileşimli ortamlarda SQL taşıma ifadeleri ve işlem istemleri gösterilir.
Yüksek düzey veya uyumlu modda taşıma
Yeni bir projede varsayılan şema doğrulama modu uygulanır. migrate
komutunun davranışı, uygulama şemanızın gerektirdiği tüm veritabanı şema değişikliklerini uygulamak ve ardından veritabanı şemanızın uygulama şemanızla tam olarak eşleşmesini sağlamak için şemaları, tabloları veya sütunları silen isteğe bağlı işlemleri onaylamanızı istemektir.
dataconnect.yaml
dosyanızı değiştirerek bu davranışı ayarlayabilirsiniz.
schemaValidation
anahtarının yorumunu kaldırın ve yalnızca gerekli değişikliklerin taşımalarda uygulanması için COMPATIBLE
değerini bildirin.
schemaValidation: "COMPATIBLE"
Alternatif olarak, davranışı STRICT
olarak ayarlayarak tüm şema değişikliklerinin uygulanmasını ve veritabanı şemanızın uygulama şemanızla eşleşmesini zorunlu kılabilirsiniz.
schemaValidation: "STRICT"
Daha fazla bilgi için Data Connect KSA referansına bakın.
Bağlayıcı güncelleme
firebase deploy
komutunu çalıştırdığınızda CLI, geçerli bağlayıcıların güncellenmesini başlatır ve geçerli uyarı düzeyinde (istemci davranışını etkileyebilir) ve bozucu düzeyde (muhtemelen veya kesinlikle bozucu) değerlendirme mesajları yayınlar.
Bağlayıcı güncellemelerini CLI ile yönetme
CLI, etkileşimli modda ve etkileşimli olmayan modda biraz farklı davranış gösterir.
Bekleyebileceğiniz gibi, etkileşimli modda KSA, tüm mesajları kabul etmenizi ister. --force
işaretini kullanarak bağlayıcı dağıtımını geçersiz kılabilir ve zorlayabilirsiniz.
# Prompts for acceptance for any warning-level or breaking-level changes prior # to deploying connectors. firebase deploy --only dataconnect
# Will deploy connectors without prompting. firebase deploy --only dataconnect --force
Etkileşimli olmayan modda, CLI, bağlantınızda hata seviyesinde değerlendirmeler olmadığı sürece bağlantınızı dağıtır. Aksi takdirde, komut dosyanız, değişikliklerin bozulduğu bir günlükle çıkar. --force
işaretini ayarlayarak geçersiz kılabilir ve dağıtabilirsiniz.
# Will deploy connectors with warning-level changes. If any breaking changes # are present, the deploy will fail and output any breaking changes firebase deploy --only dataconnect --non-interactive
# Will deploy the connectors from the previous step, if the same issues are present. firebase deploy --only dataconnect --non-interactive --force
Daha fazla bilgi için KSA referans kılavuzuna bakın.
Şemaları ve bağlayıcıları yönetmeyle ilgili en iyi uygulamalar
Firebase, Data Connectprojelerinizde uygulamanız için bazı yöntemler önerir.
Zarar veren değişiklikleri en aza indirme
- Firebase, Data Connect şema ve bağlayıcı dosyalarınızı kaynak kontrolünde tutmanızı önerir.
- Mümkün olduğunda, uyumluluğu bozan değişikliklerden kaçının. Bazı yaygın uyumluluk bozucu değişiklik örnekleri:
- Şemanızdan bir alanı kaldırma
- Şemanızdaki boş değer atanabilir bir alanı boş değer atanabilir olmaktan çıkarma (ör.
Int
->Int!
) - Şemanızdaki bir alanı yeniden adlandırma
- Şemanızdan bir alanı kaldırmanız gerekiyorsa etkiyi en aza indirmek için alanı birkaç dağıtıma bölmeyi düşünebilirsiniz:
- Öncelikle bağlayıcılarınızdaki alan referanslarını kaldırın ve değişikliği dağıtın.
- Ardından, uygulamalarınızı yeni oluşturulan SDK'ları kullanacak şekilde güncelleyin.
- Son olarak, şema
.gql
dosyanızdaki alanı kaldırın, SQL şemanızı taşıyın ve tekrar dağıtın.
Yeni veritabanlarıyla çalışırken katı modu kullanma
Yeni bir veritabanıyla Data Connect kullanıyorsanız, uygulama şemanızı aktif olarak geliştiriyorsanız ve veritabanı şemanızın uygulama şemanızla tam olarak uyumlu kalmasını istiyorsanız dataconnect.yaml
içinde schemaValidation: "STRICT"
belirtebilirsiniz.
Bu sayede, isteğe bağlı değişikliklerin de uygulanması sağlanır.
Veritabanınızda üretim verileri olduğunda uyumluluk modunu kullanın
Üretim verilerini içeren bir veritabanında değişiklik yapıyorsanız mevcut verilerin silinmemesi için şema taşıma işlemlerinizi uyumlu modda yürütmenizi öneririz. schemaValidation: "COMPATIBLE"
değerini dataconnect.yaml
içinde belirtebilirsiniz.
Uyumluluk modunda, veritabanınıza yalnızca gerekli şema taşıma değişiklikleri uygulanır.
DROP SCHEMA
,DROP TABLE
veDROP COLUMN
isteğe bağlı ifadeler olarak kabul edilir ve veritabanı şemanızda uygulama şemanızda tanımlanmamış şemalar, tablolar veya sütunlar olsa bile planınız için oluşturulmaz.- Veritabanı tablonuz, uygulama şemanızda bulunmayan ve boş olmayan bir sütun içeriyorsa tanımladığınız bağlayıcılarla tabloya veri eklemeye devam edebilmeniz için
NOT NULL
kısıtlaması kaldırılır.
Sırada ne var?
- Oluşturulan SDK'larla geliştirdiğiniz istemci kodunu dağıtma ve yönetme işlemleri Android, iOS, web ve Flutter kılavuzlarında açıklanmaktadır.
- Dağıtım araçları hakkında daha fazla bilgi için Data Connect KSA referansı ve Data Connect yapılandırma dosyası referansı bölümlerini inceleyin.