Jenis

Manufacturing Data Engine (MDE) membantu Anda mengubah sekumpulan pesan sumber menjadi rekaman jenis tertentu melalui parsing.

Jenis adalah entitas konfigurasi yang merepresentasikan target operasi penguraian, dan mendeskripsikan sekumpulan rekaman yang serupa secara struktural dan semantik dengan tingkat perincian umum yang, secara opsional, berbagi konteks metadata tertentu.

source-to-target

Misalnya, Anda dapat membuat jenis "status mesin" dan "pembacaan sensor getaran". Jenis pertama dapat digunakan untuk memodelkan peristiwa perubahan status mesin, seperti "Berjalan", "Idle", "Pemeliharaan Terjadwal", dan "Pemeliharaan Tidak Terjadwal", sedangkan jenis kedua dapat digunakan untuk memodelkan aliran pembacaan sensor getaran numerik.

MDE dilengkapi dengan serangkaian jenis default, tetapi Anda dapat membuat jenis baru. Jenis ditentukan oleh karakteristik berikut:

  • Nama: Nama jenis.
  • Archetype: Nama arketipe yang menjadi dasar jenis. Jenis di MDE selalu dikaitkan dengan tepat satu arketipe
  • Spesifikasi penyimpanan: Daftar setelan per tujuan data. Spesifikasi penyimpanan memungkinkan konfigurasi apakah rekaman ditulis ke tujuan data dan memungkinkan penyediaan setelan khusus tujuan lebih lanjut.
  • Parameter konfigurasi opsional, termasuk:
    • Skema JSON kolom data (hanya berlaku untuk jenis arketipe diskrit dan berkelanjutan).
    • Asosiasi bucket metadata: Daftar bucket metadata yang rekamannya harus menyediakan referensi instance untuk jenis ini.

Jenis dan tujuan data

Aliran rekaman dari jenis tertentu diproses oleh tujuan data yang diaktifkan untuk jenis. Tujuan data dapat diaktifkan (diaktifkan atau dinonaktifkan) untuk jenis. Misalnya, kumpulan data dari suatu jenis dapat dikonfigurasi untuk ditulis di BigQuery, tetapi tidak di Cloud Storage.

Tujuan data yang didukung

MDE mendukung tujuan data berikut:

  1. BigQuery
  2. Bigtable/Federation API
  3. Cloud Storage
  4. Pub/Sub (JSON dan Protobuf)

Tujuan data BigQuery

Saat jenis baru dibuat, MDE akan otomatis membuat tabel jenis yang sesuai di BigQuery dalam set data mde_data. Kumpulan data dari setiap jenis ditulis ke tabel jenis yang sesuai.

Tujuan data Cloud Storage

Data disimpan dalam bucket Cloud Storage bernama <project_id>-gcs-ingestion dalam file AVRO menggunakan partisi Hive dengan jendela 10 menit dan 10 partisi per jendela. Catatan dikelompokkan dalam folder menurut jenis.

Tujuan data Pub/Sub

Sink Pub/Sub memublikasikan rekaman ke topik khusus. Skema pesan Pub/Sub dijelaskan dalam skema pesan sink Pub/Sub.

Materialisasi metadata

Setiap sink data pada jenis dapat dikonfigurasi untuk mewujudkan metadata dalam catatan. Jika setelan ini diaktifkan, referensi instance metadata akan diselesaikan ke objek instance metadata, dan objek tersebut akan disertakan dalam catatan. Cara yang tepat dalam menyimpan atau menghasilkan metadata bergantung pada tujuan data. Misalnya, di BigQuery, metadata yang diwujudkan ditulis ke materialized_metadata_field dengan skema berikut:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "description": "Metadata instance"
  }
}

Arketipe

Arketipe merepresentasikan superclass jenis, dan setiap arketipe dirancang untuk menyediakan model pemrosesan dan penyimpanan yang optimal untuk data. Arketipe menentukan kolom wajib inti yang harus ada dalam rekaman jenis tertentu yang dikeluarkan oleh parser. MDE dilengkapi dengan serangkaian enam arketipe standar dan berklaster yang ditentukan sistem dan dikelompokkan dalam tiga keluarga arketipe:

  1. Seri data numerik (NDS)
  2. Seri data diskret (DDS)
  3. Seri data berkelanjutan (CDS)

