WebSQL和IndexedDB都是用于在Web浏览器中访问(CRUD)基础嵌入式数据库的DB API。如果我是对的,那就像是用于访问(CRUD)的SQL(如Oracle等)的任何客户端服务器数据库(在许多情况下,在同一浏览器上都可以同时支持WebSQL和IndexedDB)
但是我认为并非如此,这是否意味着Web浏览器将具有多个底层嵌入式数据库?以及为什么在同一浏览器中应该有2个底层嵌入式数据库?
而且由于WebSQL和IndexedDB是API的,所以这意味着说WebSQL和IndexedDB的性能并不完全正确(因为它们更像查询/访问语言),但是它很大程度上取决于底层嵌入式数据库的性能。而且,按照Google的说法,LevelDB is faster than SQLite
正确地说,这不是WebSQL和IndexedDB之间的性能差异,而是底层嵌入式数据库的性能差异吗?
最佳答案
为了解决您的第一个问题,WebSQL从未在Internet Explorer或Firefox(http://diveintohtml5.info/storage.html,http://caniuse.com/#feat=sql-storage)中实现。就离开Chrome和Safari的“大型浏览器”而言,它们都是WebKit诞生的(尽管自v28开始,Chrome一直在WebKit的fork中运行,称为“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数据库,但是在基础数据库的构造方式和性能方面存在很大差异。在我的测试中,我发现与在iOS 8的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)