特点
1 .indexDB就是浏览器提供的本地数据库,可以被网页脚本创建和操作
2 .indexDB可以允许存储大量的数据,提供查找接口,还能建立索引
3 .特点
1 .键值对存储:indexedDB内部采用对象仓库存放数据,所有的数据都是可以直接存入的,包括js对象,对象仓库中,数据以键值对形式保存,每一个数据记录都由对应的主键,主键是独一无二的,不能有重复,否则会有错误
2 .异步:indexDB操作时不会锁死浏览器,用户依然可以进行其他操作,不像localstorage,他的操作是同步的。异步设计可以预防大量数据的读写可能导致的拖慢网页的表现
3 .支持事物:indexedDB支持事务这样就意味着一系列操作中,只要有异步操作失败,整个事物就全部取消,数据库回滚到事物发生前的状态,不存在只改写一部分数据的情况
4 .同源限制:indexedDB受到同源限制,每一个数据库对应创建他的域名,网页只能访问自身域名下的数据库,而不能访问跨域的数据库
5 .存储空间大:不少于250M,甚至没有上限
6 .支持二进制存储:indexDB不仅可以存储字符串,而写还可以存储二进制数据,ArrayBuffer和Blob对象
7 .
基本概念
1 .数据库 database对象
1 .每个域名可以新建任意多个数据库
2 .indexedDB数据库有版本的概念。同一时刻只能有一个版本的数据库存在,如果要修改数据库结构或者新增,删除表,索引或者主键。只能通过升级数据库版本完成
3 .必须有一个数据库的名字
2 .对象仓库 ObjectStore对象
1 .对象仓库,类似于关系数据库的表格
2 .里面开辟一个空间来存特定结构的数据
3 .一个数据库可以有很多的objectStore
4 .所有的Oobect必须具备相同的一个属性名。就是keyPath。
keyPath
1 .规定了你把object的哪个属性作为检索的入口
2 .get方法就是传入索引的值。
3 .因此所有的索引的值都应该是唯一的,所以就要在建立索引的时候,传入一个unique的参数。
.索引 index对象
1 .
4 .事物 Transaction 对象
1 .数据记录的读写和删除,都要通过事物来完成,事物对象提供error,abort,complete三个事件,用来监听操作结果
5 .操作请求 Request对象
6 .指针 Cursor对象
7 .主键集合 KeyRange对象
8 .存储的对象
1 .object结构化数据,不能存function等非结构化数据,必须是键值对组成的字面对象
2 .支持嵌套结构,也就是obejct里面潜逃了object,和js无缝对接
核心代码
1 .其实写库都是对于对象的另一种封装或者描述
2 .和原生浏览器定义的对象是一一对应的
3 .
IDBOpenDBRequest对象
1 .