前端——IndexedDB

本文仅梳理indexedDB基础概念以及对象,具体执行需要自行查阅api

IndexedDB


概念

HTML5离线存储数据的一种解决方案,NOSQL类型,浏览器提供的数据库,使用索引高效搜索数据进行读写和管理操作。

特点

  1. 键值对存储:内部采用对象仓库(Object Store)存放数据,所有类型都可以直接存入(包括javascript对象),每一个数据对象对应为唯一主键(不可重复)。
  2. 异步:防止拖慢网页
  3. 支持事务:transaction,安全性更高。
  4. 同源限制:每一个数据库都有他对应的域名,网页只能访问自身域名对应的数据库,不能跨域访问。
  5. 存储空间大:比如chrome一条记录不能超过130M,FireFox没有限制
  6. 支持二进制存储:ArrayBuffer和Blob

常用对象

  1. indexedDB对象:浏览器提供,作为开发者的操作接口。
  2. IDBRequest对象:表示打开数据库连接,indexedDB.open()方法和indexedDB.deleteDatabase()方法返回这个对象。(IDBOpenDBRequset对象继承了IDBRequest对象,提供两个额外事件监听属性)
  3. IDBDatabase对象:打开之后从IDBOpenDBRequset.result属性上获取该对象,代表连接的数据库,之后对数据库的操作都是通过这个对象完成。
  4. IDBObjectStore对象:代表一个对象仓库可以对其中的数据进行增删改查创建索引,由IDBDatabase.createObjectStore()方法创建删除,由transaction.objectStore获龋
  5. IDBTransaction对象:该对象使用异步操作数据库事务,所有读写操作都通过这个对象进行,由IDBDatebase.transaction()方法创建并返回,执行的顺序按照创建的顺序,而不是发出请求的顺序。
  6. IBDIndex对象:代表数据库索引,该对象可以获取数据库里边的记录,数据记录的主键默认就是带索引,IDBIndex对象用于给其他键建立持久性索引。
  7. IBDCursor对象:指针对象,用来遍历数据仓库(IDBObjectStore或索引IDBIndex的记录),由IDBObjectStore.openCursor()方法创建返回。
  8. IDBKeyRange对象:代表数据仓库里边的一组主键,根据这组主键们可以获取对应记录。