送寒衣,nba热火vs凯尔特人,我被同桌吸了奶图
呆板之心报道
呆板之心编纂部
IndexedDB 的长处是通用性能优越,缺点是速率太慢了。
内容库布局化查询语言 SQL,是绝大多数法式员都会常常用到的工具。不外这个东西入门容易精晓难,有很多技巧和特征是一直被人忽略的。
近来,法式员 James Long 提出了 absurd-sql,它是 Web 上 SQLite 的持久化后端,不会将整个内容库加载到内存中,而且能够持续写入。
James Long 撰写了一篇博客来注解 Web 存储 API(主要是 IndexedDB)的缺点,并先容了 SQLite 在 absurd-sql 的加持下如何供应 10 倍的性能改进及其技巧。
项目地址:https://github.com/jlongster/absurd-sql
IndexedDB 并不是完善的
如果要编写一个 web 应用法式,你可能会选择使用 IndexedDB 来存储内容,这是能在所有浏览器上运行内容库的独一选项。
当试图构建一个内陆应用时,你会发现围绕这个内容库构建整个应用并不睬想,当然,此中的少量功能照样很有用的。但如果想构建更好的收集应用法式,我们必要一种更强大的方式来处理内容。
IndexedDB 有一个缺点是速率迟缓。一般来说,内容库的简洁操纵大约必要 10ms 的时间,profile SQLite 平日必要 0.01 ms 的时间,这些时间长短和具体编写什么应用法式有关。
在 IndexedDB 中查询内容,必要用户手动操纵。IndexedDB 独一供应的函数是 count,别的的 API 只返回一系列 item。用户必需以特定的方式毗邻索引和构造内容,才气构建查询函数。
甚至添加一个新的对象存储都很难题,如果用户想打开内容库添加对象存储,必要逼迫终止其他所有 tab 与内容库的毗邻。
IDB 不是完善甚至是有些初级的,因此作者提出了 absurd-sql。
absurd-sql
SQL 是构建应用法式的好方法。尤其是小型内陆收集应用法式。键 / 值存储可能在大型分布式体系中占有一席之地,然则如果我们能够在 Web 上使用 SQLite 会不会很棒?
absurd-sql 使这成为了可能。absurd-sql 是 sql.js 的文件体系后端,它允许 SQLite 从 IndexedDB 读 / 写一小部门内容,就像磁盘一样。
值得注意的是,absurd-sql 的项目作者受到了 SQLite 的开导。
sql.js 是 SQLite 到 Webassembly 的一个端口,通过使用 Emscripten 编译 SQLite C 代码,它是 SQLite 在 Web 上应用的一个优越例子。它使用存储在内存中的假造内容库文件,因此不会保留对内容库所做的变动。sql.js 将 SQLite 编译为 WebAssembly,并允许读取内容库和运行查询。这里就存在一个紧张的问题——用户不克持续进行任何写操纵。它将整个内容库加载到内存中,而且只变动内存中的内容。刷新页面后,所有变动都将丢失。
固然内存内容库有其用途,但这会让 SQLite 的用途变得很受限。开发者要使用它构建任何类型的应用法式,都必要具备内容持久化的能力。
absurd-sql 解决了这个问题,它通过阻挡来自 SQLite 的读 / 写哀求,将它们获取并持久化到 IndexedDB(或任何其他持久后端)来工作。项目作者编写了一个完备的文件体系层,该文件体系层知道 SQLite 如何读取和写入内容块,并可以有效地精确执行操纵。这意味着它永远不会将内容库加载到内存中,而是只加载 SQLite 要求的任何数据,而且写入始终连结不变。
项目作者透露,这里使用 sql.js 是因为它已经拥有一个庞大的社区,而且是迄今为止在 Web 上使用 SQL 的最常见方式。
本文地址:http://www.wbwb.net/bianchengyuyan/229874.html 转载请注明出处!