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

Mydatabase
廣告

© . All rights reserved.