Panduan Pengguna Mesh Data

Data Mesh untuk Cortex Framework memperluas fondasi data untuk mengaktifkan tata kelola data, visibilitas, dan kontrol akses melalui metadata BigQuery dan Dataplex. Hal ini diimplementasikan dengan menyediakan kumpulan dasar resource metadata dan anotasi aset BigQuery yang dapat disesuaikan dan di-deploy secara opsional bersama fondasi data. Spesifikasi dasar ini memberikan konfigurasi yang disesuaikan yang merupakan fondasi metadata untuk melengkapi Foundation Data Framework Cortex. Lihat Konsep Data Mesh sebelum melanjutkan panduan ini.

Langkah-langkah yang diuraikan di halaman ini dirancang khusus untuk mengonfigurasi Data Mesh untuk Cortex Framework. Temukan file konfigurasi Data Mesh dalam folder khusus untuk setiap beban kerja di bagian direktori Data Mesh.

Arsitektur Data Mesh untuk Cortex Framework

Gambar 1. Arsitektur Data Mesh untuk Cortex Framework.

Desain

Mesh Data Cortex dirancang mirip dengan fondasi data secara keseluruhan dan terdiri dari tiga fase dengan subkomponen berbeda yang dikelola oleh Cortex atau pengguna:

  1. Pembaruan spesifikasi resource dasar: Dengan setiap rilis, Cortex memperbarui spesifikasi resource dasar, yang memberikan fondasi metadata standar untuk Data Mesh.
  2. Penyesuaian spesifikasi resource: Sebelum deployment, pengguna dapat menyesuaikan spesifikasi resource agar sesuai dengan kasus penggunaan dan persyaratan spesifik mereka.
  3. Deployment dan update Data Mesh: Pengguna dapat mengaktifkan Data Mesh di file konfigurasi Cortex. Aset ini di-deploy setelah aset data selama deployment Cortex. Selain itu, pengguna memiliki fleksibilitas untuk men-deploy Data Mesh secara independen untuk update lebih lanjut.

Desain Data Mesh untuk Cortex Framework

Gambar 2. Desain Data Mesh untuk Cortex Framework.

Direktori Data Mesh

Temukan file konfigurasi dasar Data Mesh untuk setiap beban kerja dan sumber data di lokasi berikut. Perhatikan bahwa direktori berisi struktur file yang berbeda, tetapi semua spesifikasi berada di folder config dengan cara yang sama.

Beban kerja Sumber data Jalur direktori
Operasional SAP ECC src/SAP/SAP_REPORTING/config/ecc
SAP S/4 HANA src/SAP/SAP_REPORTING/config/s4
Salesforce Sales Cloud (SFDC) src/SFDC/config
Oracle EBS src/OracleEBS/config
Pemasaran CM360 src/marketing/src/CM360/config
Google Ads src/marketing/src/GoogleAds/config
Meta src/marketing/src/Meta/config
Salesforce Marketing Cloud (SFMC) src/marketing/src/SFMC/config
TikTok src/marketing/src/TikTok/config
YouTube (dengan DV360) src/marketing/src/DV360/config
Google Analytics 4 src/marketing/src/GA4/config

Resource metadata ditentukan di tingkat sumber data dengan satu file YAML per Google Cloud project dan berisi daftar semua resource. Pengguna dapat memperluas file yang ada atau membuat file YAML tambahan yang berisi spec resource tambahan dalam direktori tersebut jika diperlukan.

Anotasi Aset ditentukan pada tingkat aset dan berisi banyak file YAML dalam direktori dengan satu anotasi per file.

Mengaktifkan API dan memverifikasi izin

Dengan mengubah nilai default untuk Data Mesh, Anda dapat menerapkan fitur di luar deskripsi. Jika Anda perlu mengubah nilai default untuk Data Mesh di config.json untuk menerapkan fitur di luar deskripsi, pastikan API dan izin confirm yang diperlukan ditetapkan seperti yang diuraikan dalam tabel berikut. Saat men-deploy Data Mesh dengan fondasi data, berikan izin kepada pengguna yang men-deploy atau akun Cloud Build. Jika deployment melibatkan project sumber dan target yang berbeda, pastikan API dan izin ini diaktifkan di kedua project tempat fitur tersebut digunakan.

