IndexedDB 性能与 IndexedDB v/s WebSQL 性能比较

IndexedDB Performance and IndexedDB v/s WebSQL performance comparison

WebSQL 和 IndexedDB 都是 DB API,用于在 Web 浏览器中访问 (CRUD) 底层嵌入式数据库。如果我是正确的,这就像 SQL 用于访问(CRUD)任何客户端-服务器数据库,如 Oracle 等(在许多情况下,对 WebSQL 和 IndexedDB 的支持在同一浏览器上可用)

  1. 那么,这是否意味着 WebSQL 和 IndexedDB 都在访问 (CRUD) 相同的底层嵌入式数据库,如果是这样,那么它在所有网络浏览器上的性能都相同!
  2. 但我认为情况并非如此,那么是否意味着 Web 浏览器将拥有多个底层嵌入式数据库?为什么在同一个浏览器中应该有 2 个底层嵌入式数据库?

并且由于 WebSQL 和 IndexedDB 是 API 的,所以这意味着说 WebSQL 和 IndexedDB 的性能并不完全正确(因为它们更像是query/access 语言),但它在很大程度上取决于底层嵌入式数据库的性能。并且,根据 Google、LevelDB is faster than SQLite

  1. 重要的不是WebSQL和IndexedDB之间的性能差异,而是底层嵌入式数据库的性能差异是否正确?
  2. IE、Chrome、Android浏览器的底层嵌入式数据库是什么?我在网上找不到这个信息,有人找到或编译过吗?

为了解决您的第一个问题,WebSQL 从未在 Internet Explorer 或 Firefox 中实现 (http://diveintohtml5.info/storage.html, http://caniuse.com/#feat=sql-storage)。就离开 Chrome 的 "big browsers" 和 Safari 而言,两者都诞生于 WebKit(尽管自 v28 Chrome 以来 运行 来自 WebKit 的一个分支,称为 'Blink').过去,这两种浏览器都使用 SQLite 作为 WebSQL 和 IndexedDb 的基础数据库,但是 Chrome 将 IndexedDb 从 SQLite 切换到了 LevelDB。

为了回答您的第二个问题,Chrome 使用了 2 种不同的底层数据库技术:

WebSQL -> SQLite

IndexedDb -> LevelDB

我怀疑他们将 WebSQL 保留为 SQLite,因为他们知道它可以工作。 WebSQL 现在已被弃用,并且在某个时候它将被删除,所以他们为什么要花时间将它移植到 LevelDB。

在 WebSQL / IndexedDb 与底层数据库性能之间的性能方面,根据 iOS Safari 的经验,IndexedDb 和 WebSQL 都使用 SQLite 数据库,但它们在底层数据库的构建方式上有很大差异以及他们的表现。在我的测试中,我发现在 iOS8.

中,与 Safari 上的 IndexedDb 相比,WebSQL 的速度是执行 1000 个简单数据库插入的两倍。

关于你上一个问题,我发现:

对于 IE:

WebSQL -> 不支持

IndexedDB -> 可扩展存储引擎

Firefox:

WebSQL -> 不支持

IndexedDB -> SQLite

对于 Safari:

WebSQL -> SQLite

IndexedDB -> SQLite

对于Chrome:

WebSQL -> SQLite

IndexedDB -> LevelDB

(来源:WebKit 项目,https://bugzilla.mozilla.org/show_bug.cgi?id=837141, http://www.aaron-powell.com/posts/2012-10-05-indexeddb-storage.html