arketipe

Jenis dalam MDE selalu dikaitkan dengan tepat satu arketipe, dan arketipe jenis ditentukan pada waktu pembuatan.

Anda dapat menggunakan jenis untuk menentukan batasan lebih lanjut pada rekaman proto yang dikeluarkan oleh parser di luar yang diterapkan oleh arketipe. Misalnya, Anda dapat menentukan bentuk kolom data untuk suatu jenis, atau Anda dapat menentukan bahwa rekaman jenis harus dikontekstualisasi oleh metadata tertentu.

Singkatnya, skema catatan proto adalah kombinasi dari:

  1. Skema arketipe
  2. Skema jenis

Kelompok arketipe

Setiap keluarga arketipe berisi dua jenis arketipe:

  1. Standar
  2. Dikelompokkan

MDE v1.3 memperkenalkan konsep arketipe berklaster, yang memperluas fungsi arketipe standar. Arketipe yang dikelompokkan menyediakan empat kolom generik yang dapat diisi dengan nilai di parser. Setiap tujuan data menggunakan empat kolom ini untuk memberikan kemampuan kueri dan akses data tambahan:

  • BigQuery: Tabel jenis yang dikelompokkan di BigQuery dikelompokkan berdasarkan empat kolom generik secara berurutan. Hal ini memungkinkan Anda memfilter data di BigQuery secara efisien pada kolom yang dikelompokkan.
  • Bigtable Federation API: Federation API menggunakan kolom berkelompok untuk membuat kunci baris di Bigtable yang memungkinkan pola akses data baru.
  • Pub/Sub: Pesan Pub/Sub meneruskan kolom sebagai kolom tingkat pertama dalam pesan Pub/Sub.

Keluarga arketipe numerik

Kelompok arketipe numerik dirancang untuk berfungsi sebagai dasar bagi jenis yang memodelkan serangkaian pesan numerik yang diberi stempel waktu, misalnya, sensor suhu yang memancarkan aliran pembacaan.

Versi standar dan berkluster dari arketipe menentukan skema rekaman dasar berikut:

Standar

Kolom Jenis data Wajib
tagName String Ya
value Angka Ya
eventTimestamp Bilangan bulat (diformat sebagai epoch ms) Ya

Dikelompokkan

Kolom Jenis data Wajib
tagName String Ya
value Angka Ya
eventTimestamp Bilangan bulat (diformat sebagai epoch ms) Ya
clustered_column_1 String Tidak
clustered_column_2 String Tidak
clustered_column_3 String Tidak
clustered_column_4 String Tidak

Keluarga arketipe diskrit

Kelompok arketipe diskrit dirancang untuk berfungsi sebagai dasar bagi jenis yang memodelkan peristiwa yang diberi stempel waktu, misalnya, perubahan parameter yang didorong operator dalam mesin atau proses tertentu.

Versi standar dan berkluster dari arketipe menentukan skema rekaman dasar berikut:

Standar

Kolom Jenis data Wajib
tagName String Ya
data Objek JSON Ya
eventTimestamp Bilangan bulat (diformat sebagai epoch ms) Ya

Dikelompokkan

Kolom Jenis data Wajib
tagName String Ya
data Objek JSON Ya
eventTimestamp Bilangan bulat (diformat sebagai epoch ms) Ya
clustered_column_1 String Tidak
clustered_column_2 String Tidak
clustered_column_3 String Tidak
clustered_column_4 String Tidak

Keluarga arketipe berkelanjutan

Kelompok arketipe berkelanjutan dirancang untuk berfungsi sebagai dasar bagi jenis yang memodelkan deret status berurutan yang ditentukan oleh stempel waktu mulai dan berakhir, misalnya, status operasi mesin untuk jangka waktu yang berkelanjutan.

Versi standar dan berkluster dari arketipe menentukan skema rekaman dasar berikut:

Standar