Fitur Peran izin Dokumentasi
Akses baris dan aset BigQuery BigQuery Data Owner Untuk mengetahui informasi selengkapnya, lihat Peran yang diperlukan untuk peran aset, dan Izin yang diperlukan untuk peran baris.
Akses kolom BigQuery Policy Tag Admin Untuk mengetahui informasi selengkapnya, lihat dokumentasi Peran yang digunakan dengan kontrol akses tingkat kolom dan Membatasi akses dengan kontrol akses tingkat kolom.
Tag Katalog Data Catalog TagTemplate Owner Untuk mengetahui informasi selengkapnya, lihat dokumentasi Memberi tag pada tabel BigQuery menggunakan Data Catalog dan IAM Data Catalog.
Dataplex Lake Dataplex Editor Untuk informasi selengkapnya, lihat dokumentasi Membuat data lake.

Memahami spesifikasi resource dasar

Antarmuka utama untuk mengonfigurasi Data Mesh untuk Cortex adalah melalui spesifikasi resource dasar, yang merupakan kumpulan file YAML yang disediakan secara langsung yang menentukan resource metadata dan anotasi yang di-deploy. Spesifikasi dasar memberikan rekomendasi awal dan contoh sintaksis, tetapi dimaksudkan untuk disesuaikan lebih lanjut agar sesuai dengan kebutuhan pengguna. Spesifikasi ini dibagi menjadi dua kategori:

  • Resource Metadata yang dapat diterapkan di berbagai aset data. Misalnya, Template Tag Katalog yang menentukan cara aset diberi tag dengan domain bisnis.
  • Anotasi yang menentukan cara resource metadata diterapkan ke aset data tertentu. Misalnya, Tag Katalog yang mengaitkan tabel tertentu ke domain Penjualan.

Bagian berikut akan memandu Anda melalui contoh dasar dari setiap jenis spec dan menjelaskan cara menyesuaikannya. Spesifikasi dasar diberi tag dengan ## CORTEX-CUSTOMER yang harus diubah agar sesuai dengan deployment jika opsi deployment terkait diaktifkan. Untuk penggunaan lanjutan, lihat definisi kanonik skema spesifikasi ini di src/common/data_mesh/src/data_mesh_types.py.

Resource metadata

Resource metadata adalah entity bersama yang ada dalam project yang dapat diterapkan ke banyak aset data. Sebagian besar spesifikasi menyertakan kolom display_name yang tunduk pada kriteria berikut:

  • Hanya berisi huruf unicode, angka (0-9), garis bawah (_), tanda hubung (-), dan spasi ( ).
  • Tidak boleh diawali atau diakhiri dengan spasi.
  • Panjang maksimum 200 karakter.

Dalam beberapa kasus, display_name juga digunakan sebagai ID, yang mungkin akan menimbulkan persyaratan tambahan. Dalam kasus tersebut, link ke dokumentasi kanonis disertakan.

Jika deployment mereferensikan resource metadata di project sumber dan target yang berbeda, harus ada spesifikasi yang ditentukan untuk setiap project. Misalnya, Cortex Salesforce (SFDC) berisi dua spesifikasi Danau. Satu untuk zona mentah dan CDC, dan satu lagi untuk pelaporan.

Dataplex Lake

Data Lake, Zona, dan Aset Dataplex digunakan untuk mengatur data dari perspektif engineering. Danau memiliki region dan zona memiliki location_type, keduanya terkait dengan lokasi Cortex (config.json > location). Lokasi Cortex menentukan tempat Set Data BigQuery disimpan dan dapat berupa satu atau multi-region. Zona location_type harus ditetapkan ke SINGLE_REGION | MULTI_REGION agar cocok. Namun, region Danau harus selalu berupa satu region. Jika lokasi Cortex dan zona location_type bersifat multi-region, pilih satu region dalam grup tersebut untuk region Danau.

  • Persyaratan
    • display_name danau digunakan sebagai lake_id dan harus mematuhi persyaratan resmi. Hal ini juga berlaku untuk display_name zona dan aset. ID zona harus unik di seluruh Danau dalam project.
    • Spesifikasi danau harus dikaitkan dengan satu region.
    • asset_name harus cocok dengan ID set data BigQuery, tetapi display_name dapat berupa label yang lebih mudah digunakan.
  • Batasan
    • Dataplex hanya mendukung pendaftaran set data BigQuery, bukan tabel individual sebagai aset Dataplex.
    • Aset mungkin hanya terdaftar di satu zona.
    • Dataplex hanya didukung di lokasi tertentu. Untuk mengetahui informasi selengkapnya, lihat Lokasi Dataplex.

