Memisahkan repositori

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

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

Memisahkan repositori di Dataform memiliki kelebihan berikut:

  • Mematuhi Batasan Dataform pada penggunaan resource kompilasi. Membagi alur kerja SQL yang besar menjadi beberapa repositori yang lebih kecil akan mengurangi risiko melampaui batas Dataform pada resource kompilasi.
  • Proses yang lebih mendetail. Anda dapat menetapkan proses, seperti aturan integrasi berkelanjutan (CI), satu per satu untuk setiap fragmen pemisahan alur kerja SQL dan tim yang mengembangkannya.
  • Izin terperinci. Anda dapat menetapkan izin satu per satu untuk setiap fragmen pemisahan alur kerja SQL dan tim yang mengembangkannya untuk meningkatkan keamanan keseluruhan alur kerja SQL.
  • Meningkatkan kolaborasi dengan meminimalkan jumlah kolaborator yang mengerjakan setiap fragmen pemisahan alur kerja SQL Anda.
  • Meningkatkan keterbacaan codebase. Memisahkan file yang membentuk alur kerja SQL yang 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 pemisahan alur kerja SQL Anda dibandingkan dengan eksekusi seluruh alur kerja SQL.

Memisahkan repositori di Dataform memiliki kelemahan berikut:

  • Konfigurasi continuous integration/continuous development (CI/CD) kustom 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 disimpan di beberapa repositori.
  • Kurangnya visualisasi directed acyclic graph (DAG) yang komprehensif dari alur kerja SQL yang dibagi di antara beberapa repositori. Di setiap repositori, DAG yang dihasilkan hanya mewakili sebagian dari alur kerja SQL yang lengkap.

Strategi untuk memisahkan repositori

Saat memisahkan 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 memisahkan 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 satu per satu ke repositori Git pihak ketiga khusus.

Mengelola dependensi lintas repositori

Cara paling efisien untuk memisahkan repositori adalah dengan membagi alur kerja SQL induk menjadi alur kerja SQL turunan mandiri, sehingga membuat repositori independen. Repositori independen tidak menggunakan konten repositori lain 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 serangkaian repositori yang repositorinya bergantung pada pendahulunya dan merupakan sumber data untuk penggantinya. Urutan repositori dan dependensinya harus mencerminkan struktur alur kerja SQL induk Anda dengan sebaik mungkin.

Anda dapat membuat dependensi antar-repositori dengan deklarasi sumber data Dataform. Anda dapat mendeklarasikan jenis tabel BigQuery dari repositori Dataform yang berbeda 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.

Saat menjadwalkan eksekusi alur kerja SQL yang dibagi antara repositori dengan dependensi lintas repositori, Anda harus mengeksekusi repositori satu per satu dalam urutan dependensi lintas repositori.

Sebaiknya hindari pemisahan repositori menjadi grup repositori dengan dependensi dua arah. Dependensi dua arah antara repositori terjadi saat repositori adalah sumber data untuk repositori lain 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