Bu hızlı başlangıç kılavuzunda, uygulamanızda üretim SQL örneğiyle Firebase Data Connect'ü nasıl oluşturacağınızı öğreneceksiniz.
Firebase konsolunda şunları yapabilirsiniz:
- Firebase Data Connect dosyasını Firebase projenize ekleyin.
- Şema Asistanı'nı kullanarak Firebase konsolunda bir uygulama için şema oluşturun ve dağıtın.
- Uygulamanız için bir Cloud SQL örneği hazırlayın.
- Gemini Code Assist ile veritabanınızı örnek veri ile doldurun.
Ardından, yerel geliştirme ortamınızda şunları yaparsınız:
- Üretim örneğinizle çalışacak bir Visual Studio Code uzantısı içeren geliştirme aracısı oluşturun.
- Yerel ortamınızı konsolda oluşturduğunuz öğelerle senkronize edin.
- Uygulamanızda kullanılacak bir sorguyu uygulamanıza yardımcı olması için uzantı araçlarını kullanın.
- Güçlü şekilde yazılmış SDK'lar oluşturun ve bunları uygulamanızda kullanın.
- Son şemanızı, sorgunuzu ve verilerinizi buluta dağıtın.
Console akışı: Şemanızı tasarlayın ve veritabanınıza dağıtın
- Henüz oluşturmadıysanız bir Firebase projesi oluşturun.
- Firebase konsolunda Proje ekle'yi tıklayın ve ekrandaki talimatları uygulayın.
- Firebase konsolunun Data Connect bölümüne gidin.
- Gemini'yi kullanmaya başlayın düğmesini tıklayın.
- Görünen Şema Oluşturucu iş akışı panelinde bir uygulamayı açıklayın. Böylece Gemini, sizinle birlikte bir GraphQL şeması oluşturmanıza yardımcı olabilir.
- GraphQL şemasını inceleyin ve ardından Yükselt ve dağıt'ı tıklayın.
Projenizi Blaze planına yükseltin. Bu işlem, PostgreSQL için Cloud SQL örneği oluşturmanıza olanak tanır.
Yeni Cloud SQL örneği oluştur'u seçin. Görünen iletişim kutusunda, PostgreSQL için Cloud SQL veritabanınız için bir konum ve adlandırma seçin.
Uygulama şemanız, bu şemaya karşılık gelen bir PostgreSQL veritabanıyla birlikte dağıtılır.
Konsolda akış: Mutasyon oluşturmak ve veritabanınızı doldurmak için Firebase'te Gemini'yi kullanın
Önceki adımı tamamlayarak alakalı varlık türlerinden oluşan bir Data Connect şema oluşturdunuz ve bunu üretime dağıttınız. Yani, ilgili tabloları içeren bir PostgreSQL veritabanı da oluşturulup dağıtıldı.
Tablolarınızdan birini güncellemek için doğal dil girişlerinizi kullanarak bir GraphQL mutasyonu ve güncellemelerinizi onaylamak için bir sorgu tanımlamanıza yardımcı olması amacıyla Firebase'te Gemini'yi kullanabilirsiniz.
Veriler sekmesini açın.
GraphQL yazmama yardım et pen_spark simgesini tıklayın ve görünen kutuya girişinizi yazın.
Örneğin:
Add data for three sample products to my app.
Oluştur'u tıklayın. Mutasyon döndürülür.
Çıktıyı inceleyin. Gerekirse istemi hassaslaştırmak için Düzenle'yi ve ardından Yeniden oluştur'u tıklayın.
Ardından, mutasyonu veri düzenleyiciye eklemek için Ekle'yi tıklayın.
Çalıştır'ı tıklayın.
Mutasyonu çalıştırdığınızda veriler, PostgreSQL veritabanınızdaki ilgili tabloya yazılır. Depolanan verileri görüntülemek için konsolda sorgu oluşturabilirsiniz:
Sorgu oluşturmak için GraphQL yazmama yardım et pen_spark seçeneğini kullanarak önceki adımları tekrarlayın.
Görünen kutuya girişinizi yazın.
Örneğin:
Query data for all sample products in my app.
Oluştur'u, ardından Çalıştır'ı tıklayın.
Yerel akış: Geliştirme araçlarını seçme
Dağıtılan veritabanınızda veri bulunduğuna göre yerel geliştirme ortamınızda şemanızın ve bağlayıcılarınızın geliştirilmesine devam edebilirsiniz.
Öncelikle yerel bir ortam oluşturmanız gerekir. Data Connect, geliştirme araçlarını yüklemek için iki yöntem sunar.
Ön koşullar
Bu hızlı başlangıç kılavuzunu kullanmak için aşağıdakilere ihtiyacınız vardır.
- Visual Studio Code.
- Windows için nvm-windows, macOS veya Linux için nvm kullanılarak Node.js kurulumu.
- Bir Firebase projesi. Henüz oluşturmadıysanız Firebase konsolunda hesap oluşturun.
Yerel akış: Geliştirme ortamını ayarlama
- Yerel projeniz için yeni bir dizin oluşturun.
- VS Code'u yeni dizinde açın.
- Visual Studio Code Marketplace'ten Firebase Data Connect uzantısını yükleyin.
Yerel akış: Proje dizininizi ayarlama
Yerel projenizi ayarlamak için proje dizininizi ilk kullanıma hazırlayın. IDE penceresinde, sol paneldeki Firebase simgesini tıklayarak Data Connect VS Code uzantısı kullanıcı arayüzünü açın:
- Google ile oturum aç düğmesini tıklayın.
- Firebase projesi bağla düğmesini tıklayın ve daha önce konsolda oluşturduğunuz projeyi seçin.
firebase init'i çalıştır düğmesini tıklayın ve akışı tamamlayın.
Emülatörleri başlat düğmesini tıklayın.
Yerel akış: Şemanızı yerel ortamda bulma
Önceki bölümdeki firebase init
adımı, dağıttığınız şemayı konsoldan yerel geliştirme ortamınızla senkronize etti.
Şemanızı bulun: Firebase proje dizininizdeki /dataconnect/schema/schema.gql
dosyasında bulunur.
Yerel akış: Şemanızla çalışma
Şema örneği: Film
Data Connect'te GraphQL alanları sütunlarla eşlenir. Movie
türünde büyük olasılıkla id
, title
, imageUrl
ve genre
bulunur.
Data Connect, String
ve UUID
ilkel veri türlerini tanır.
# File `/dataconnect/schema/schema.gql`
# By default, a UUID id key will be created by default as primary key.
type Movie @table {
id: UUID! @default(expr: "uuidV4()")
title: String!
imageUrl: String!
genre: String
}
Şema örneği 1:1 tablo: MovieMetadata
Filmler ile film meta verilerini modelleyebilirsiniz.
Örneğin, schema.gql
alanına Gemini tarafından oluşturulan aşağıdaki snippet'i veya yorum kodunu ekleyebilirsiniz.
# Movie - MovieMetadata is a one-to-one relationship
type MovieMetadata @table {
# This time, we omit adding a primary key because
# you can rely on Data Connect to manage it.
# @unique indicates a 1-1 relationship
movie: Movie! @unique
# movieId: UUID <- this is created by the above reference
rating: Float
releaseYear: Int
description: String
}
movie
alanının Movie
türüyle eşleştirildiğini unutmayın.
Data Connect, bunun Movie
ile MovieMetadata
arasındaki bir ilişki olduğunu anlıyor ve bu ilişkiyi sizin için yönetecektir.
Veri Bağlantısı şemaları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Yerel akış: Tablolarınıza daha fazla veri ekleme
IDE düzenleyici panelinde, /dataconnect/schema/schema.gql
içindeki GraphQL türlerinin üzerinde CodeLens düğmelerinin göründüğünü görebilirsiniz. Konsolda yaptığınız gibi, üretim veritabanınıza veri eklemek için bir mutasyon oluşturabilirsiniz.
Yerel olarak çalışırken bir tabloya veri eklemek için:
schema.gql
dosyasında, türlerinizden birinin (uygulamanızın yapısına bağlı olarakMovie
,Product
,Account
gibi) beyanının üzerindeki Veri ekle düğmesini tıklayın.
- Çalışma dizininize
<type>_insert.qgl
adlı yeni bir dosya (ör.Movie_insert.gql
veyaProduct_insert.gql
) eklenir. Verileri ilgili türün alanlarına sabit kodlayın. - Çalıştır (Üretim) düğmesini tıklayın.
- Diğer tablolara kayıt eklemek için önceki adımları tekrarlayın.
Verilerin eklendiğini hızlıca doğrulamak için:
schema.gql
dosyasına geri dönüp tür beyanının üzerindeki Verileri oku düğmesini tıklayın.- Elde edilen
<type>_read.gql
dosyasında (ör.Product_read.gql
) sorguyu yürütmek için Çalıştır (Üretim) düğmesini tıklayın.
Veri Bağlantısı mutasyonları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Yerel akış: Sorgunuzu tanımlayın
Şimdi eğlenceli kısım olan sorgulara geçelim. Geliştirici olarak GraphQL sorguları yerine SQL sorguları yazmaya alışkın olduğunuzdan bu durum başlangıçta biraz farklı gelebilir. Ancak GraphQL, ham SQL'den çok daha kısa ve tür açısından güvenlidir. VS Code uzantımız da geliştirme deneyimini kolaylaştırır.
Sorgu uygulamak için CodeLens'imizle oluşturulan bir sorguyu uyarlayabilirsiniz:
/dataconnect/schema/schema.gql
'te, bir türün (Movie
,Product
,Account
vb.) üstündeki Verileri oku CodeLens düğmesini tıklayın.- Elde edilen
<type>_read.gql
dosyasında Çalıştır (Üretim) düğmesini tıklayarak sorguyu test edin. - Çalışan sorguyu
/dataconnect/connector/queries.gql
'ye kopyalayın. Bu sorguyu dağıtılabilir hale getirmek için benzersiz bir ad belirtin.
Örneğin, aşağıdaki genel örnekte
query_name
,ListMovies
,ListProducts
veyaListAccounts
olabilir.
# File `/dataconnect/connector/queries.gql`
# @auth() directives control who can call each operation.
query <query_name> @auth(level: PUBLIC) {
<table_name> {
<field_1>
<field_2>
<field_3>
}
}
Yakındaki CodeLens düğmesini kullanarak sorguyu yürütün.
Veri Bağlantısı sorguları hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Yerel akış: SDK oluşturma
- SDK'yı uygulamaya ekle düğmesini tıklayın.
Görünen iletişim kutusunda, uygulamanızın kodunu içeren bir dizin seçin. Data Connect SDK kodu oluşturulur ve buraya kaydedilir.
Uygulama platformunuzu seçin, ardından SDK kodunun seçtiğiniz dizinde hemen oluşturulduğunu unutmayın.
Yerel akış: Şemanızı ve sorgunuzu üretime dağıtın
Bir geliştirme iterasyonunda çalıştınız. Artık şemanızı ve sorgularınızı, tıpkı şemanızda yaptığınız gibi Firebase uzantısı kullanıcı arayüzü veya Firebase CLI ile sunucuya dağıtabilirsiniz.
IDE penceresindeki VS Code uzantısı kullanıcı arayüzünde Üretime dağıt düğmesini tıklayın.
Dağıtıldıktan sonra, şema güncellemelerinin (varsa) ve işlemlerin buluta yüklendiğini doğrulamak için Firebase konsoluna gidin. Şemayı görüntüleyebilir ve işlemlerinizi konsolda da çalıştırabilirsiniz. PostgreSQL için Cloud SQL örneği, oluşturulan nihai şemasıyla ve verileriyle güncellenir.
Veri Bağlantısı emülatörünü kullanma hakkında daha fazla bilgiyi dokümanda bulabilirsiniz.
Yerel akış: Sorgunuzu bir uygulamadan çağırmak için SDK'ları kullanın
Güncellenen şemanız (varsa) ve sorgunuz üretime dağıtıldığına göre, ListMovies
sorgunuza çağrı uygulamak için Data Connect tarafından oluşturulan SDK'yı kullanabilirsiniz.
Web
- Firebase'i web uygulamanıza ekleyin.
React uygulamanızın ana dosyasında:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
import React from 'react'; import ReactDOM from 'react-dom/client'; // Generated queries. // Update as needed with the path to your generated SDK. import { listMovies, ListMoviesData } from '@movie-app/movies'; function App() { const [movies, setMovies] = useState<ListMoviesData['movies']>([]); useEffect(() => { listMovies.then(res => setMovies(res.data)); }, []); return ( movies.map(movie => <h1>{movie.title}</h1>); ); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />);
Swift
- Firebase'i iOS uygulamanıza ekleyin.
Oluşturulan SDK'yı kullanmak için Xcode'da bağımlılık olarak yapılandırın.
Xcode'un üst gezinme çubuğunda Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle'yi seçin ve oluşturulan
Package.swift
dosyasını içeren klasörü seçin.Uygulamanızın ana temsilcisinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
import SwiftUI import FirebaseDataConnect // Generated queries. // Update as needed with the package name of your generated SDK. import <CONNECTOR-PACKAGE-NAME> let connector = DataConnect.moviesConnector struct ListMovieView: View { @StateObject private var queryRef = connector.listMovies.ref() var body: some View { VStack { Button { Task { do { try await refresh() } catch { print("Failed to refresh: \(error)") } } } label: { Text("Refresh") } // use the query results in a view ForEach(queryRef.data?.movies ?? []) { movie in Text(movie.title) } } } @MainActor func refresh() async throws { _ = try await queryRef.execute() } struct ContentView_Previews: PreviewProvider { static var previews: some View { ListMovieView() } }
Kotlin Android
- Firebase'i Android uygulamanıza ekleyin.
Oluşturulan SDK'yı kullanmak için Data Connect'ü Gradle'de bağımlılık olarak yapılandırın.
app/build.gradle.kts
'nizdeplugins
vedependencies
öğelerini güncelleyin.plugins { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest as of March 14, 2025. // Note, however, that the version of kotlin("plugin.serialization") must, // in general, match the version of kotlin("android"). id("com.android.application") version "8.9.0" id("com.google.gms.google-services") version "4.4.2" val kotlinVersion = "2.1.10" kotlin("android") version kotlinVersion kotlin("plugin.serialization") version kotlinVersion } dependencies { // Use whichever versions of these dependencies suit your application. // The versions shown here were the latest versions as of March 14, 2025. implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta04") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1") implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3") // These dependencies are not strictly required, but will very likely be used // when writing modern Android applications. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.activity:activity-ktx:1.10.1") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") implementation("com.google.android.material:material:1.12.0") }
Uygulamanızın ana etkinliğinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.launch private val connector = com.myapplication.MoviesConnector.instance class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textView: TextView = findViewById(R.id.text_view) lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { val result = connector.listMovies.runCatching { execute { } } val newTextViewText = result.fold( onSuccess = { val titles = it.data.movies.map { it.title } "${titles.size} movies: " + titles.joinToString(", ") }, onFailure = { "ERROR: ${it.message}" } ) textView.text = newTextViewText } } } }
Flutter
- Firebase'i Flutter uygulamanıza ekleyin.
- flutterfire CLI'yi
dart pub global activate flutterfire_cli
yükleyin. flutterfire configure
'ü çalıştırın.- Uygulamanızın ana işlevinde:
- Oluşturduğunuz SDK'yı içe aktarın
- Data Connect yöntemlerini çağırabilirsiniz.
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
// Generated queries.
// Update as needed with the path to your generated SDK
import 'movies_connector/movies.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(children: [
ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 200),
child: FutureBuilder(
future: MoviesConnector.instance.listMovies().execute(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
scrollDirection: Axis.vertical,
itemBuilder: (context, index) => Card(
child: Text(
snapshot.data!.data.movies[index].title,
)),
itemCount: snapshot.data!.data.movies.length,
);
}
return const CircularProgressIndicator();
}),
)
])));
}
}
Sonraki adımlar
Dağıtılan projenizi inceleyin ve daha fazla araç keşfedin:
- Firebase konsolunda veritabanınıza veri ekleyin, şemalarınızı inceleyip değiştirin ve Data Connect hizmetinizi izleyin.
Dokümanlar bölümünden daha fazla bilgi edinebilirsiniz. Örneğin, hızlı başlangıç kılavuzunu tamamladığınız için:
- Şema, sorgu ve mutasyon geliştirme hakkında daha fazla bilgi edinin.
- Web, Android, iOS ve Flutter için istemci SDK'ları oluşturma ve istemci kodundan sorgu ve mutasyon çağırma hakkında bilgi edinin.