Lihat contoh berikut di lakes.yaml.

Resource ini ditentukan dalam file YAML yang menentukan data_mesh_types.Lakes.

Template Tag Katalog

Template Tag Data Catalog dapat digunakan untuk menambahkan konteks ke tabel BigQuery atau setiap kolom. Alat ini membantu Anda mengategorikan dan memahami data dari perspektif teknis dan bisnis dengan cara yang terintegrasi dengan alat penelusuran Dataplex. Kolom ini menentukan kolom tertentu yang dapat Anda gunakan untuk memberi label pada data dan jenis informasi yang dapat disimpan setiap kolom (misalnya, teks, angka, tanggal). Tag Katalog adalah instance template dengan nilai kolom sebenarnya.

Kolom template display_name digunakan sebagai ID kolom dan harus mengikuti persyaratan untuk TagTemplate.fields yang ditentukan dalam Class TagTemplate. Untuk mengetahui informasi selengkapnya tentang jenis kolom yang didukung, lihat Jenis kolom Data Catalog.

Cortex Data Mesh membuat semua template tag dapat dibaca secara publik. Fitur ini juga memperkenalkan konsep level tambahan untuk menandai spesifikasi template, yang menentukan apakah tag harus diterapkan ke seluruh aset, setiap kolom dalam aset, atau keduanya, dengan kemungkinan nilai: ASSET | FIELD | ANY. Meskipun saat ini hal ini tidak diterapkan secara ketat, pemeriksaan validasi mendatang mungkin memastikan tag diterapkan pada tingkat yang sesuai selama deployment.

Lihat contoh berikut.

Template ditentukan dalam file YAML yang menentukan data_mesh_types.CatalogTagTemplates.

Tag Katalog adalah instance template, dan dibahas di bawah dalam Anotasi Aset.

Kontrol Akses Tingkat Aset dan Kolom dengan Template Tag

Cortex Framework memberikan kemampuan untuk mengaktifkan kontrol akses tingkat aset atau kolom di semua artefak yang terkait dengan Template Tag Katalog. Misalnya, jika pengguna ingin memberikan akses ke aset berdasarkan lini bisnis, mereka dapat membuat asset_policies untuk Template Tag Katalog line_of_business dengan akun utama yang berbeda yang ditentukan untuk setiap domain bisnis. Setiap kebijakan menerima filters yang dapat digunakan untuk hanya mencocokkan tag dengan nilai tertentu. Dalam hal ini, kita dapat mencocokkan nilai domain. Perhatikan bahwa filters ini hanya mendukung pencocokan untuk kesetaraan dan tidak ada operator lain. Jika beberapa filter tercantum, hasilnya harus memenuhi semua filter (misalnya, filter_a AND filter_b). Kumpulan kebijakan aset akhir adalah gabungan dari kebijakan yang ditentukan langsung dalam anotasi, dan kebijakan dari kebijakan template.

Kontrol akses tingkat kolom dengan Tag Katalog berperilaku serupa dengan menerapkan Tag Kebijakan pada kolom yang cocok. Namun, karena hanya satu Tag Kebijakan yang dapat diterapkan ke kolom, prioritasnya adalah:

  1. Tag Kebijakan Langsung: Jika Tag Kebijakan ditentukan langsung pada anotasi kolom, tag tersebut akan diprioritaskan.
  2. Kebijakan Template Tag yang Cocok: Jika tidak, akses ditentukan oleh kebijakan pencocokan pertama yang ditentukan pada kolom dalam Template Tag Katalog terkait.

Saat menggunakan fitur ini, sebaiknya aktifkan atau nonaktifkan penempatan Tag Katalog dan Daftar Kontrol Akses (ACL) secara bersamaan. Tindakan ini memastikan ACL di-deploy dengan benar.

Untuk memahami spesifikasi fitur lanjutan ini, lihat definisi parameter asset_policies dan field_policies di data_mesh_types.CatalogTagTemplate.

Glosarium Katalog

