IndexedDB:
- 支持大量数据并具有关系性和查询功能。
- 可以使用复合键索引来提高查询性能。
- 它是HTML5中的标准规范之一,适用于跨多个平台。
Cons:
- 需要一些学习成本,特别是对于没有使用过NoSQL数据库的人来说。
- 它的语法可能会感到陌生。
缺点:
- 自2010年11月起已被弃用。
- 存在跨目录攻击的安全漏洞。不是一个真正的问题,因为我们不会使用共享托管。
IndexedDB:
与本地存储类似的键/值对象存储,但具有索引。
缺点:
- 查询200,000行数据运行缓慢(15-18秒)。
- 无法运行复杂查询。
- 无法与其他表进行连接。
- 不受主要手机或平板设备(如iPad / Android)支持。
- 标准不完整。
这只留下了实现已弃用的Web SQL方法的选项,这可能只能再使用一年左右。IndexedDB和本地存储目前无法使用。
我不确定Mozilla和Microsoft如何使Web SQL数据库标准过时,以及为什么W3C允许它发生。据说它们在桌面浏览器市场上占有77%的份额。在高级移动设备上,Mozilla和Microsoft几乎没有影响力,因为Safari、Opera和Android占据了90%以上的市场份额。Mozilla和Microsoft如何能够决定在离线存储最有可能使用的移动市场中应该使用哪种标准毫无意义。
在关于为什么他们要选择IndexedDB的Mozilla的评论中,主要是关于“开发人员美学”的问题,他们不喜欢在JavaScript中运行SQL的想法。我不相信这个观点。
目前提出的标准较差,是一种非常基本的NoSQL实现,速度慢且不支持数据库中人们需要的高级功能。建立数据库并获取数据需要大量样板代码,但他们声称人们将编写一些很好的抽象库来提供更高级的功能。截至2011年10月,这些库还没有任何进展。
他们已经废弃了现有的Web SQL标准,而这个标准实际上是已经在主要的移动/平板浏览器中实现的。然而,他们的“新”的和“更好”的标准在主要的移动浏览器中并不可用。
作为开发者,未来3-5年我们应该使用什么,才能在IndexedDB规范可能被标准化、具有更多功能、在主要的移动/平板浏览器中得到实现并有一些不错的库可以使事情更容易的时候使用?
W3C应该保持Web SQL Database标准与IndexedDB标准同时推进并修复其中的问题。它已经支持主要的移动平台,并且运行得相当稳定。Mozilla和Microsoft作为占据桌面浏览器份额最多的两家公司居然能够让这一标准被废弃,这是相当可疑的,可能被视为企图阻碍移动Web平台的进步,直到它们能够追赶并提供针对iOS/Safari和Android的竞争解决方案。
总之,有没有人能够为我的问题提供一种在手机/平板设备上适用于iOS/Android的解决方案?也许是一个漂亮的包装API,可以在后台使用多个数据库实现,并具有查询功能,让您选择哪个数据库具有优先权。我看到了像lawnchair之类的东西,但我很确定它只能默认使用本地存储并回退到其他存储方式。我想我更愿意使用Web SQL(默认情况下)而不是较慢的选项。
非常感谢任何解决方案的帮助,谢谢!