- 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,則此程式將成功執行,並將建立一個數據庫。