Metadata
Metadata adalah konsep utama dalam Manufacturing Data Engine (MDE). Data ini merepresentasikan data kontekstual tentang fakta. Misalnya, pembacaan atau peristiwa sensor. Metadata membantu menjawab pertanyaan seperti berikut:
- Tag mana yang memancarkan pembacaan numerik?
- Produk apa yang sedang diproses saat pembacaan numerik dilakukan?
- Perangkat apa yang memiliki sensor?
- Shift apa yang sedang berlangsung saat peristiwa terjadi?
- Resep apa yang aktif pada saat pembacaan?
MDE membedakan dua jenis metadata berdasarkan kecepatan perubahannya:
- Metadata cloud yang berubah perlahan.
- Metadata sematan yang berubah dengan cepat.
Metadata cloud
Metadata yang berubah perlahan merepresentasikan data kontekstual yang tidak berubah selama jangka waktu yang lama, misalnya, konteks aset yang menjelaskan mesin, sel, saluran, dan pabrik sensor tertentu. MDE memungkinkan Anda memodelkan, mengelola, dan menjelajahi metadata yang berubah perlahan serta menautkannya ke catatan. Setelah metadata ditautkan ke data, Anda dapat menjelajahi data menggunakan konteks terkait.
Metadata yang berubah lambat di MDE disebut metadata cloud. Metadata cloud memiliki dua fungsi dalam solusi:
- Untuk memberikan konteks dan mengategorikan data.
- Berfungsi sebagai sumber data master versi tentang entitas manufaktur, seperti sensor, perangkat, dan jalur.
MDE memungkinkan metadata cloud bersumber dari edge, dibuat secara manual menggunakan antarmuka web MDE, atau dibuat secara terprogram menggunakan API. Opsi terakhir memungkinkan Anda mengambil metadata dari sistem Pengelolaan Aset Perusahaan (EAM) atau Pengelolaan Data Master (MDM) yang ada.
Bucket metadata
Bucket metadata cloud (juga disebut "bucket" atau "bucket metadata") adalah entitas konfigurasi yang memodelkan sekumpulan data kontekstual yang berubah perlahan dan terkait. Misalnya, bucket dapat memodelkan atribut tag atau resep. Bucket dapat dianggap sebagai dimensi data dalam domain analisis data.
Atribut utama bucket metadata adalah skemanya. Skema (dinyatakan sebagai objek skema JSON) menentukan dan membatasi struktur instance metadata yang ada di dalamnya. Anda dapat membuat versi bucket metadata baru, tetapi versi baru harus mematuhi aturan penerapan versi bucket metadata cloud.
Bucket bersifat global, artinya bucket dapat dirujuk oleh jenis apa pun.
Instance metadata
Instance metadata merepresentasikan "isi" bucket metadata cloud. Setiap instance menjelaskan beberapa entitas, seperti aset, proses, atau aspek catatan yang diambil. Instance memiliki dua jenis ID:
- UUID (ID Unik Universal) buatan sistem yang mengidentifikasi instance dalam MDE.
- Kunci alami yang mengidentifikasi entity di luar MDE (misalnya, nomor seri sensor).
Instance metadata diberi versi pada kunci alami. Artinya, MDE melacak evolusi atribut untuk kunci alami tertentu. Misalnya, tag dengan kunci alami "tag-123" mungkin awalnya berada di sel "X", tetapi kemudian dipindahkan ke sel "Y". MDE menyimpan dan memberi stempel waktu pada setiap instance serta memberikan UUID unik. UUID unik ini memungkinkan Anda mengambil histori instance untuk kunci alami, memberikan konteks pada rekaman dengan instance yang tepat saat penyerapan, serta menerapkan instance secara retroaktif ke rekaman sebelumnya pada waktu kueri.
Mulai v1.5.0, instance metadata diberi versi dan diproses berdasarkan
event-time, bukan processing time. Saat Anda mengirim instance metadata dengan catatan historis, MDE akan membuat versi instance metadata tersebut berdasarkan eventTimestamp pesan, dan hal ini akan memungkinkan metadata historis dan terbaru ada bersama tanpa mengubah instance terbaru. Untuk mengetahui informasi selengkapnya, lihat
Membuat versi bucket metadata.
MDE hanya mengizinkan penambahan instance ke bucket yang mematuhi skema versi tertentu dari bucket tersebut.
Skema bucket metadata
Setiap versi bucket metadata berisi skema, dan instance metadata hanya dapat ditambahkan ke versi bucket tertentu. Skema lebih membatasi struktur instance metadata yang dapat ditambahkan ke versi bucket.
Skema bucket metadata dinyatakan sebagai objek skema JSON sesuai dengan versi 2019-09 spesifikasi skema JSON.
Misalnya, jika skema kemudian ditambahkan ke versi bucket, skema tersebut akan menyatakan bahwa setiap objek instance harus memiliki properti bernama deviceName dengan nilai string, dan properti ini wajib ada. Lihat contoh berikut:
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"type": "object",
"properties": {
"deviceName": {
"type": "string"
}
},
"required": ["deviceName"]
}
Validasi instance metadata
Instance metadata harus mematuhi skema yang ditentukan untuk versi bucket metadata tertentu agar dapat disisipkan.
Jenis bucket
MDE menentukan tiga jenis bucket:
- Bucket tag
- Bucket Record
- Bucket Lookup
Jenis bucket ditentukan saat bucket dibuat dan tidak dapat diubah setelahnya.
Bucket tag
Bucket tag mewakili bucket yang memberikan konteks pada tag. Artinya, kunci alami instance yang ada dalam bucket harus berupa nama tag.
Bucket rekaman
Bucket rekaman mewakili bucket yang dapat mengontekstualisasikan setiap grup rekaman yang memiliki kunci alami yang sama. Kunci alami instance bucket rekaman dapat berupa nilai apa pun.
Bucket pencarian
Bucket lookup merepresentasikan bucket yang tidak mengontekstualisasikan rekaman secara langsung, tetapi memberikan data referensi yang dapat digunakan di parser. Kunci alami instance bucket lookup dapat berupa nilai apa pun.
Instance bucket rekaman tidak pernah ditautkan ke rekaman. Sebagai gantinya, instance dapat diambil dari bucket lookup dengan memanggil fungsi mde::lookupByKey dalam skrip Whistle. Fungsi ini menggunakan bucketName, bucketVersion, dan naturalKey pencarian sebagai argumen, dan menampilkan instance metadata terbaru untuk kunci alami yang diberikan. Anda dapat menggunakan instance untuk mengisi
kolom dalam rekaman proto di parser.
Membuat versi bucket metadata
Skema bucket metadata dapat berkembang, tetapi Anda harus membuat versi bucket baru untuk mengubah skema. Versi bucket yang ada dan entity konfigurasi yang ada yang mereferensikan versi bucket sebelumnya tidak terpengaruh oleh operasi ini. Untuk memastikan konsistensi data selama masa aktif bucket metadata, versi skema bucket metadata baru tunduk pada batasan berikut:
Versi baru dapat:
- Tambahkan kolom opsional baru.
- Menandai kolom wajib diisi sebagai opsional.
Versi baru mungkin tidak:
- Menghapus kolom.
- Mengubah jenis data kolom yang ada.
- Menandai atribut opsional sebagai wajib.
Mulai v1.5.0, resolusi instance metadata juga didasarkan pada
event-timestamp. Artinya, MDE menyelesaikan instance metadata yang terbaru dibandingkan dengan waktu peristiwa rekaman. Hal ini menggeneralisasi konsep metadata penautan MDE
agar berfungsi di berbagai waktu yang dikontrol oleh pesan sumber.
Untuk meningkatkan keterbacaan kueri instance metadata,
MDE v1.5.0 memperkenalkan kolom baru yang disebut validFrom yang
menunjukkan waktu saat instance metadata tertentu berlaku. Kolom
ini digunakan oleh MDE untuk memeriksa instance metadata mana yang akan
dipilih berdasarkan waktu peristiwa pesan sumber.
Misalnya, untuk kunci alami sensor-a, misalkan Anda mengirim satu instance metadata ke MDE hari ini dengan nilai berikut:
{
"naturalKey": "sensor-a",
"instance": {
"site": "ONE",
"factory": "ONE",
"floor": "ONE",
"line": "ONE",
"cell": "ONE"
}
}
MDE membuat versi instance ini berdasarkan nilai eventTimestamp
pesan masuk, tempat instance metadata ini dikirim, dan
karena stempel waktunya ditetapkan ke hari ini, MDE akan memperlakukan
instance ini sebagai yang terbaru yang diterima sejauh ini untuk kunci alami tersebut.
Nilai validFrom untuk instance metadata yang baru diberi versi ini akan
menjadi nilai eventTimestamp dari pesan yang masuk.
Sekarang, misalkan Anda mengirim instance metadata historis (misalnya,
tahun lalu) untuk kunci alami sensor-a yang sama dengan nilai berikut:
{
"naturalKey": "sensor-a",
"instance": {
"site": "OLD",
"factory": "OLD",
"floor": "OLD",
"line": "OLD",
"cell": "OLD"
}
}
Dalam contoh ini, MDE memversi instance ini dengan membandingkannya
dengan instance metadata terbaru yang tersedia pada atau sebelum
eventTimestamp yang diterima (misalnya, tahun lalu), dan MDE akan menyisipkannya
ke tempat yang tepat dalam linimasa, yang merupakan perbedaan mendasar
antara v.1.4.x dan 1.5.0. Saat menerima peristiwa catatan historis, MDE akan menyelesaikan entri metadata historis yang terbaru pada waktu peristiwa. Diagram berikut menunjukkan cara kerja logika pemrosesan dan penautan:

Menautkan instance metadata cloud ke data
Menambahkan konteks ke suatu rekaman melibatkan penautan rekaman ke instance metadata. Hal ini dilakukan dengan menyimpan referensi ke UUID instance metadata dalam catatan. MDE menyediakan dua cara untuk membuat link ini di parser:
- Dengan memberikan kunci alami instance.
- Dengan menyediakan instance metadata proto.
Misalnya, sink data BigQuery menyimpan referensi ke instance metadata per bucket dalam kolom yang disebut cloud_metadata_ref. Berikut adalah contoh tampilan referensi instance metadata dalam rekaman BigQuery:
{
"id": "e4b66cb9-7c60-4473-b1a1-1954eca92405",
"tag_name": "primepaintingrobot-01-airpressure",
"type_version": "1",
"event_timestamp": "2023-06-20 07:11:59.757000 UTC",
"value": "762.53",
"embedded_metadata": {},
"materialized_cloud_metadata": {
"device-metadata": {
"deviceName": "example-device"
}
},
"cloud_metadata_ref": {
"device-metadata": {
"bucket_number": 143,
"bucket_version": 1,
"instance_id": "50e156a0-dbd9-4f9b-bdc8-1e77574bc4b1"
}
},
"ingest_timestamp": "2023-06-20 07:12:06.335000 UTC",
"source_message_id": "8434396321424812"
}
Menautkan rekaman ke instance metadata cloud menggunakan kunci alami
Anda dapat menautkan rekaman ke instance metadata dengan memberikan, di parser, referensi ke versi bucket metadata cloud dan kunci alami instance dalam rekaman proto. MDE secara otomatis menukar kunci alami dengan UUID instance, jika ada, dan menyimpan link dalam catatan. Jika ada beberapa instance untuk kunci alami yang diberikan,
MDE akan memilih instance terbaru (instance dengan created_timestamp terbaru).
Jika bucket yang dirujuk adalah bucket TAG, memberikan kunci alami bersifat opsional.
Jika kunci alami tidak ada, MDE akan menggunakan
nilai kolom tagName secara default.
Untuk mengetahui informasi tentang cara menautkan rekaman ke instance metadata menggunakan kunci alami, lihat Menyelesaikan instance_id metadata menurut kunci alami.
Menautkan rekaman ke instance metadata cloud menggunakan instance metadata proto
Anda dapat menautkan rekaman ke instance metadata dengan memberikan referensi ke versi bucket metadata cloud dan menyediakan instance metadata proto dan, secara opsional, kunci alami dalam rekaman proto di parser. Metode menautkan instance metadata ini sangat berguna jika pesan sumber sudah berisi informasi kontekstual untuk membuat instance proto yang valid.
Pertimbangkan hal berikut saat menautkan rekaman ke instance metadata cloud menggunakan instance metadata proto:
- Jika Anda menghilangkan kunci alami, MDE akan otomatis memilih salah satu untuk Anda, bergantung pada jenis bucket.
- Jika Anda menghilangkan kunci alami dalam instance proto dalam konteks bucket
TAG, MDE akan otomatis memilihtagNamesebagai kunci alami. - Jika Anda menghilangkan kunci alami dalam instance proto dalam konteks bucket
RECORD, MDE akan otomatis membuat nilai hash objek pesan dan menggunakannya sebagai kunci alami. - Jika instance proto yang diberikan cocok dengan instance metadata terbaru untuk kunci alami yang diberikan, MDE akan menukar instance proto yang diberikan dengan UUID instance yang cocok dan menyimpan UUID di dalam rekaman.
- Jika instance proto yang diberikan tidak cocok dengan instance metadata yang paling banyak untuk kunci alami yang diberikan, MDE akan membuat instance metadata baru untuk kunci alami yang diberikan dan menyimpan UUID instance yang baru dibuat dalam catatan. Perilaku sistem ini memungkinkan Anda mengisi bucket metadata secara dinamis dengan instance yang dibuat dari pesan sumber.
Untuk mengetahui informasi tentang cara menautkan rekaman ke instance metadata menggunakan instance metadata proto, lihat Menyelesaikan ID instance metadata menurut nilai instance.
Materialisasi instance
Daripada hanya menyimpan UUID instance metadata, rekaman dapat secara opsional
mencakup seluruh instance itu sendiri. Hal ini disebut materialisasi. Perilaku ini dapat dikonfigurasi untuk setiap tujuan di tingkat jenis, dengan menetapkan nilai kolom materializeCloudMetadata untuk tujuan ke true.
Misalnya, mengaktifkan perwujudan metadata untuk tujuan BigQuery akan menghasilkan baris seperti berikut untuk data yang berisi referensi instance metadata:
{
"id": "e4b66cb9-7c60-4473-b1a1-1954eca92405",
"tag_name": "primepaintingrobot-01-airpressure",
"type_version": "1",
"event_timestamp": "2023-06-20 07:11:59.757000 UTC",
"value": "762.53",
"embedded_metadata": {},
"materialized_cloud_metadata": {
"tag":{
"bucket_number":143,
"bucket_version":1,
"instance":{
"datatype":"float",
"deviceID":"ppr-01",
"deviceName":"primepaintingrobot-01",
"vendor":"KUKA"
}
}
},
"cloud_metadata_ref": {
"device-metadata": {
"bucket_number": 143,
"bucket_version": 1,
"instance_id": "50e156a0-dbd9-4f9b-bdc8-1e77574bc4b1"
}
},
"ingest_timestamp": "2023-06-20 07:12:06.335000 UTC",
"source_message_id": "8434396321424812"
}
Metadata tersemat
Metadata yang berubah dengan cepat merepresentasikan data kontekstual yang berubah dengan cepat. Contoh umum untuk metadata yang berubah dengan cepat mencakup penghitung dan ID yang di-increment otomatis, misalnya, nomor seri atau ID transaksi.
MDE memungkinkan Anda menyusun, menyelaraskan, dan mentransformasikan metadata yang berubah dengan cepat menggunakan Whistle, serta menyematkannya langsung dalam rekaman dengan mengisi kolom bernama embeddedMetadata dalam rekaman proto di parser.
Semua tujuan data MDE yang didukung menyediakan metadata yang disematkan. Misalnya, mengisi kolom embeddedMetadata dalam catatan proto di parser akan menghasilkan baris seperti ini untuk catatan yang dihasilkan di BigQuery:
{
"id": "e4b66cb9-7c60-4473-b1a1-1954eca92405",
"tag_name": "primepaintingrobot-01-airpressure",
"type_version": "1",
"event_timestamp": "2023-06-20 07:11:59.757000 UTC",
"value": "762.53",
"embedded_metadata": {
"transactionNumber": "1234"
},
"materialized_cloud_metadata": {},
"cloud_metadata_ref": {},
"ingest_timestamp": "2023-06-20 07:12:06.335000 UTC",
"source_message_id": "8434396321424812"
}
Penghapusan otomatis metadata
Untuk metadata rekaman dan tag, MDE melacak perubahan yang terjadi di setiap kunci alami dengan membandingkan setiap instance baru dengan instance lama. Jika ada perubahan pada atribut instance, MDE akan membuat versi baru dan menandainya sebagai instance efektif terbaru. Menurut desainnya, metadata tag dan catatan diharapkan berada dalam perincian ribuan dan kurang dari seratus ribu. Batasan ini memungkinkan MDE mengindeks instance metadata saat berasal dari edge atau API tanpa memengaruhi throughput pemrosesan.
Terkadang karena kesalahan konfigurasi, parser akan menyisipkan kolom kardinalitas tinggi seperti stempel waktu dalam instance metadata, yang mengakibatkan proliferasi versi yang cepat untuk setiap kunci alami. Setelah mencapai nilai minimum tertentu, hal ini akan berdampak negatif terhadap performa penyerapan. Dalam beberapa kasus, hal ini dapat menyebabkan penghentian pemrosesan secara keseluruhan hingga layanan infrastruktur cloud yang mendasarinya diskalakan oleh administrator solusi.
Mulai dari v1.4.0, MDE menerapkan jumlah maksimum instance per kunci alami untuk memastikan performa yang konsisten. Saat jumlah kunci alami mendekati batas ini (defaultnya adalah 200), MDE akan mengirimkan peringatan ke API notifikasi baru untuk memberi tahu pengguna tentang kunci alami yang memiliki jumlah versi instance metadata yang tinggi. Jika ukuran instance kunci alami melampaui batas, MDE akan menghapus instance lama dari penyimpanan internal secara otomatis. API ini juga akan mengirimkan notifikasi lain ke Notifications API untuk memberi tahu pengguna tentang kunci alami yang telah dihapus.
Aktivitas peringatan dan penghapusan juga dilaporkan dalam log yang dapat digunakan untuk membuat kebijakan pemberitahuan di Cloud Monitoring project.
Batasan penamaan untuk Bucket Metadata
Nama Bucket Metadata dapat berisi hal berikut:
- Huruf (huruf besar dan huruf kecil), angka, dan karakter khusus
-dan_. - Dapat berisi hingga 255 karakter.
Anda dapat menggunakan ekspresi reguler berikut untuk validasi: ^[a-z][a-z0-9\\-_]{1,255}$.
Jika Anda mencoba membuat entitas yang melanggar batasan penamaan, Anda akan mendapatkan 400 error.