Firebase Data Connect'i kullanmaya başlama

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.
  • Firebase konsolunda yapay zeka destekli şema oluşturma özelliğini kullanarak bir uygulama için şema oluşturun ve dağıtın.
  • Uygulamanız için bir Cloud SQL örneği hazırlayın.
  • Firebase'te Gemini ile veritabanınızı örnek veri ile doldurun.
  • Yapay zeka destekli işlem oluşturma özelliğiyle sorgular ve mutasyonlar oluşturun. Bu sorguları ve mutasyonları yerel olarak istemci kodu geliştirmek için dağıtabilir ve kullanabilirsiniz.

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.
  • Güçlü şekilde yazılmış SDK'lar oluşturun ve bunları uygulamanızda kullanın.

Console akışı: Şemanızı tasarlamak için yapay zeka desteğinden yararlanın, ardından şemayı veritabanınıza dağıtın

  1. Henüz oluşturmadıysanız bir Firebase projesi oluşturun.
    1. Firebase konsolunda Proje ekle'yi tıklayın ve ekrandaki talimatları uygulayın.
  2. Firebase konsolunun Data Connect bölümüne gidin.
  3. Gemini'yi kullanmaya başlayın düğmesini tıklayın.
  4. 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.
  5. GraphQL şemasını inceleyin ve ardından Yükselt ve dağıt'ı tıklayın.
  6. Projenizi Blaze planına yükseltin. Bu işlem, PostgreSQL için Cloud SQL örneği oluşturmanıza olanak tanır.

  7. 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.

Console akışı: Müşterileriniz için işlem oluşturmak üzere yapay zeka yardımından yararlanma

Şemanız dağıtıldıktan sonra, arka uca dağıtılacak ve daha sonra istemcilerden çağrılacak sorgu ve mutasyonlardan oluşan bir bağlantılayıcı oluşturarak bu verileri istemci uygulamalarınızdan erişilebilir hale getirmeye yönelik ilk adımları atabilirsiniz.

Yapay zeka destekli araçlarımız size yardımcı olmaya hazır.

  1. İstendiğinde Gemini ile işlem oluştur düğmesini tıklayın.

  2. Birkaç dakika sonra, görünen İşlemlerinizi oluşturun iş akışı panelinde, şemanıza göre Gemini tarafından sağlanan sorgu ve mutasyon listesini inceleyin.

  3. İşlemi tanımlayan GraphQL kodunu incelemek için her bir işlem satırını tıklayın. Gerekirse, gereksiz işlemleri silmek için çöp kutusu kontrolünü kullanın.

  4. İşlem eklemek için + Ekle düğmesini tıklayın. Ardından:

    1. İşleminizi doğal dilde açıklayın.

      Örneğin:

      List all products
      
    2. Oluşturulan GraphQL'i inceleyin.

    3. İşlem kabul edilebilirse işlemleri listenize eklemek için Ekle'yi tıklayın.

  5. İşlem grubunuz kabul edilebilir hale gelene kadar işlem kaldırmaya ve eklemeye devam edin.

  6. Bu işlem listesini istemci tarafından çağrılabilir bir bağlantılayıcı grubu olarak dağıtmak için bağlayıcının adını seçip Dağıt'ı tıklayın.

Konsolda akış: Mutasyon oluşturmak ve veritabanınızı doldurmak için Firebase'te Gemini'den yararlanın

Önceki adımları tamamlayarak alakalı öğe 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 değişikliği ve güncellemelerinizi onaylamak için bir sorgu tanımlamanıza yardımcı olması amacıyla Firebase'te Gemini'yi kullanabilirsiniz.

  1. Veriler sekmesini açın.

  2. 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.
    
  3. Oluştur'u tıklayın. Mutasyon döndürülür.

  4. Çıktıyı inceleyin. Gerekirse istemi hassaslaştırmak için Düzenle'yi ve ardından Yeniden oluştur'u tıklayın.

  5. Ardından, mutasyonu veri düzenleyiciye eklemek için Ekle'yi tıklayın.

  6. Ç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:

  1. Sorgu oluşturmak için GraphQL yazmama yardım et pen_spark seçeneğini kullanarak önceki adımları tekrarlayın.

  2. Görünen kutuya girişinizi yazın.

    Örneğin:

    Query data for all sample products in my app.
    
  3. 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 ve bir bağdaştırıcısı bulunduğuna göre yerel geliştirme ortamınızda şemanızın ve bağdaştırı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.