Kolom Jenis data Wajib
tagName String Ya
data Objek JSON Ya
eventTimestampStart Bilangan bulat (diformat sebagai epoch ms) Ya
eventTimestampEnd Bilangan bulat (diformat sebagai epoch ms) Ya

Dikelompokkan

Kolom Jenis data Wajib
tagName String Ya
data Objek JSON Ya
eventTimestampStart Bilangan bulat (diformat sebagai epoch ms) Ya
eventTimestampEnd Bilangan bulat (diformat sebagai epoch ms) Ya
clustered_column_1 String Tidak
clustered_column_2 String Tidak
clustered_column_3 String Tidak
clustered_column_4 String Tidak

Kolom Data

Arketipe deret data diskret dan deret data berkelanjutan menerima skema JSON untuk kolom data. Jika skema JSON untuk kolom ditentukan, pada nilai kolom data yang terdapat dalam rekaman yang dikeluarkan oleh parser akan divalidasi terhadap skema saat runtime. Misalnya, Anda menentukan skema berikut untuk jenis deret waktu diskrit:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "eventName": {
      "type": "string"
    }
  },
  "required": ["eventName"]
}

Dengan skema sebelumnya untuk jenis deret waktu diskrit, rekaman (parsial) jenis tersebut yang dikeluarkan oleh parser tidak valid:

{
  "data": {
    "complex": {
      "machineName": "example"
    }
  }
}

Jika validasi data gagal, data akan dipindahkan ke antrean pesan yang tidak terproses. Kumpulan data dalam dead letter queue dapat diproses secara manual nanti.

Bucket metadata

Jenis dapat mereferensikan bucket metadata. Referensi bucket metadata pada jenis menentukan apakah rekaman dapat atau harus (bergantung pada nilai atribut required ) memberikan referensi ke instance bucket metadata.

Referensi bucket metadata pada jenis menentukan kontrak metadata untuk rekaman jenis tersebut. Misalnya, Anda dapat menentukan bahwa semua rekaman jenis tertentu harus dikontekstualisasi dengan metadata perangkat (memberikan referensi ke instance metadata dalam bucket metadata bernama device).

Jika bucket metadata dikaitkan dengan jenis dan tanda required disetel ke true, catatan jenis tersebut yang dikeluarkan oleh parser yang tidak memberikan referensi ke instance bucket metadata akan dipindahkan ke antrean pesan yang tidak terkirim. Untuk mengetahui informasi selengkapnya, lihat Cara memproses ulang pesan.

Pembuatan versi jenis

Ada berbagai jenis pembuatan versi dan bagian berikut menjelaskan setiap jenisnya.

Pembuatan versi jenis baru

Anda dapat membuat versi baru untuk jenis tertentu. Setiap versi baru dapat menentukan asosiasi bucket metadata tambahan atau mengubah skema kolom data. Namun, untuk memastikan konsistensi data selama masa aktif jenis, versi jenis baru hanya dapat berkembang ke depan, dan harus mematuhi aturan pembuatan versi. Versi baru jenis dapat membuat perubahan berikut:

Mei:

  • Tambahkan kolom opsional baru ke skema data.
  • Menandai kolom wajib diisi sebagai opsional untuk skema data.
  • Menambahkan referensi bucket metadata baru.

Tidak boleh:

  • Menghapus kolom dari skema data.
  • Ubah jenis data kolom yang ada dalam skema data.
  • Menandai atribut opsional sebagai wajib di skema data.
  • Hapus referensi bucket metadata.

Pengeditan versi huruf yang ada

Spesifikasi dan transformasi penyimpanan dapat diperbarui pada versi jenis yang ada tanpa perlu membuat versi jenis baru.

Pengeditan huruf

Sebagian besar operasi pada jenis memerlukan pembuatan versi jenis baru atau pengeditan versi jenis yang ada. Satu-satunya operasi yang dapat dilakukan pada jenis terlepas dari versinya adalah mengaktifkan atau menonaktifkannya. Jika jenis dinonaktifkan, semua versi jenis tersebut akan berhenti menerima data.

Batasan penamaan untuk Jenis

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