Glosarium adalah alat yang dapat digunakan untuk menyediakan kamus istilah yang digunakan oleh kolom tertentu dalam aset data yang mungkin tidak dipahami secara universal. Pengguna dapat menambahkan istilah secara manual di konsol, tetapi tidak ada dukungan melalui spesifikasi resource.

Taksonomi dan Tag Kebijakan

Taksonomi dan tag kebijakan memungkinkan kontrol akses tingkat kolom atas aset data sensitif dengan cara yang standar. Misalnya, mungkin ada taksonomi untuk tag yang mengontrol data PII di lini bisnis tertentu, dengan hanya grup tertentu yang dapat membaca data yang disamarkan, data yang tidak disamarkan, atau tidak memiliki akses baca sama sekali.

Untuk mengetahui detail selengkapnya tentang taksonomi dan tag kebijakan, lihat dokumentasi Pengantar penyamaran data kolom. Bagian berikut sangat relevan:

Cortex Framework menyediakan contoh tag kebijakan untuk menunjukkan cara tag tersebut ditentukan dan potensi penggunaannya. Namun, resource yang memengaruhi kontrol akses tidak diaktifkan di deployment Data Mesh secara default.

Lihat contoh berikut.

Taksonomi Kebijakan ditentukan dalam file YAML yang menentukan data_mesh_types.PolicyTaxonomies.

Anotasi Aset

Anotasi menentukan metadata yang berlaku untuk aset tertentu dan dapat mereferensikan resource metadata bersama yang ditentukan. Anotasi mencakup:

  • Deskripsi aset
  • Deskripsi kolom
  • Tag Katalog
  • Kontrol akses tingkat aset, baris, dan kolom

Dasar Data Framework Cortex menawarkan anotasi (deskripsi) yang telah dikonfigurasi sebelumnya untuk workload berikut.

  • SAP ECC (mentah, CDC, dan pelaporan)
  • SAP S4 HANA (mentah, CDC, dan pelaporan)
  • SFDC (laporan saja)
  • Oracle EBS (laporan saja)
  • CM360 (khusus pelaporan)
  • Google Ads (khusus pelaporan)
  • Meta (laporan saja)
  • SFMC (laporan saja)
  • TikTok (laporan saja)
  • YouTube (dengan DV360) (khusus pelaporan)
  • Google Analytics 4 (khusus pelaporan)

Lihat contoh berikut.

Anotasi ditentukan dalam file YAML yang menentukan data_mesh_types.BqAssetAnnotation.

Tag Katalog

Tag Katalog adalah instance dari template yang ditentukan tempat nilai kolom ditetapkan yang berlaku untuk aset tertentu. Pastikan untuk menetapkan nilai yang cocok dengan jenis kolom yang dideklarasikan dalam template terkait.

Nilai TIMESTAMP harus dalam salah satu format berikut:

  "%Y-%m-%d %H:%M:%S%z"
  "%Y-%m-%d %H:%M:%S"
  "%Y-%m-%d"

Lihat contoh berikut.

Lihat definisi Spesifikasi di data_mesh_types.CatalogTag.

Menentukan Pembaca dan Akun Utama Kebijakan Akses

Kontrol akses ke data BigQuery Anda di Cortex Framework menggunakan kebijakan akses. Kebijakan ini menentukan siapa (prinsipal) yang dapat mengakses aset data tertentu, baris dalam aset, atau bahkan setiap kolom. Akun utama harus mengikuti format tertentu yang ditentukan oleh anggota Binding Kebijakan IAM.

Akses Tingkat Aset

Anda dapat memberikan akses ke seluruh aset BigQuery dengan berbagai izin:

  • READER: Melihat data dalam aset.
  • WRITER: Mengubah dan menambahkan data ke aset.
  • OWNER : Kontrol penuh atas aset, termasuk mengelola akses.

Izin ini setara dengan pernyataan GRANT DCL di SQL.

Tidak seperti perilaku untuk sebagian besar resource dan anotasi, flag overwrite tidak menghapus akun utama yang ada dengan peran OWNERS. Saat menambahkan pemilik baru dengan penggantian diaktifkan, pemilik baru hanya ditambahkan ke pemilik yang sudah ada. Ini adalah pengamanan untuk mencegah kehilangan akses yang tidak diinginkan. Untuk menghapus pemilik aset, gunakan konsol. Penggantian akan menghapus akun utama yang ada dengan peran READER atau WRITER.

