索引数据库 API
摘要
IndexedDB 是一种客户端存储 API,可在用户的浏览器中持久化数据。它是一种事务性的、非关系型存储机制,以键值对的形式在对象存储区中保存数据,并允许使用索引搜索数据。
- IDBCursor
- 遍历对象存储区和索引。
- IDBFactory
- 是 indexedDB 属性的对象类型,它提供了对浏览器和/或设备支持的 IndexedDB 功能的访问。
- IDBVersionChangeEvent
- IDBVersionChangeEvent 对象表示传递到 upgradeneeded 事件的事件对象,当使用更高的版本号打开数据库时,会触发该事件。
用法
IndexedDB enables you to store large amounts of data in a reliable and structured way. If you are building web applications that need to work offline the API can be useful to store, group, iterate, search, and filter JavaScript objects.
备注
IndexedDB 规范支持窗口对象上的异步 API 以及 Webworkers 的同步 API。
IndexedDB 数据库由对象存储区组成。可以创建对象存储区,并且可以存储任何形状的 JavaScript 对象在其中。每个对象可以具有不同的属性,即使它们位于同一个对象存储区中,也不意味着它们需要具有相同的结构。唯一的条件是对象必须具有与对象存储区上设置的任何显式键或索引匹配的属性。
构造函数
数据库
每个 origin 都有一个关联的数据库集合。数据库由存储数据的对象存储区组成。
对象存储区
对象存储区包含以键值对形式保存数据的记录列表。每个对象存储区都属于一个数据库。
键
对象存储区中的每条记录都以键值对的形式存储。键被索引以便于检索数据。有效的键可以是 Array、Date、DOMString 或 float。键可以使用键生成器自动生成,也可以在数据插入期间指定。键也可以使用为对象存储区指定的键路径属性从值派生。
值
每条记录都有一个包含记录数据的“值”。该值必须受 结构化克隆算法 的支持。
索引
索引允许使用对象存储区记录中值的属性查找对象存储区中的记录。索引是一种专门的持久键值存储,并引用了一个对象存储区。索引包含一个记录列表,其中包含存储在索引中的数据。每当对象存储区中的记录被插入、更新或删除时,索引中的记录都会自动填充。可以有多个索引引用同一个对象存储区,并且对象存储区的更改会导致所有这些索引都得到更新。
游标
游标是一种瞬态构造,用于遍历数据库中的记录。游标可以用于对象存储区或索引。
事务
所有数据库读取和写入操作都在事务中发生。事务可以是读取或读写事务。版本更改事务是一种特殊事务,允许添加或删除对象存储区或索引。
请求
对数据库的每次读取和写入操作都使用请求完成。请求的结果通常在请求上引发的成功或错误事件中可用。
安全性
IndexedDB 存储遵循同源策略。
IndexedDB 数据库对于我们的域是唯一的。因此,如果我们设置了一个数据库,只有我们才能看到它以及其中的对象存储区。如果您使用共享域,则共享该域的每个人都可以访问和使用 IndexedDB 中的数据。
存储限制
- Firefox 只会要求用户授予大于 50MB 的 blob 的权限。参考
- 对于 Google Chrome,请参阅 临时存储参考
- Internet Explorer 会要求用户授予大于 10MB 的数据存储的权限。用户也可以选择允许网站超出配额。用户也可以在 Internet 选项 > 浏览历史记录 > 设置 > 缓存和数据库中更改默认的 10MB 配额。企业还可以使用组策略全局或按域增加此设置。
- Windows 8 应用 每个应用都有 250MB 的配额。在设备上的所有应用中,限制是磁盘大小的 4% 或 20GB,以较小者为准。对于小于 30GB 的硬盘,设备上的所有应用的限制是 375MB。由于所有应用的整体配额,请测试您的应用,以确保它在能够存储非常少甚至没有数据时也能正常运行,因为其他应用会消耗整体配额。请参阅:[1]
参见
其他文章
教程和演练
外部资源
库
IDBWrapper 简化 IndexedDB 的使用,并抽象 Chrome、Firefox 和 IE10(是的,它在所有三个中都可以工作)中现有实现之间的差异。展示 IDB 的工作方式。代码被分成简短的方法,因此很容易看到在什么方法中发生什么。[2]
YDN-DB Javascript 数据库模块,用于 Indexeddb、Web SQL 和 localStorage 存储机制,支持版本迁移、高级查询、SQL 和事务。API 文档