Electron基于Sqlite3的数据字典与Nginx同步
在我看来,Electron基于Sqlite3的数据字典与Nginx同步本质上是一个更新问题,所以可以复用本地文件更新的策略,相当于一个热更新。
在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"
}
服务器端维护一个结构相同的文件,如果检测到主版本号不同,则下载详细描述文件:
[
{
"file": "dic.sqlite3",
"hash": "d74f9cdd604653c22c6752c46fffd587"
}
]
如果检测到有数据字典(例如文件名为dic.sqlite3)这个文件有更新,则下载替换更新。
至于加密问题,用户操作日志的逻辑现在换了,不从服务器获得原始空日志文件而改在本地判断不存在即创建,如果不同用户登录本地客户端,则在同一个数据库文件中根据用户名等唯一标识创建不同的数据库表。这样一来,在本地只存在一个数据库文件。里面是不同用户名所命名的表。而密钥的管理则是服务器动态分发一个相同的密钥,然后读取本地硬件某信息,两者合二为一组成密钥。
所以,现在统一的规则统一为,数据字典密钥是从服务端取,用户操作日志是从服务器端去一个密钥,本地生成一个个性化的字符串,两者合二为一组成最终的密钥加密本地数据库文件。