ThingWorx 模型與資料最佳作法 > 透過 ThingWorx 儲存資料 > ThingWorx 中以资料为中心的建模
ThingWorx 中以资料为中心的建模
選擇正確的模型元素
PTC 建議熟悉 ThingWorx 建模概念以便遵循本部份的其餘部份。有關詳細資訊,請參閱 Composer 中的 ThingWorx 模型定義。ThingWorx 中的模型是實體和解決方案環境的邏輯表示。此邏輯表示是透過建立內建模型元素範本 (例如物件、物範本、物形式和資料形式) 的實例來實現的。本部份針對如何設計以 ThingWorx 模型為基礎的解決方案之資料儲存提供了相關建議。在 ThingWorx 中,有多個用於儲存資料的選項。瞭解每個選項將協助您決定資料的最佳儲存解決方案:
串流
* 
藉由 規模估算指南這種有用方法,來預估 ThingWorx 為滿足您需求可能需要的處理量及記憶體量。
何為基礎類型及資料形式?
ThingWorx 基礎類型提供一個抽象層,將 ThingWorx 應用程式開發環境與 Edge 的特定資料類型及資料存放區隔離開來。這樣一來,便允許 ThingWorx 應用程式與資料存放區無關,並且允許在執行時間變更基礎類型,而無需變更基礎資料庫結構描述。
資料形式是一組指定的欄位定義及相關中繼資料,其中每個欄位都是基礎類型。資料形式大致符合關聯式資料庫表格的概念,其中基礎類型類似於欄位的資料類型。
物件內容
資料擷取到 ThingWorx Platform 的最重要進入點是透過物件內容,其中連線的裝置都會在 ThingWorx 內建模為物件。如需一般描述,請參閱 物件內容
以下使用案例說明了可用來儲存物件內容的不同資料儲存選項。其中除草機物件必須包含具有下列內容的除草機引擎物形式:Max RPM, Engine TemperatureLast Oil Service Date
這些內容有三個資料儲存選項:唯讀選項、持續性選項、已記錄選項。考慮到上述範例,建議採用以下方法:
Max RPM - 使用唯讀選項,因為此內容為靜態值,不應在執行時間變更。但是,如果引擎升級,則可以透過變更預設值來變更此值。
Last Oil Service Date - 使用持續性選項,因為此內容可在執行時間變更,並且您僅對最新日期感興趣。使用持續性選項也會支撐 ThingWorx 伺服器重新啟動。
Engine Temperature - 使用已記錄選項,因為此內容為連續變更值,本質上為時間序列資料。
串流
串流用於儲存時間序列資料的 blob。每個串流項目皆具有時間戳記、來源、來源類型、欄位值、資料標籤和位置欄位。欄位清單以資料形式定義,並且與串流關聯。此欄位清單的欄位值儲存在單一欄中,作為串流中的 json 或文字 blob。因此,當查詢單一欄位值時,將會傳回包含相符欄位值的整個一列或多列。換句話說,當查詢串流以在短時間內傳回指定來源的欄位值時,資料擷取將更快。使用特定欄位值的條件查詢會導致必須篩選應用程式層級的欄位值資料。
最佳作法包括:
用於與 ThingWorx 模型中的物件不直接關聯的任意時間序列資料 (相較於值串流)
當不需要依欄位值進行大量篩選來查詢所儲存的資料時使用
當查詢受短時間段限制時使用
避免在長時間範圍內跨多個來源查詢
值串流
值串流用於將物件的個別內容儲存為時間序列資料。必須將物件中的內容定義為已記錄,才能將其視為時間序列資料,並且必須將值串流用於資料儲存。每個值串流項目皆具有時間戳記、來源、內容類型、內容名稱和內容值。這與串流儲存模型形成對比,因爲與將整組欄位值儲存在單一列的欄位值欄中作為 json/文字 blob,值串流將每個内容值儲存在與來源及時間戳記相關聯的單獨列中。當查詢值串流中的物件内容資料時,僅會傳回該内容的值。
值串流對物件驅動模型有益。最佳作法是跨多個值串流分割物件以改善索引效能。雖然並非嚴格意義上的最佳作法,但某些大量資料擷取的情況 (超出規模估算指南中所述的擷取率) 也可以考慮建立指向單獨資料庫實例的多個持續性提供者。如此一來,便可確保資料移至資料庫中的不同表格。如果新增了多個資料庫,則可將持續性提供者指向特定資料庫。此情況下也需要進行資料移轉。
如果使用的是 RDMS (PostgreSQL、MSSQL、H2),則所有記錄 (即使是來自不同物件的不同值串流) 都會寫入至資料庫中的同一表格。
如果使用的是 PostgreSQL,則在 PostgreSQL 資料庫的 ValueStream 表格中,每一列都會僅保留一個內容的記錄。這意味著,值串流會獨立追蹤每個内容的值變更,並且在使用 QueryPropertyHistory 服務之後,它會檢查物件中每個内容的資料流,並將所有最新更新 (每次更新都有不同的更新時間) 收集到一個資料負載結果中。
資料表
資料表是一個 ThingWorx 實體,它本質上是對標準關聯式資料庫表格的抽象化,可用於簡化及加速 ThingWorx 應用程式開發。但是,應注意資料表的後端實行並不等同於關聯式資料庫表表格,且不具有關聯式資料庫表格的完整靈活性。資料表作為第一類別 ThingWorx 實體,可以更容易地處理 ThingWorx 模型層級的資料存取功能。與資料表相關聯的資料形式可定義資料表及其主索引鍵所在的欄或欄位。但是,這並不意味著在效能與擴充性方面取代標準關聯式資料庫表格。
如需詳細資訊,請參閱 資料表最佳作法以及 資料表大小設定限制