用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能

用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能,第1张

概述我有一个相对复杂的sqlcipher数据库(27个表)但几乎没有条目(每个表50-200个条目之间). 当我运行SELECT语句(与相应的视图相同)时,连接3个表,执行几个“LIKE”(使用EXPLAIN优化),桌面客户端CPU(带有sqlcipher)需要3毫秒进行查询. 然而,使用Cordova-SQLitePlugin的Android上的相同查询花费了近1900ms – 由于打开数据库的成本 我有一个相对复杂的sqlcipher数据库(27个表)但几乎没有条目(每个表50-200个条目之间).
当我运行SELECT语句(与相应的视图相同)时,连接3个表,执行几个“liKE”(使用EXPLAIN优化),桌面客户端cpu(带有sqlcipher)需要3毫秒进行查询.

然而,使用Cordova-sqlitePlugin的Android上的相同查询花费了近1900ms – 由于打开数据库的成本约为1800毫秒,这显然在每次页面加载后重复.

查询的发布方式如下:

var db = window.sqlitePlugin.openDatabase({name: "myDatabase",key: "mySecret",bgType: 1});    db.transaction(function(transaction) {        transaction.executesql(query,[],function(transaction,result) {        callback(result);    },null);    },null,null);

有什么我能做的吗?
提前感谢任何提示和线索……

干杯克里斯

解决方法 sqlCipher打开数据库的性能故意很慢. sqlCipher使用密钥PBKDF2来执行密钥派生(即数千个SHA1 *** 作)以防止暴力破解和字典攻击.有关更多信息,请参阅 http://sqlcipher.net/design.

最好的选择是缓存数据库连接,以便可以多次使用它,而无需在每个屏幕上打开和键入数据库.如果可以,在启动期间打开数据库一次是首选的 *** 作过程.对同一数据库句柄的后续访问不会触发密钥派生,因此性能将非常快.

如果这不可能,则另一个选项是禁用或削弱密钥派生.这将导致sqlCipher在导出密钥时使用更少轮的PBKDF2.虽然这会使数据库打开得更快,但从安全角度来看,它显着变弱.因此通常不建议这样做.也就是说,这里有关于如何减少KDF迭代的信息:

http://sqlcipher.net/sqlcipher-api/#kdf_iter

总结

以上是内存溢出为你收集整理的用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能全部内容,希望文章能够帮你解决用cordova和Cordova-SQLitePlugin实现android – sqlcipher’open’性能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存