Yerel akış: Geliştirme ortamını ayarlama

  1. Yerel projeniz için yeni bir dizin oluşturun.
  2. Oluşturduğunuz yeni dizinde aşağıdaki komutu çalıştırın.

      curl -sL https://firebase.tools/dataconnect | bash

    Bu komut dosyası, geliştirme ortamını sizin için kurmaya ve tarayıcı tabanlı bir IDE'yi başlatmaya çalışır. Bu IDE, şemanızı yönetmenize, uygulamanızda kullanılacak sorguları ve mutasyonları tanımlamanıza ve güçlü şekilde yazılmış SDK'lar oluşturmanıza yardımcı olmak için önceden paketlenmiş VS Code uzantıları da dahil olmak üzere araçlar sağlar.

  alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'

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:

  1. Google ile oturum aç düğmesini tıklayın.
  2. Firebase projesi bağla düğmesini tıklayın ve daha önce konsolda oluşturduğunuz projeyi seçin.
  3. firebase init'i çalıştır düğmesini tıklayın ve akışı tamamlayın.

  4. Emülatörleri başlat düğmesini tıklayın.

Yerel akış: Şemanızı ve konnektörünüzü yerel ortamda bulma

Önceki bölümdeki firebase init adımı, öğeleri yerel geliştirme ortamınızla senkronize eder:

  • Dağıttığınız şemayı senkronize eder.
    • Şemanızı bulun: Firebase proje dizininizdeki /dataconnect/schema/schema.gql dosyasında bulunur.
  • Dağıttığınız bağlantılayıcıdaki sorguları ve mutasyonları senkronize eder
    • Bağlantıyıcınızı bulun: İşlemler, Firebase proje dizininizdeki /dataconnect/connector/ dizininde bulunur.

Yerel akış: Şemanızı anlama

Şema örneği: Film

Data Connect'te GraphQL alanları sütunlarla eşlenir. Movie türünde muhtemelen 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:

  1. schema.gql dosyasında, türlerinizden birinin (uygulamanızın yapısına bağlı olarak Movie, Product, Account gibi) beyanının üzerindeki Veri ekle düğmesini tıklayın.
    Firebase Data Connect için Code Lens Veri ekle düğmesi
  2. Çalışma dizininize <type>_insert.qgl adlı yeni bir dosya (ör. Movie_insert.gql veya Product_insert.gql) eklenir. Verileri ilgili türün alanlarına sabit kodlayın.
  3. Çalıştır (Üretim) düğmesini tıklayın.
    Firebase Data Connect için Code Lens Çalıştır düğmesi
  4. Diğer tablolara kayıt eklemek için önceki adımları tekrarlayın.

Verilerin eklendiğini hızlıca doğrulamak için:

  1. schema.gql dosyasına geri dönüp tür beyanının üzerindeki Verileri oku düğmesini tıklayın.
  2. 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ış: SDK oluşturma

Şemanız ve bağlayıcı işlemleriniz yerel olarak senkronize edilir. Artık iOS, Android, web ve Flutter uygulamalarında sorgu ve mutasyon çağrıları uygulamaya başlamak için istemci SDK'ları oluşturmak üzere yerel araçları kullanabilirsiniz.

  1. SDK'yı uygulamaya ekle düğmesini tıklayın.
  2. 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.

  3. Uygulama platformunuzu seçin, ardından SDK kodunun seçtiğiniz dizinde hemen oluşturulduğunu unutmayın.

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

  1. Firebase'i web uygulamanıza ekleyin.
  2. React uygulamanızın ana dosyasında:

    • Oluşturduğunuz SDK'yı içe aktarın
    • Data Connect yöntemlerini çağıramaz.
    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

  1. Firebase'i iOS uygulamanıza ekleyin.
  2. 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.

  3. Uygulamanızın ana temsilcisinde:

    • Oluşturduğunuz SDK'yı içe aktarın
    • Data Connect yöntemlerini çağıramaz.
    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

  1. Firebase'i Android uygulamanıza ekleyin.
  2. Oluşturulan SDK'yı kullanmak için Data Connect'ü Gradle'de bağımlılık olarak yapılandırın.

    app/build.gradle.kts'nizde plugins ve dependencies öğ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")
    }
    
  3. Uygulamanızın ana etkinliğinde:

    • Oluşturduğunuz SDK'yı içe aktarın
    • Data Connect yöntemlerini çağıramaz.
    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

  1. Firebase'i Flutter uygulamanıza ekleyin.
  2. flutterfire CLI'yi dart pub global activate flutterfire_cli yükleyin.
  3. flutterfire configure'ü çalıştırın.
  4. Uygulamanızın ana işlevinde:
    • Oluşturduğunuz SDK'yı içe aktarın
    • Data Connect yöntemlerini çağıramaz.
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: