- IndexedDB 教程
- IndexedDB - 首页
- IndexedDB - 简介
- IndexedDB - 安装
- IndexedDB - 连接
- IndexedDB - 对象存储
- IndexedDB - 创建数据
- IndexedDB - 读取数据
- IndexedDB - 更新数据
- IndexedDB - 删除数据
- 使用 getAll() 函数
- IndexedDB - 索引
- IndexedDB - 范围
- IndexedDB - 事务
- IndexedDB - 错误处理
- IndexedDB - 搜索
- IndexedDB - 游标
- IndexedDB - Promise 包装器
- IndexedDB - Ecmascript 绑定
- IndexedDB 有用资源
- IndexedDB - 快速指南
- IndexedDB - 有用资源
- IndexedDB - 讨论
IndexedDB - 简介
数据库管理系统提供了一种存储和检索数据的机制。有多种类型的数据库可用,其中最常用的有:
- 层次数据库
- 网络数据库
- 面向对象数据库
- 关系数据库
- NoSQL 数据库
NoSQL 数据库
NoSQL 数据库(有时称为 Not Only SQL)是一种数据库,它提供了一种存储和检索数据的机制,而不是关系数据库中使用的表格关系。这些数据库是无模式的,支持轻松复制,具有简单的 API,最终一致,并且可以处理海量数据(大数据)。
NoSQL 数据库也有不同的类型,例如:
- 文档数据库。
键值存储。
面向列的数据库。
图数据库。
什么是 IndexedDB
Indexed Database 是一种 NoSQL 数据库或非关系结构化查询语言。它是一个事务性数据库系统,类似于基于 SQL 的 RDBMS。但是,与使用固定列表的基于 SQL 的 RDBMS 不同,IndexedDB 是一个基于 JavaScript 的面向对象数据库。
当我们需要在服务器端存储大量数据并且速度比本地存储快时,就会使用它。由于它将数据存储在浏览器中,因此也可以在线和离线使用。使用它,您可以创建一个(具有丰富的查询功能)可以运行的 Web 应用程序,无论网络连接是否可用。
IndexedDB 的关键特性
以下是 IndexedDB 数据库的关键特性:
IndexedDB 是一个存储键值对的 NoSQL 数据库。它可以通过键或多种键类型存储几乎任何类型的值。
如前所述,IndexedDB 遵循事务性数据库模型 - 事务是围绕操作或操作组的包装类,以便维护数据完整性。您不希望数据被更改或丢失,因此如果事务失败,则会回滚回调。
IndexedDB 不使用结构化查询语言 - 由于 IndexedDB 使用 NoSQL 数据库,因此它不使用 SQL,而是使用索引上的查询通过游标或getAll()方法来生成数据,以遍历不同的集合。
IndexedDB 使用大量请求 - 请求是接收 DOM 事件成功或失败的对象(DOM - HTML DOM 事件允许 JavaScript 在 HTML 文档中的元素上注册不同的事件处理程序)。DOM 事件是成功或错误,它具有一个目标属性,指示请求的流程。
成功事件无法取消,但错误事件可以取消。IndexedDB 中有很多请求,例如 onSuccess、onerror 和addEventListener()、removeEventListener()。为了了解请求的状态,我们还有 ready state、result 和 error code 属性。
IndexedDB 需要遵循相同来源 - 来源是编写脚本的文档的 URL,每个来源在其下都有一些数据库,每个数据库都有自己的名称以供来源识别。对 IndexedDB 实施的安全边界阻止应用程序访问具有不同来源的数据。
例如,如果我们获取一个 URL 并获取其不同的子目录,它可以检索数据,但如果我们将位置更改为端口 8080 并尝试从常规 URL 和更改的端口检索数据,则我们无法检索数据。
术语
以下是 IndexedDB 中的各种重要术语,在继续之前您应该了解这些术语:
数据库 - 在 IndexedDB 中,数据库是最高级别,它包含包含数据的对象存储。
对象存储 - 对象存储是 IndexedDB 的数据存储实体。可以将其视为 RDBMS 中的表,我们根据要存储的数据类型(例如:id、名称、学号等)存储数据。
事务 - 对于任何数据库操作,我们执行以下过程。
- 获取数据库对象
- 在数据库上打开事务
- 在事务上打开对象存储,然后对对象存储进行操作。
因此,基本上,事务是一个连接到每个数据库的包装函数,它确保数据完整性,以便如果事务被取消或发生任何错误,它将回调到事务尚未开始的位置。
索引 - 可以将对象存储视为一个表,我们使用索引从表中检索单个属性的数据。例如:姓名、年龄等。
游标 - 在数据库中,如果我们需要遍历对象存储中的多个记录,我们使用游标。
IndexedDB 支持
IndexedDB 是浏览器中的一个数据库,因此我们需要检查当前/现有浏览器是否支持它。为此,请将以下代码粘贴到文本编辑器中,将其保存为test.html并在浏览器中运行它。
const indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB; if (!indexedDB) { document.write("IndexedDB could not be found in this browser."); } const request = indexedDB.open("MyDatabase", 1);
如果您的浏览器支持 IndexedDB,则此程序将成功执行,并将创建一个数据库。