WebSQL 和 IndexedDB 都是用于在 Web 浏览器中访问 (CRUD) 底层嵌入式数据库的 DB API。如果我是正确的,这就像用于访问 (CRUD) 任何客户端-服务器数据库(如 Oracle 等)的 SQL(在许多情况下,同一浏览器支持 WebSQL 和 IndexedDB)
- 那么,这是否意味着 WebSQL 和 IndexedDB 都在访问 (CRUD) 相同的底层嵌入式数据库,如果是这种情况,那么它在所有网络浏览器上的性能都是一样的!
- > 但我认为情况并非如此,那么是否意味着 Web 浏览器将拥有多个底层嵌入式数据库?为什么在同一个浏览器中应该有 2 个底层嵌入式数据库?
并且由于 WebSQL 和 IndexedDB 是 API,所以这意味着说 WebSQL 和 IndexedDB 的性能并不完全正确(因为它们更像是查询/访问语言),但它在很大程度上取决于底层嵌入式数据库的性能。而且,根据谷歌,LevelDB is faster than SQLite
- > 重要的不是 WebSQL 和 IndexedDB 之间的性能差异,而是底层嵌入式数据库的性能差异是否正确?
- IE、Chrome、Android 浏览器的底层嵌入式数据库是什么?我在网上找不到这些信息,有没有人找到或编译过它?
最佳答案
为了解决您的第一个问题,WebSQL 从未在 Internet Explorer 或 Firefox 中实现(http://diveintohtml5.info/storage.html,http://caniuse.com/#feat=sql-storage)。就离开 Chrome 和 Safari 的“大型浏览器”而言,它们都诞生于 WebKit(尽管从 v28 开始,Chrome 一直在 WebKit 的分支上运行,称为“Blink”)。过去,这两种浏览器都使用 SQLite 作为 WebSQL 和 IndexedDb 的底层数据库,但 Chrome 将 IndexedDb 从 SQLite 切换到了 LevelDB。
为了回答您的第二个问题,Chrome 使用了两种不同的底层数据库技术:
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)
关于sqlite - IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29220099/