浏览器数据库 IndexedDB 简明教程 ( 二 ) - 相知 ( 术语 )

yufei       6 年, 4 月 前       1223

浏览器数据库 IndexedDB 简明教程 ( 一 ) - 初识 章节中,我们简单的介绍了下 IndexedDB 的诞生背景和一些特性,本章节我们继续,介绍一些 IndexedDB 的基本概念和术语

IndexedDB 基本概念

从特性上看,IndexDB 的确非常简单,但是,从 API 上来看,却是复杂的无比了,也因此衍生除了许多概念。

IndexDB 许多不同的实体抽象封装为单个对象接口,学习 API 是学习它的各种对象接口

其实,对于 99% 的语言,也都是如此,真正的语法,不就是那几个关键字么? 除了变态的 C++ 语言

本章接下来的内容,就来聊聊 IndexedDB 中的那些接口对象,对了,如果你看不懂,那就对照者 MySQL 或任何你熟悉的数据库系统来学习吧,这样简单些

  1. 数据库: IDBDatabase 对象,类似于关系型数据库系统里的 「 数据库 」
  2. 存储对象: IDBObjectStore 对象,类似于关系数据库中的 「 表 」
  3. 索引: IDBIndex 对象,类似于关系数据库系统中的 「 索引 」
  4. 事务: IDBTransaction 对象,类似于关系数据库系统中的 「 事务 」
  5. 操作请求: IDBRequest 对象,类似于关系数据库系统中的 「 SQL 语句 」
  6. 游标: IDBCursor 对象,类似于关系数据库客户端中的 「 游标 」 ( cursor )
  7. 主键集合: IDBKeyRange 对象

1. 数据库

数据库是有相互关系的数据的集合,每个域名 ( 严格来说,协议 + 域名 + 端口 ) 可以创建任意数量的数据库

不同于其它关系型数据库, IndexedDB 的数据库具有版本的概念。同一时间同一个数据库,只能存在一个版本

如果要修改数据库结构,例如添加或删除表索引或主键,那么只能通过升级数据库版本来执行此操作,也就是说这些操作必须指定一个新的数据库版本

如果你对 Android ,那么应该也熟悉 Android 中的 SQLite ,它的数据库也存在版本的概念

2. 存储对象

每个数据库都可以包含多个存储对象,存储对象类似于关系型数据库系统中的 「 表 」 的概念

3. 数据记录

存储对象里保存这数据记录。每条数据记录相当于关系型数据库系统中的 「 行 」,但因为是 键值对 存储,所以每条数据记录只有 「 主键 」 和 实际存储的数据

  • 主键用于建立默认索引,主键是唯一的,否则将引发错误,主键可以是实际存储数据中的一个属性,也可以是一个可以增长的整数,类型无所谓,只要能够唯一标识即可

    例如,对于下面这个要存储的数据,可以使用它的 id 属性作为主键

    { id: 1, text: 'foo' }
    
  • 实际存储的数据可以是任意类型,可以是任意大小,无所谓,一切都看你自己怎么处理

4. 索引

为了加快数据检索,我们可以为存储对象中的不同属性构建索引,是的,不限于主键,任意属性都可以创建索引

5. 事务

IndexedDB 另一个非常有趣的一点,就是把事务上升到非常高的级别,而且推荐我们在需要读取,写入或删除数据记录时,应通过事务来完成

IndexedDB 中的事务对象 IDBTransaction 提供了三个可监听的事件 error, abortcomplete ,分别用于事务发生错误、事务被取消、事务执行成功后回调通知用

结束语

怎么样 ? 看起来是复杂呢还是简单呢 ?

其实,相比于 MySQL 等数据库,这个概念和术语还是少了些

IndexedDB 整个文字级别的基础知识就这么多了,下一章节开始,我们将开始试用生涯...

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.