Lihat contoh berikut.

Lihat definisi Spesifikasi di data_mesh_types.BqAssetPolicy.

Akses Tingkat Baris

Anda dapat memberikan akses pada kumpulan baris berdasarkan filter nilai kolom tertentu. Saat menentukan kebijakan akses baris, string filter yang diberikan akan disisipkan ke dalam CREATE DDL statement. Jika flag overwrite diaktifkan, flag ini akan menghapus semua kebijakan akses baris yang ada sebelum menerapkan kebijakan baru.

Pertimbangkan hal berikut tentang Akses Tingkat Baris:

  • Menambahkan kebijakan akses baris berarti pengguna yang tidak ditentukan dalam kebijakan tersebut tidak akan memiliki akses untuk melihat baris apa pun.
  • Kebijakan baris hanya berfungsi dengan tabel, bukan tampilan.
  • Hindari penggunaan kolom yang dipartisi dalam filter kebijakan akses baris. Lihat file YAML setelan pelaporan terkait untuk mengetahui informasi tentang jenis aset dan kolom yang dipartisi.

Untuk mengetahui informasi selengkapnya tentang kebijakan akses tingkat baris, lihat praktik terbaik keamanan tingkat baris.

Lihat contoh berikut.

Lihat definisi Spesifikasi di data_mesh_types.BqRowPolicy.

Akses Tingkat Kolom

Untuk mengaktifkan akses tingkat kolom, anotasikan setiap kolom dengan Tag Kebijakan yang diidentifikasi dengan nama Tag Kebijakan dan nama Taksonomi. Perbarui resource metadata tag kebijakan untuk mengonfigurasi kontrol akses.

Lihat contoh berikut.

Lihat definisi Spesifikasi di data_mesh_types.PolicyTagId.

Men-deploy Data Mesh

Data Mesh dapat di-deploy sebagai bagian dari deployment fondasi data, atau secara mandiri. Dalam kedua kasus tersebut, file ini menggunakan file config.json Cortex untuk menentukan variabel yang relevan, seperti nama set data BigQuery dan opsi deployment. Secara default, men-deploy Data Mesh tidak akan menghapus atau menimpa resource atau anotasi yang ada untuk mencegah kehilangan yang tidak disengaja. Namun, ada juga kemampuan untuk menulis ulang resource yang ada saat di-deploy sendiri.

Opsi Deployment

Opsi deployment berikut dapat diaktifkan atau dinonaktifkan berdasarkan kebutuhan pengguna dan batasan pembelanjaan di config.json > DataMesh.

Opsi Catatan
deployDescriptions Ini adalah satu-satunya opsi yang diaktifkan secara default dan men-deploy anotasi BigQuery dengan deskripsi kolom dan aset. Anda tidak perlu mengaktifkan API atau izin tambahan apa pun.
deployLakes Men-deploy Data Lake dan Zona.
deployCatalog Men-deploy resource Template Katalog dan Tag terkaitnya dalam anotasi aset.
deployACLs Men-deploy resource Taksonomi Kebijakan dan kebijakan kontrol akses tingkat aset, baris, dan kolom melalui anotasi aset. Log berisi pesan yang menunjukkan bagaimana kebijakan akses telah berubah.

Men-deploy dengan Data Foundation

Secara default, config.json > deployDataMesh memungkinkan deployment deskripsi aset Data Mesh di akhir setiap langkah build beban kerja. Konfigurasi default ini tidak memerlukan pengaktifan API atau peran tambahan apa pun. Fitur tambahan Data Mesh dapat di-deploy dengan fondasi data dengan mengaktifkan opsi deployment, API dan peran yang diperlukan, serta mengubah spesifikasi resource terkait.

Men-deploy sendiri

Untuk men-deploy Mesh data saja, pengguna dapat menggunakan file common/data_mesh/deploy_data_mesh.py. Utilitas ini digunakan selama proses build untuk men-deploy data mesh satu workload pada satu waktu, tetapi jika dipanggil secara langsung, utilitas ini juga dapat digunakan untuk men-deploy beberapa workload sekaligus. Workload untuk spesifikasi yang akan di-deploy harus diaktifkan dalam file config.json. Misalnya, pastikan deploySAP=true jika men-deploy Data Mesh untuk SAP.

