SQLite是一款輕量級的開源的嵌入式數(shù)據(jù)庫,是包含在C庫中的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) (RDBMS)。與許多其他客戶端-服務(wù)器型數(shù)據(jù)庫管理系統(tǒng)不同的是,SQLite不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是被直接嵌入到了最終程序中成為了它的一個(gè)重要組成部分。
SQLite是如何工作的?
SQLite 是將整個(gè)數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù)本身)作為單個(gè)跨平臺(tái)文件存儲(chǔ)在主機(jī)上的。它通過在寫入期間鎖定整個(gè)數(shù)據(jù)庫的文件來實(shí)現(xiàn)這種簡單的設(shè)計(jì)。SQLite 讀取操作可以是多任務(wù)的,但寫入只能按順序執(zhí)行。由于采用無服務(wù)器設(shè)計(jì),SQLite 應(yīng)用程序比客戶端-服務(wù)器型數(shù)據(jù)庫需要更少的配置。SQLite 被稱為 zero-conf,因?yàn)樗恍枰?wù)管理(如啟動(dòng)腳本)或基于 GRANT 和密碼的訪問控制。其訪問控制是通過賦予數(shù)據(jù)庫文件本身的文件系統(tǒng)權(quán)限來處理的。
SQLite有什么特點(diǎn)?
SQLite作為一款相對輕型的數(shù)據(jù)庫,具有體積小,性能高,可移植性強(qiáng)的特點(diǎn)。它最低只需要幾百KB內(nèi)存就可以正常運(yùn)行,同時(shí)能以極快的運(yùn)行速度在各類32位和64位OS系統(tǒng)中部署。
SQLite 作為 SQL 兼容的數(shù)據(jù)庫管理系統(tǒng)(DBMS),不像大多數(shù) SQL 數(shù)據(jù)庫系統(tǒng)那樣為列分配類型,而是使用了一個(gè)不尋常的類型系統(tǒng)將其分配給單獨(dú)的值;在語言方面,它是動(dòng)態(tài)類型的。此外,SQLite還可以將字符串插入到整數(shù)列中,使得其在綁定到動(dòng)態(tài)類型的腳本語言時(shí)增加了列的靈活性。
SQLite的表單通常包括一個(gè)隱藏的 rowid 索引列,這使得更快地訪問表單中的數(shù)據(jù)成為可能。比方說如果數(shù)據(jù)庫中包含整數(shù)主鍵列,SQLite 就會(huì)將其視為 rowid 的別名來優(yōu)化它,使得其內(nèi)容存儲(chǔ)為嚴(yán)格類型的 64 位有符號整型,并將其行為更改為自動(dòng)遞增列。
融合SQLite的PLCnext系列控制器
菲尼克斯PLCnext系列控制器集成了SQLite數(shù)據(jù)庫功能,其可以通過DataLogger這一PLCnext系統(tǒng)服務(wù)組件將項(xiàng)目工程運(yùn)行中的實(shí)時(shí)數(shù)據(jù)從全局?jǐn)?shù)據(jù)空間(GDS)傳輸?shù)絃inux層的數(shù)據(jù)庫中以進(jìn)行記錄和存儲(chǔ)。
當(dāng)我們啟動(dòng)PLCnext控制器時(shí),Datalogger服務(wù)也將隨之啟動(dòng)。然后DataLogger 就會(huì)以給定的采樣率收集與配置的 GDS 端口的 ESM 任務(wù)同步的值,并將它們與時(shí)間戳(精確到 1 μs)一起存儲(chǔ)到 RAM 磁盤中。
在標(biāo)準(zhǔn)設(shè)置下,數(shù)據(jù)庫以 SQLite 兼容方式存儲(chǔ)在 PLCnext 控制器上。配置變量的值保存在 SQLite 數(shù)據(jù)庫內(nèi)的表中??刂破魃虾缶Y為*.db的數(shù)據(jù)庫文件的默認(rèn)保存路徑是 /opt/plcnext。由于控制器的文件系統(tǒng)可以通過 SFTP 協(xié)議訪問,為此我們可以使用合適的 SFTP 客戶端軟件例如 WinSCP對這數(shù)據(jù)庫文件進(jìn)行進(jìn)一步操作。另外,DataLogger服務(wù)既可通過配置.xml文件配置,也可以如下圖所示直接在PLCnext Engineer編程軟件中進(jìn)行配置,變更之后的配置將在控制器重啟后被激活。
在PLCnext Engineer軟件PLANT窗口,雙擊PLCnext進(jìn)入Data Logger Sessions窗口即可進(jìn)行Datalogger配置。
PLCnext結(jié)合數(shù)據(jù)庫的應(yīng)用,
讓我們可以輕松實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),
實(shí)現(xiàn)3T融合:
為IoT應(yīng)用提供更多的解決方案!