Electron基于Sqlite3的數(shù)據(jù)字典與Nginx同步
在我看來,Electron基于Sqlite3的數(shù)據(jù)字典與Nginx同步本質(zhì)上是一個更新問題崩溪,所以可以復用本地文件更新的策略,相當于一個熱更新。
在chcp.json文件中:
{
"server_urls": [
"192.168.1.250",
"123.206.53.69",
"192.168.1.106",
"192.168.1.241",
"192.168.1.110"
],
"release": "2017.07.16-18.54.40"
}
服務器端維護一個結(jié)構(gòu)相同的文件返顺,如果檢測到主版本號不同,則下載詳細描述文件:
[
{
"file": "dic.sqlite3",
"hash": "d74f9cdd604653c22c6752c46fffd587"
}
]
如果檢測到有數(shù)據(jù)字典(例如文件名為dic.sqlite3)這個文件有更新蔓肯,則下載替換更新遂鹊。
至于加密問題,用戶操作日志的邏輯現(xiàn)在換了蔗包,不從服務器獲得原始空日志文件而改在本地判斷不存在即創(chuàng)建秉扑,如果不同用戶登錄本地客戶端,則在同一個數(shù)據(jù)庫文件中根據(jù)用戶名等唯一標識創(chuàng)建不同的數(shù)據(jù)庫表调限。這樣一來舟陆,在本地只存在一個數(shù)據(jù)庫文件。里面是不同用戶名所命名的表耻矮。而密鑰的管理則是服務器動態(tài)分發(fā)一個相同的密鑰秦躯,然后讀取本地硬件某信息,兩者合二為一組成密鑰裆装。
所以踱承,現(xiàn)在統(tǒng)一的規(guī)則統(tǒng)一為,數(shù)據(jù)字典密鑰是從服務端取米母,用戶操作日志是從服務器端去一個密鑰勾扭,本地生成一個個性化的字符串毡琉,兩者合二為一組成最終的密鑰加密本地數(shù)據(jù)庫文件铁瞒。