Lapisan Bronze
Lapisan Bronze berisi dua skema data yang berbeda, masing-masing melayani aspek berbeda dari platform telematika dan intelijen bisnis:
raw_business_data - berisi tabel, atribut, dan nilai yang terkait dengan informasi bisnis, seperti kendaraan, karyawan, geofence yang ditambahkan oleh pengguna, dll.
raw_telematics_data - berisi tabel, atribut, dan nilai yang terkait dengan data telematika yang dikirimkan dari perangkat yang dipantau, seperti lokasi, input, output, dan peristiwa.
Setiap skema dioptimalkan untuk domain data dan pola akses spesifiknya, memberikan cakupan komprehensif untuk kebutuhan operasional, telematik, dan manajemen aset.
raw_business_data struktur
raw_business_data strukturSkema ini berisi 40+ tabel yang dipilih dengan cermat untuk mencakup berbagai aspek bisnis dan kasus penggunaan. Tabel-tabel ini mewakili entitas bisnis inti Anda, struktur organisasi, dan data operasional.
Temukan detail skema raw business data di bawah.
Frekuensi pembaruan
Data dalam skema ini disinkronkan dengan DB inti. Pembaruan terjadi secara bertahap saat perubahan terjadi di basis data MySQL sumber, biasanya kurang dari 5 menit sejak perubahan sumber.
description_parameters
description_parametersSistem mencakup data referensi untuk menstandarisasi nilai di seluruh basis data:
Definisi tipe
Tipe entitas standar
vehicle_type: car, truck, bus
Kode status
Nilai status tugas dan sistem
tasks_status: unassigned, assigned, done
Definisi satuan
Satuan pengukuran untuk sensor
units_type: liter, gallon, celsius
Klasifikasi entitas
Kategori entitas bisnis
entities_type: place, task, customer
Tabel utama menurut kategori
Tabel dalam raw_business_data skema diatur ke dalam kategori fungsional untuk memudahkan navigasi. Tabel di bawah merangkum tabel utama menurut tujuan bisnis mereka:
Ikhtisar Skema Database
Struktur organisasi
users
departments
employees
groups
Akun pengguna dengan informasi profil
Departemen dengan data geolokasi
Detail karyawan dan pengemudi
Grup organisasi tracker
Objek dan perangkat
devices
models
objects
vehicles
sensor_description
Perangkat pelacak fisik
Spesifikasi model perangkat
Objek yang dimonitor
Detail dan spesifikasi kendaraan
Detail konfigurasi sensor
Tempat dan zona
places
zones
garages
tags
Titik minat dengan geolokasi
Area pemantauan geofence
Lokasi layanan kendaraan
Label organisasi
Data operasional
tasks
forms
checkins
events
statuses
vehicle_service_tasks
Penugasan dan pelacakan tugas
Formulir pengumpulan data
Catatan kehadiran berbasis lokasi
Peristiwa sistem dan notifikasi
Definisi status
Catatan pemeliharaan kendaraan
raw_telematics_data struktur
raw_telematics_data strukturSkema raw_telematics_data mengandung tiga tipe tabel utama yang bekerja bersama untuk menyediakan data perangkat yang komprehensif.
Temukan detail skema data telemetri mentah di bawah.
Tabel utama menurut kategori
Setiap tabel memiliki tujuan spesifik dalam menangkap aspek berbeda dari informasi perangkat:
tracking_data_core
tracking_data_coreTujuan: Data inti lokasi dan gerakan
Kolom kunci
device_id, device_time, platform_time, latitude, longitude, speed, altitude, satellites, hdop, event_id
Pengindeksan
Dioptimalkan dengan indeks pada (device_id, device_time)
Catatan khusus
Data lokasi (lintang dan bujur) menggunakan format integer dengan presisi 10⁷ untuk kinerja TimescaleDB yang optimal Kecepatan juga disimpan dalam integer, jadi Anda perlu membaginya dengan 100
inputs
inputsTujuan: Pembacaan sensor dari perangkat
Kolom kunci
input_id, device_id, device_time, sensor_name, value
Konten
Pembacaan analog (level bahan bakar, suhu, tegangan), nilai terhitung (RPM mesin)
Hubungan
FROM raw_telematics_data.inputs AS i
JOIN raw_business_data.sensor_description AS sd
ON i.device_id = sd.device_id AND i.sensor_name = sd.input_label
JOIN raw_telematics_data.tacking_data_core AS tdc
ON i.device_id = tdc.device_id AND i.device_time = tdc.device_timestates
statesTujuan: Indikator status perangkat dan mode operasional
Kolom Kunci
state_id, device_id, device_time, state_name, value
Konten
Indikator mode operasi (bekerja, menganggur, mati), status komponen (kontak, pintu)
Format Nilai
Nilai Boolean (1/0) atau kode status spesifik
Data dalam skema ini diambil langsung dari perangkat, dengan latensi minimal (biasanya beberapa detik). Skema dioptimalkan untuk data deret waktu menggunakan TimescaleDB untuk penyimpanan dan pengambilan yang efisien.
Informasi tambahan
Validasi data
Basis data menegakkan integritas data melalui beberapa mekanisme:
KONSTRANGSI CHECK memvalidasi bahwa nilai berada dalam rentang yang dapat diterima
Kunci asing memastikan hubungan antar tabel tetap konsisten
KONSTRANGSI NOT NULL menjamin bahwa bidang yang diperlukan selalu memiliki nilai
Nilai DEFAULT memberikan nilai cadangan ketika data tidak diberikan secara eksplisit
Optimisasi kueri
Tabel diatur dengan strategi pengindeksan spesifik:
Semua tabel menyertakan indeks berbasis waktu pada
record_added_atKolom kunci asing memiliki indeks khusus untuk kinerja join
Kombinasi kolom yang sering digunakan memiliki indeks komposit
TimescaleDB menyediakan indeks khusus untuk kueri deret waktu
repo struktur data
repo struktur dataSkema ini saat ini dalam pengembangan. Jika Anda tertarik akses awal atau memiliki pertanyaan tentang fungsionalitas ini, silakan hubungi [email protected].
Skema repo skema menyediakan kerangka kerja komprehensif untuk mengelola struktur organisasi, aset, perangkat, dan hubungan mereka dalam lingkungan multi-tenant. Dibangun di atas PostgreSQL 14+ dengan ekstensi ltree, skema mendukung organisasi hierarkis, definisi bidang kustom untuk setiap tipe entitas, kontrol akses berbasis peran dengan pembatasan tingkat objek, dan jejak audit lengkap dengan pelacakan perubahan tingkat bidang. Semua entitas dapat diperluas tanpa modifikasi skema, dilokalkan untuk penerapan internasional, dan dihubungkan melalui hubungan polimorfik fleksibel.
Skema ini menangani skenario manajemen data yang kompleks termasuk hierarki aset armada di berbagai tingkat organisasi, platform SaaS multi-tenant yang membutuhkan isolasi data, operasi yang dipandu kepatuhan dengan kebutuhan audit terperinci, dan sistem yang membutuhkan model data dinamis yang dapat disesuaikan melalui bidang kustom daripada migrasi basis data.
Temukan repo detail skema di bawah.
Frekuensi pembaruan
Data di repo skema disinkronkan secara real-time dengan sistem sumber. Pembaruan terjadi segera saat perubahan terjadi, dengan jejak audit yang merekam semua modifikasi untuk kepatuhan dan analisis historis.
ci_base
ci_baseSkema repo skema menggunakan pola Single Table Inheritance untuk semua data referensi melalui ci_base tabel:
Skema repo skema menggunakan Single Table Inheritance pola untuk semua data referensi melalui ci_base tabel. Desain ini mengonsolidasikan kamus sistem, klasifikasi, dan item referensi yang ditentukan pengguna ke dalam satu struktur terpadu, memberikan konsistensi dan fleksibilitas di seluruh skema.
Arsitektur:
Skema ci_base tabel berfungsi sebagai dasar untuk semua data referensi, menggunakan discriminator field untuk mengidentifikasi jenis referensi tertentu. Setiap jenis referensi memiliki tabel terkait (seperti ci_device_type, ci_asset_type) yang berbagi id sebagai ci_base, menciptakan hubungan pewarisan yang type-safe.
Bagaimana entitas bisnis terhubung ke ci_base:
Semua entitas bisnis dalam repo skema merujuk ci_base subtipe untuk menentukan klasifikasi dan perilaku mereka:
organization→ merujukci_organization_type(yang mewarisi darici_entity_type→ci_base)user→ merujukci_user_type(yang mewarisi darici_entity_type→ci_base)device→ merujukci_device_typedanci_device_status(keduanya mewarisi darici_base)asset→ merujukci_asset_type(yang mewarisi darici_entity_type→ci_base)inventory→ merujukci_inventory_type(yang mewarisi darici_entity_type→ci_base)asset_group→ merujukci_asset_group_type(yang mewarisi darici_entity_type→ci_base)
Kategori jenis referensi:
Konfigurasi sistem
ci_module, ci_country, ci_role
Mendefinisikan modul sistem, referensi geografis, dan peran pengguna
Definisi jenis entitas
ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type
Mengklasifikasikan semua entitas bisnis berdasarkan jenis
Status dan klasifikasi
ci_device_status, ci_asset_type_category
Melacak status entitas dan mengelompokkan jenis ke dalam kategori
Kontrol akses
ci_permission_scope
Mendefinisikan izin apa yang dapat diberikan (terkait dengan ci_module dan ci_entity_type)
Hubungan
ci_device_relation_type
Mendefinisikan jenis hubungan antara perangkat (master-slave, cadangan, dll.)
Kategorisasi
ci_tag, ci_catalog_category
Memungkinkan penandaan yang fleksibel dan organisasi katalog
Tabel utama menurut kategori
Tabel dalam repo skema disusun ke dalam kategori fungsional. Deskripsi di bawah merangkum tabel paling penting berdasarkan tujuan bisnisnya.
organization
organizationTujuan: Manajemen organisasi hirarkis
Kolom kunci
id, parent_id, path, organization_type_id, title_en, is_active, deleted_at
Pengindeksan
Indeks GiST pada path untuk kueri hierarkis, indeks pada parent_id dan organization_type_id
Catatan khusus
Menggunakan ltree untuk hierarki multi-level, mewarisi dari customizable_entity untuk dukungan bidang khusus
user
userTujuan: Akun pengguna dan autentikasi
Kolom kunci
id, organization_id, user_type_id, identity_provider, identity_provider_id, full_name, is_active
Pengindeksan
Indeks unik pada (organization_id, identity_provider, identity_provider_id)
Catatan khusus
Integrasi penyedia identitas eksternal (Keycloak, Auth0, Okta), mewarisi dari customizable_entity
device
deviceTujuan: Perangkat pelacak fisik
Kolom kunci
id, organization_id, device_type_id, status_id, hw_id, label
Pengindeksan
Indeks pada organization_id, device_type_id, status_id, hw_id
Catatan khusus
Identifikasi perangkat keras untuk pelacakan perangkat, mewarisi dari customizable_entity untuk bidang khusus
asset
assetTujuan: Aset fisik atau virtual
Kolom kunci
id, organization_id, asset_type_id, label, description
Pengindeksan
Indeks pada organization_id dan asset_type_id
Catatan khusus
Mewarisi dari customizable_entity, terhubung ke perangkat melalui device_asset_link
inventory
inventoryTujuan: Catatan inventaris dan gudang
Kolom kunci
id, organization_id, inventory_type_id, code
Pengindeksan
Indeks unik pada (organization_id, code)
Catatan khusus
Kode unik dalam organisasi, terhubung ke perangkat melalui device_inventory_link
asset_group
asset_groupTujuan: Pengelompokan aset dengan pelacakan historis
Kolom kunci
id, organization_id, group_type_id, title_en, description
Hubungan
FROM repo.asset_group AS ag JOIN repo.asset_group_item AS agi ON agi.group_id = ag.id JOIN repo.asset AS a ON a.id = agi.asset_id WHERE agi.detached_at IS NULL
Catatan khusus
Keanggotaan berbasis waktu melalui asset_group_item, kueri anggota saat ini dengan WHERE detached_at IS NULL
custom_field_def
custom_field_defTujuan: Definisi bidang khusus dan metadata
Kolom kunci
id, organization_id, owner_entity_type_id, code, field_type, is_multi, is_required
Konten
Jenis bidang termasuk teks, angka, boolean, tanggal, datetime, entity_ref, catalog_item_ref
Catatan khusus
Memungkinkan bidang khusus yang fleksibel untuk jenis entitas apa pun, nilai disimpan dalam custom_field_value_* tabel
acl_role_permission
acl_role_permissionTujuan: Manajemen izin berbasis peran
Kolom kunci
id, role_id, permission_scope_id, target_entity_id, actions
Konten
Bitmask aksi (READ=1, UPDATE=2, DELETE=4, CREATE=8), izin spesifik target atau menyeluruh berdasarkan jenis entitas
Hubungan
FROM repo.user_role AS ur JOIN repo.acl_role_permission AS rp ON rp.role_id = ur.role_id WHERE ur.user_id = $user_id
Catatan khusus
Bekerja dengan user_role dan acl_user_scope untuk menentukan izin akhir pengguna
audit_event
audit_eventTujuan: Log audit terpadu untuk semua perubahan sistem
Kolom kunci
id, event_category, user_id, aggregate_type, aggregate_id, event_type, event_data, occurred_at
Pengindeksan
Indeks pada (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)
Catatan khusus
Dipartisi berdasarkan occurred_at (bulanan), dua kategori: auth (autentikasi) dan domain (peristiwa bisnis), menyimpan delta perubahan tingkat bidang dalam event_data JSONB
Hubungan data
Skema repo skema menerapkan pola hubungan yang canggih untuk pemodelan data yang fleksibel:
Struktur hirarkis
Organisasi menggunakan path ltree untuk kueri pohon yang efisien
Item referensi (
ci_base) mendukung hierarki opsionalPemeliharaan path otomatis melalui trigger basis data
Pola pewarisan
Pewarisan tabel:
customizable_entity→ entitas bisnis (organization,user,device,asset,inventory,asset_group)Pewarisan ID:
ci_base→ tabel jenis referensiDiskriminasi tipe melalui
entity_type_iddandiscriminatorfield
Hubungan polimorfik
Beberapa tabel menggunakan referensi polimorfik tanpa constraint foreign key untuk fleksibilitas maksimum:
acl_role_permission.target_entity_id→ setiapcustomizable_entityacl_user_scope.target_entity_id→ setiapcustomizable_entityentity_tag.entity_id→ setiapcustomizable_entity
Hubungan ini divalidasi di tingkat aplikasi.
Informasi tambahan
Validasi data
Skema repo skema menegakkan integritas data melalui beberapa mekanisme:
Kendala basis data
Kendala UNIQUE dengan dukungan soft delete (indeks parsial WHERE
deleted_atIS NULL)Kendala CHECK (mis.,
device_relationmemastikanmaster_id≠slave_id)Kendala NOT NULL pada bidang yang wajib diisi
Nilai DEFAULT untuk cap waktu dan flag boolean
Validasi di tingkat aplikasi
Validasi jenis entitas untuk referensi polimorfik
Validasi katalog untuk referensi bidang khusus
Validasi jenis bidang khusus
Manajemen array bidang multi-nilai
Optimisasi kueri
Tabel diatur dengan strategi pengindeksan spesifik:
Indeks standar:
Semua foreign key memiliki indeks khusus
Indeks berbasis waktu pada
created_at,updated_at,deleted_atIndeks komposit untuk kolom yang sering digabungkan
Indeks khusus:
Indeks GiST pada path ltree untuk kueri hierarkis
Indeks unik parsial yang mendukung soft delete
Indeks nilai bidang khusus untuk penyaringan dan pengurutan
Indeks event audit pada waktu + entitas untuk pencarian efisien
Pertimbangan kinerja:
Direkomendasikan connection pooling (PgBouncer)
Pemeliharaan VACUUM rutin untuk tabel besar
Kemungkinan partisi masa depan untuk
devicetabel berdasarkanorganization_idView materialized untuk perhitungan kontrol akses yang kompleks
Last updated
Was this helpful?