Untuk memastikan bahwa Anda men-deploy dengan paket dan versi yang diperlukan, Anda dapat menjalankan utilitas dari image yang sama yang digunakan oleh proses deployment Cortex dengan perintah berikut:

  # Run container interactively
  docker container run -it gcr.io/kittycorn-public/deploy-kittycorn:v2.0

  # Clone the repo
  git clone https://github.com/GoogleCloudPlatform/cortex-data-foundation

  # Navigate into the repo
  cd cortex-data-foundation

Untuk mendapatkan bantuan terkait parameter yang tersedia dan penggunaannya, jalankan perintah berikut:

  python src/common/data_mesh/deploy_data_mesh.py -h

Berikut adalah contoh pemanggilan untuk SAP ECC:

  python src/common/data_mesh/deploy_data_mesh.py \
    --config-file config/config.json \
    --lake-directories \
        src/SAP/SAP_REPORTING/config/ecc/lakes \
    --tag-template-directories \
        src/SAP/SAP_REPORTING/config/ecc/tag_templates \
    --policy-directories \
        src/SAP/SAP_REPORTING/config/ecc/policy_taxonomies \
    --annotation-directories \
        src/SAP/SAP_REPORTING/config/ecc/annotations

Lihat bagian Direktori Data Mesh untuk mengetahui informasi tentang lokasi direktori.

Timpa

Secara default, men-deploy Data Mesh tidak akan menimpa resource atau anotasi yang ada. Namun, flag --overwrite dapat diaktifkan saat men-deploy Data Mesh saja untuk mengubah deployment dengan cara berikut.

Jika resource metadata seperti Danau, Template Tag Katalog, dan Tag Kebijakan ditimpa, resource yang ada dengan nama yang sama akan dihapus, tetapi resource yang ada dengan nama yang berbeda tidak akan diubah. Artinya, jika spesifikasi resource dihapus sepenuhnya dari file YAML, lalu Data Mesh di-deploy ulang dengan penggantian diaktifkan, spesifikasi resource tersebut tidak akan dihapus karena tidak akan ada konflik nama. Hal ini dilakukan agar deployment Cortex Data Mesh tidak memengaruhi resource yang ada yang mungkin sedang digunakan.

Untuk resource bertingkat seperti Danau dan Zona, menimpa resource akan menghapus semua turunannya. Misalnya, menimpa Data Lake juga akan menghapus zona dan referensi aset yang ada. Untuk Template Tag Katalog dan Tag Kebijakan yang ditimpa, referensi anotasi terkait yang ada juga akan dihapus dari aset. Mengganti Tag Katalog pada anotasi aset hanya akan menimpa instance Tag Katalog yang ada yang berbagi template yang sama.

Penggantian deskripsi aset dan kolom hanya berlaku jika ada deskripsi baru yang valid dan tidak kosong, asalkan bertentangan dengan deskripsi yang ada.

Di sisi lain, ACL berperilaku berbeda. Mengganti ACL akan menghapus semua akun utama yang ada (kecuali pemilik tingkat aset). Hal ini karena akun utama yang dihilangkan dari kebijakan akses sama pentingnya dengan akun utama yang diberi akses.

Menjelajahi Data Mesh

Setelah men-deploy Data Mesh, pengguna dapat menelusuri dan melihat aset data dengan Data Catalog. Hal ini mencakup kemampuan untuk menemukan aset berdasarkan nilai Tag Katalog yang diterapkan. Pengguna juga dapat membuat dan menerapkan istilah Katalog Kata-Kata secara manual jika diperlukan.

Kebijakan akses yang di-deploy dapat dilihat di halaman Skema BigQuery untuk melihat kebijakan yang diterapkan pada aset tertentu di setiap tingkat.

Silsilah Data

Pengguna mungkin merasa perlu untuk mengaktifkan dan memvisualisasikan garis keturunan di antara aset BigQuery. Lineage juga dapat diakses secara terprogram melalui API. Data Lineage hanya mendukung silsilah tingkat aset. Data Lineage tidak terjalin dengan Cortex Data Mesh, tetapi fitur baru mungkin diperkenalkan pada masa mendatang yang menggunakan Lineage.

Untuk permintaan Cortex Data Mesh atau Cortex Framework, buka bagian dukungan.