Memisahkan repositori

Dokumen ini membahas strategi untuk membagi repositori Dataform dan mengelola dependensi lintas repositori.

Repositori adalah unit inti dalam Dataform. Repositori menyimpan semua file SQLX dan JavaScript yang membentuk alur kerja SQL Anda, serta paket dan file konfigurasi Formulir Data. Anda dapat menyimpan alur kerja SQL dalam satu repositori, atau membagi alur kerja SQL di antara beberapa repositori.

Memisahkan repositori dalam Dataform memiliki keuntungan berikut:

  • Mematuhi Batasan Formulir data terkait penggunaan resource kompilasi. Memisahkan alur kerja SQL yang besar menjadi beberapa repositori yang lebih kecil akan menurunkan risiko melebihi batas Dataform pada resource kompilasi.
  • Proses penghalusan. Anda dapat menetapkan proses, seperti aturan continuous integration (CI), satu per satu untuk setiap fragmen terpisah dalam alur kerja SQL Anda dan tim yang mengembangkannya.
  • Izin yang lebih terperinci. Anda dapat menetapkan izin satu per satu untuk setiap fragmen terpisah alur kerja SQL dan tim yang mengembangkannya untuk meningkatkan keamanan alur kerja SQL secara keseluruhan.
  • Meningkatkan kolaborasi dengan meminimalkan jumlah kolaborator yang bekerja di setiap fragmen terpisah dalam alur kerja SQL Anda.
  • Meningkatkan keterbacaan codebase. Memisahkan file yang membentuk alur kerja SQL besar menjadi beberapa repositori akan mempermudah navigasi setiap repositori satu per satu daripada menavigasi seluruh alur kerja SQL sekaligus.
  • Mempercepat eksekusi alur kerja setiap fragmen terpisah dalam alur kerja SQL Anda dibandingkan dengan eksekusi seluruh alur kerja SQL.

Memisahkan repositori dalam Dataform memiliki kelemahan berikut:

  • Konfigurasi continuous integration/continuous development (CI/CD) kustom yang diperlukan untuk setiap repositori Dataform dan repositori Git yang sesuai.
  • Konfigurasi penjadwalan kustom diperlukan untuk setiap repositori Dataform dan repositori Git yang sesuai.
  • Kesulitan dalam mengelola dependensi antar-objek alur kerja Anda yang bertempat di beberapa repositori.
  • Kurangnya visualisasi directed acyclic graph (DAG) yang komprehensif untuk alur kerja SQL yang dibagi antara beberapa repositori. Di setiap repositori, DAG yang dihasilkan hanya mewakili sebagian dari alur kerja SQL yang lengkap.

Strategi untuk memisahkan repositori

Saat membagi repositori, Anda membagi file yang membentuk alur kerja SQL induk menjadi alur kerja SQL turunan yang lebih kecil yang disimpan di repositori terpisah Dataform.

Anda dapat memilih untuk membagi repositori dengan salah satu cara berikut:

  • 1 repositori per tim pengembangan.
  • 1 repositori per domain, misalnya, penjualan, pemasaran, atau logistik.
  • 1 repositori pusat dan 1 repositori per domain yang menggunakan konten repositori pusat sebagai sumber data.

Untuk menyimpan alur kerja SQL induk di platform hosting Git pihak ketiga, Anda harus menghubungkan setiap repositori terpisah yang berisi alur kerja turunan ke repositori Git pihak ketiga khusus.

Mengelola dependensi lintas repositori

Cara paling efisien untuk membagi repositori adalah dengan membagi alur kerja SQL induk menjadi alur kerja SQL turunan mandiri, sehingga membuat repositori independen. Repositori independen tidak menggunakan konten repositori yang berbeda sebagai sumber data. Pendekatan ini tidak memerlukan pengelolaan dependensi lintas repositori.

Jika tidak dapat menghindari dependensi lintas-repositori, Anda dapat mengelolanya dengan membagi repositori menjadi urutan repositori yang repositori bergantung pada pendahulunya dan merupakan sumber data untuk penggantinya. Urutan repositori dan dependensinya harus mencerminkan struktur alur kerja SQL induk Anda dengan sebaik-baiknya.

Anda dapat membuat dependensi antar-repositori dengan deklarasi sumber data Dataform. Anda dapat mendeklarasikan jenis tabel BigQuery dari repositori Dataform lain sebagai sumber data di repositori yang saat ini diedit. Setelah mendeklarasikan sumber data, Anda dapat mereferensikannya seperti objek alur kerja Dataform SQL lainnya dan menggunakannya untuk mengembangkan alur kerja SQL Anda.

Saat menjadwalkan eksekusi pembagian alur kerja SQL antara repositori dengan dependensi lintas repositori, Anda harus menjalankan repositori satu per satu sesuai urutan dependensi lintas repositori.

Sebaiknya jangan membagi repositori menjadi grup repositori dengan dependensi dua arah. Dependensi dua arah antara repositori terjadi jika repositori adalah sumber data untuk repositori yang berbeda dan juga menggunakan repositori tersebut sebagai sumber data. Dependensi dua arah antara repositori mempersulit penjadwalan dan eksekusi alur kerja SQL induk, serta proses pengembangan.

Langkah selanjutnya