IndexedDB性能和IndexedDB与WebSQL性能比较

10

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

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

由于WebSQL和IndexedDB都是API,因此说WebSQL和IndexedDB的性能不完全正确(因为它们更像查询/访问语言),但它显着取决于底层嵌入式数据库的性能。根据Google的说法,LevelDB比SQLite更快

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

22

针对您的第一个问题,WebSQL从未在Internet Explorer或Firefox中实现过 (http://diveintohtml5.info/storage.html, http://caniuse.com/#feat=sql-storage)。就“大浏览器”而言,只剩下基于WebKit(虽然自从版本28以来,Chrome一直在运行一个名为“Blink”的WebKit分支)。过去,这两个浏览器都使用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=837141http://www.aaron-powell.com/posts/2012-10-05-indexeddb-storage.html

这篇文章介绍了IndexedDB技术,该技术是一种在Web浏览器中存储和检索大量结构化数据的方法。使用IndexedDB可以在客户端存储数据,而不必通过网络连接访问服务器。与Cookie相比,IndexedDB具有更高的容量限制,并且可以更好地支持事务处理。此外,IndexedDB还支持键/值对存储,可以通过对象存储方式进行操作。如果您想学习如何在Web应用程序中使用IndexedDB,则可以参考相关文档。


根据我在互联网上阅读的众多文章,IE确实使用ESE作为其底层存储引擎。特别是,如果您浏览到“C:\ Users \%USER%\ AppData \ Local \ Microsoft \ Internet Explorer \ Indexed DB”文件夹,您将看到IndexedDB创建的文件。我还相信,如果您可以访问ESEUtil工具的副本,您将能够转储IndexedDb的内容。 - Jonathan Smith
  1. 好的。你有没有遇到过一些可以信任的官方网页的参考资料,我不想看博客。我已经找到了那个路径,但这并不能证明 ESE 是正确的,对吧?
  2. 我们正在从 WebSQL 迁移到 IndexedDB,因此我想从 IndexedDB 的性能角度来了解是否真的有什么可以在实现设计和/或编码时做以提高性能的方法。我目前的理解是,如果 IndexedDB 是在 WebSQL 之上实现的,那么它会比在 LevelDB 之上实现更快。不知道 IE 的 ESE 怎么样。
- hagrawal7777
2
很不幸,从我的个人经验来看,如果你的Web应用程序将在iOS Safari上运行,请勿将其转移到IndexedDB。由于苹果公司对IndexedDB的实现存在太多的错误,因此迁移到该技术将带来更多问题而不是解决它们。 - Jonathan Smith
1
到目前为止,我理解的是如果IndexedDB基于WebSQL实现...那是错误的。IndexedDB并非基于WebSQL实现,而是被引入来替换WebSQL。 - Jonathan Smith
1
顺便提一下,我之前提到的实用程序不是ESEUtil,而是esentutl.exe(可扩展存储引擎实用程序)。关于ESE,我不知道还有什么要说的了。无论是博客还是官方文档,在Internet Explorer上使用IndexedDB都会使用ESE数据库。这是事实。 - Jonathan Smith
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接