Composer 中的 ThingWorx 模型定義 > 資料儲存 > 持續性提供者 > 將 InfluxDB 用作持續性提供者
將 InfluxDB 用作持續性提供者
概觀
如果您的系統集中處理時間序列資料,而且您的實行重度依賴於值串流或串流以實現資料持續性/擷取,我們建議在 ThingWorx 中使用 InfluxDB 作為 持續性提供者。InfluxDB 是專門針對時間序列資料所撰寫的一個高效能資料存放區。其允許對該相同資料執行高輸送量的內嵌、壓縮與即時查詢。對於牽涉大量加上時間戳記之資料的使用案例而言,可將 InfluxDB 作為資料存放區使用,這些資料包括 DevOps 監視、記錄資料、應用程式指標、IoT 感應器資料以及即時分析。此外,它還提供包括「資料保留原則」(RP) 等在內的其他功能。InfluxDB Enterprise 針對時間序列資料需求提供了具有高可用性且可高度調整的叢集解決方案。
* 
必須使用 ThingWorx 8.4.0 及更新版本才能使用 InfluxDB。
InfluxPersistenceProviderPackage 可作為 PostgreSQL 或 MSSQL 之預設安裝的一部份使用。
* 
InfluxDB 資料提供者目前僅支援值串流與串流。目前不提供對於資料表、wiki 及部落格的支援。
* 
InfluxDB 資料提供者目前不支援匯出功能。
* 
不支援將 InfluxDB 作為內容提供者。
* 
InfluxDB 資料提供者目前僅支援名稱為 "autogen" 的保留政策。建立資料庫以與資料提供者搭配使用時,您可指定原則名稱及其他原則,例如複寫因數等。
InfluxDB Enterprise 與 ThingWorx 初期規劃
* 
上圖包含 InfluxDB Enterprise。對於 InfluxDB 開放原始碼,架構圖表將會相同,不過它只使用一個節點。
在本文件集中,當提及 InfluxDB Enterprise 的組態時,會使用下列術語:
負載平衡器 - InfluxDB Enterprise 不會像負載平衡器一樣運作。管理員需要對其進行配置。
叢集 - InfluxDB Enterprise 叢集由兩種類型的節點組成:中繼節點與資料節點。
資料節點 - 所有原始時間序列資料都位於此處。如需獲得高可用性,您需要複寫因數至少為二。
中繼節點 - 這些節點都有簡單的工作,可保持狀態的一致性。它們只包含關於狀態的基本資訊,例如保留原則、使用者與資料庫。在高可用性環境下,至少需要三個中繼節點。
使用 InfluxDB Enterprise 的優點
如果您要在資料存放區中尋找相對於目前可用於其他資料庫的資料而言資料量更大且速度更快的資料,InfluxDB Enterprise 具有下列優點:
擷取資料的速度更快
您可以使用多個資料存放庫存放執行時間資料。例如,您可將關聯式資料存放在 PostgreSQL 中,同時使用 InfluxDB 來存放大量串流與值串流資料。您在定義串流或值串流時,ThingWorx 會使用預設執行時間資料存放區提供者,不過您可將其配置為使用任何定義的持續性提供者。
* 
您仍可從其他資料提供者匯出資料並將資料匯入至 InfluxDB。ThingWorx 會處理資料提取。
適合雲端的架構 (水平調整,僅適用於 InfluxDB Enterprise)
安裝與配置 InfluxDB
* 
誰安裝 Influx 資料庫,誰就必須負責閱讀及瞭解針對 InfluxDB 提供的所有安全性相關文件集。PTC 強烈建議使用安全組態安裝及配置 InfluxDB,包括使用使用者名稱與強式密碼。
* 
此程序假設已安裝 ThingWorx。請參閱 安裝 ThingWorx
1. 下載並安裝 InfluxDB。
* 
Windows 不支援 InfluxDB。下列步驟使用 UNIX 作業系統。
InfluxDB 開放原始碼 (單一節點):請參考 https://docs.influxdata.com/influxdb/v1.7/introduction/installation/
下載連結:
下載 links-Data 節點:
下載 links-Meta 節點:
2. 在 InfluxDB 中建立資料庫。取得並執行 thingworxInfluxDBSetup.sh 指令集以在 InfluxDB 中建立資料庫。
* 
您可在「PTC 支援入口網站」軟體下載封裝的 install 資料夾中取得 thingworxInfluxDBSetup.sh 指令集。
下列範例指令使用預設保留原則建立資料庫:
CREATE DATABASE thingworx with DURATION 365d REPLICATION 1 SHARD DURATION 30d NAME autogen
3. 建立 InfluxDB 使用者。下列範例指令建立了使用者:
CREATE USER twadmin WITH PASSWORD 'password' WITH ALL PRIVILEGES
4. 在 ThingWorx Composer 中,建立新的持續性提供者。
5. 「持續性提供者封裝」欄位中,選取 InfluxPersistenceProviderPackage
6. 按一下「儲存」
7. 按一下「組態」標籤,根據需要配置連線資訊,然後按一下儲存。請參考下列表格中的組態選項。
如果您使用持續性提供者實例 (使用 InfluxDB 持續性提供者封裝建立) 作為預設 持續性提供者,您可編輯下列串流與值串流佇列組態設定。這些設定將會套用至所有串流與值串流。您無法針對特定串流或值串流變更這些設定。
* 
轉換值串流的持續性提供者 (例如,從 ThingworxPersistenceProvider 轉換為 InfluxPersistenceProviderPackage) 時,實行值串流的任何物件都必須呼叫 RestartThing 服務,才能擷取已寫入至新持續性提供者的項目。若未重新啟動物件,項目可能會被寫入至資料庫,不過,在重新啟動物件之前,系統不會擷取這些項目。
連線資訊
名稱
描述
預設值
「連線 URL」
您應從中擷取連線之資料庫的 URL。
http://localhost:8086
「資料庫結構描述」
要連線的結構描述。
thingworx
「使用者名稱」
擷取資料庫連線的使用者名稱。
thingworx
「密碼」
擷取資料庫連線的密碼。
n/a
串流處理設定
名稱
描述
基礎類型
預設值
「最大佇列大小」
可排入佇列的最大串流數。達到指定的值之後,系統會拒絕隨後的項目。
數值
250000
「排清串流緩衝區之前的最大等候時間 (以毫秒計)」
系統在排清串流緩衝區之前的等候毫秒數。
數值
2000
「處理執行緒數」
串流專用的處理執行緒數。
* 
執行緒數越少,InfluxDB 的執行效能越高。此設定已經過最佳化,可以處理來自少量通道的資料。
數值
5
「排清串流緩衝區之前的最大項目數」
排清串流緩衝區之前的累計最大項目數
數值
1000
「流程區塊內的最大串流寫入數」
單一區塊中待處理的最大串流寫入數。
數值
2500
「緩衝區狀況掃描率 (以毫秒計)」
系統會以指定速率值 (以毫秒計) 檢查緩衝區狀況。
數值
5
值串流處理設定
名稱
描述
基礎類型
預設值
「最大佇列大小」
可排入佇列的最大值串流數。達到指定的值之後,系統會拒絕接下來的項目。
數值
250000
「排清值串流緩衝區之前的最大等候時間 (以毫秒計)」
系統在排清值串流緩衝區之前的等候毫秒數。
數值
2000
「處理執行緒數」
分配給值串流的處理執行緒數。
* 
執行緒數越少,InfluxDB 的執行效能越高。此設定已經過最佳化,可以處理來自少量通道的資料。
數值
5
「排清值緩衝區之前的最大項目數」
排清值串流緩衝區之前的累計最大項目數
數值
500
「流程區塊內的最大值串流寫入數」
單一區塊中待處理的最大項目數。
數值
2500
「緩衝區狀況掃描率 (以毫秒計)」
系統會以指定速率值 (以毫秒計) 檢查緩衝區狀況。
數值
5
8. 按一下「一般資訊」標籤,然後選取「使用中」核取方塊。
9. 按一下「儲存」
最佳實務
序列限制
序列是物件與記錄到 InfluxDB 之關聯值串流的唯一組合總數。如果將較大的資料量導向至少量物件與物件內容,例如 10K 或 100K,InfluxDB 的執行效能會比較高。在 InfluxDB 中,序列總數預設限制為 100 萬。您可增加此限制,但 InfluxDB 的效能會隨著序列數超出此限制而降低。
如果您有大量物件與內容,可選擇資料量最大的那些物件與內容,並僅將其指向 InfluxDB,以減輕 PostgreSQL 或 MSSQL 的壓力。
或者,如果您要將序列分散到多個伺服器,也可以將 InfluxDB 資料提供者的多個實例指向不同的 InfluxDB 伺服器實例。
寫入限制
60 gb 記憶體的 32 核心 VM 每秒寫入 100K。超出此限制可能會導致 ThingWorx 發生問題,而且可能會用盡資源來處理任何請求或工作,例如寫入至資料庫。此時,ThingWorx 會變為停止,而 InfluxDB 仍然會寫入至資料庫。PostgreSQL 不會發生此問題,因為 PostgreSQL 會變為瓶頸,而 ThingWorx 永遠不會落到耗盡資源以致無法處理內部任務的境地。
SSL/安全連線
InfluxDB 支援 SSL 與 HTTPS 連線。如果不支援 ThingWorx 與 InfluxDB 之間的網路,您可以啟用 SSL 與 HTTPS 連線以增加安全性。如果簽署的私密金鑰保持安全,自我簽署的憑證即已足夠。
內容基礎類型的已知 InfluxDB 限制
在將內容記錄到值串流之後,您無法變更該內容的基礎類型。如需詳細資訊,請參閱 https://github.com/influxdata/influxdb/issues/3460
清除內容
PurgeAllPropertyHistoryPurgeSelectedPropertyHistoryPurgePropertyHistory 服務可用來從 InfluxDB 清除內容。使用 startDateendDate 參數可指定範圍。