Indexeddb 简明教程

IndexedDB - Introduction

数据库管理系统提供了一种存储和检索数据的方法。有各种类型的数据库可以使用,其中最常用的有 -

  1. Hierarchical databases

  2. Network databases

  3. Object-oriented databases

  4. Relational databases

  5. NoSQL databases

NoSQL databases

NoSQL 数据库(有时称为非 SQL)是一种提供存储和检索数据的方法的数据库,而不是关系数据库中使用的表格关系。这些数据库是无模式的,支持轻松复制,具有简单的 API,最终一致,并且可以处理大量数据(大数据)。

还有不同类型的 NoSQL 数据库,例如 -

  1. Document databases.

  2. Key-value stores. Column-oriented databases. Graph databases.

What is IndexedDB

Indexed Database 是一种 NoSQL 数据库或非关系结构化查询语言。它是一个事务数据库系统,类似基于 SQL 的 RDBMS。但是,与使用固定列表的基于 SQL 的 RDBMS 不同,IndexedDB 是基于 JavaScript 面向对象数据库。

当我们需要在服务器端存储大量数据并且比本地存储更快时,就会使用它。由于它将数据存储在浏览器中,因此也可以在线和离线使用。使用此功能,您可以创建一个 Web 应用程序(具有丰富的查询功能),无论是否有互联网连接都可以运行。

Key Characteristics of IndexedDB

以下是 IndexedDB 数据库的主要特征 -

IndexedDB 是一个 NoSQL 数据库,存储键值对。它可以通过键或多种键类型存储几乎任何类型的值。

  1. As mentioned, IndexedDB follows a transactional database model - 事务是操作或操作组周围的包装类,以便维护数据完整性。您不希望数据被更改或遗漏,因此如果事务失败,则会推出回调。

  2. IndexedDB does not use Structured Query Language - 由于 IndexedDB 使用 NoSQL 数据库,它不使用 SQL,而是使用索引上的查询通过光标或 getAll() 方法在不同的集合中进行遍历来生成数据。

  3. IndexedDB uses a lot of requests - 请求是接收成功或失败的 DOM 事件的对象(DOM - HTML DOM 事件允许 JavaScript 在 HTML 文档中的元素上注册不同的事件处理程序)。DOM 事件是成功或错误,具有指示请求流的 target 属性。成功事件无法取消,但错误事件可以取消。IndexedDB 中有许多请求,例如 on success、 onerroraddEventListener() ,以及 removeEventListener()。为了知道请求的状态,我们还有 ready state、result 和 error code 属性。

  4. IndexedDB needs to follow the same origin - 来源是编写脚本的文档的 URL,每个来源下面有一些数据库,每个数据库都有其名称,可由该来源标识。施加在 IndexedDB 上的安全边界阻止应用程序访问具有不同来源的数据。例如,如果我们使用 URL 并获取其不同的子目录,它可以检索数据,但如果我们更改位置到端口 8080 并尝试从常用 URL 和更改的端口检索数据,则无法检索数据。

Terminology

以下是 IndexedDB 中重要的各种术语,在继续之前你应该了解这些术语:

  1. Database - 在 IndexedDB 数据库中,数据库是最高级别,包含存储包含数据的对象存储。

  2. Object Stores - 对象存储是 IndexedDB 的数据存储实体。可以将它们视为 RDBMS 中的表,我们根据要存储的数据类型来存储数据(例如:id、name、roll no 等)。

  3. Transaction - 对于任何数据库操作,我们执行以下过程。获取数据库对象,对数据库执行打开事务,对事务执行打开对象存储,然后对对象存储进行操作。因此,基本上,事务是连接到每个数据库的包装函数,它确保数据完整性,以便在事务取消或发生任何错误时,它将回调到尚未开始的事务。

  4. Index - 将对象存储视为一个表,我们使用索引从它们中检索单个属性的数据。例如:名称、年龄等。

  5. Cursor - 在数据库中,如果我们需要从对象存储中遍历多个记录,则使用光标。

Support for 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,此程序将成功执行,并且将创建数据库。

mydatabase