跳到內容

嵌入式數據庫:深入了解

什麼是嵌入式數據庫?

嵌入式數據庫有兩個主要定義:

 

  • 嵌入式系統的數據庫-例如移動設備或消費類電子產品。這 嵌入式數據庫 需要具有較小的佔用空間,並在內存和CPU能力有限的環境中提供足夠的性能。
  • 嵌入應用程序中的數據庫—這意味著該應用程序不與數據庫服務器通信,並且具有內置的數據庫組件。這種類型的數據庫通常用於 邊緣計算 應用程序。

 

在這兩種定義中,嵌入式數據庫系統是與應用程序或固件代碼關聯的一組庫,該庫為應用程序或設備提供內置的數據庫功能。這與客戶端/服務器數據庫系統不同,在客戶端/服務器數據庫系統中,另一個進程(數據庫服務器)為一個或多個客戶端應用程序提供數據庫服務。

 

在本文中,您將學習:

 

嵌入式系統的特點

嵌入式系統是計算機硬件和軟件的組合,旨在執行特定功能。示例包括智能手機,數碼相機和聯網汽車。嵌入式系統具有以下特徵:

 

  • 包含硬件,固件和軟件
  • 專為特定的系統任務而設計,因此通常集成到更大的系統中
  • 計算功率由集成電路(微處理器或微控制器)提供
  • 通常需要在有時間限制的情況下執行其任務,以支持大型系統的其他組件

 

嵌入式數據庫的要求

要查看數據庫是否適合用作嵌入式數據庫,請考慮以下要求:

 

  • 它是否支持CRUD(創建,讀取,更新,刪除)?
  • 它是否支持ACID(原子性,一致性,隔離性,耐久性)?
  • 我可以使用不同的編程語言和操作平台嗎?
  • 是否可以輕鬆地將數據移動到中央數據庫?
  • 是否無需數據庫管理員即可免維護?

 

在幾乎所有嵌入式數據庫情況下,嵌入式應用程序都需要存儲多個複雜的數據流以進行分析和操作。他們必須能夠從多個來源接收數據,並同時執行讀寫操作。數據庫不僅需要存儲數據,而且還必須保持完整性並能夠在系統故障時進行恢復。

 

您可以使用基本的CRUD功能來修改數據,但不能保證數據的完整性。 ACID提供了更好的完整性,並且可以支持事務方案。在嵌入式方案中,數據記錄將通過多個語句寫入數據庫。以下是ACID如何幫助滿足此要求的方法:

 

  • 原子性 要求數據庫允許或拒絕構成記錄的所有語句。 
  • 一致性 幫助防止可能會破壞數據的部分更改
  • 隔離 允許您同時寫入多個數據記錄,而不會互相影響
  • 耐用性 表示如果提交了一條記錄,即使系統發生故障,它也會保持提交狀態

 

不遵守ACID要求會增加數據庫損壞的風險。在具有成百上千個設備的環境中,更容易發生錯誤,並且遵守ACID變得更加重要。

 

嵌入式數據庫的類型

嵌入式方案中使用三種主要類型的數據庫。 

 

傳統的 SQL數據庫 可以在嵌入式系統中使用,但是必須經常犧牲存儲空間或功能。有些僅實現部分SQL語法,或者提供弱類型的SQL語法,這不能保證完整性。

 

時間序列數據庫 測量,跟踪,調查和自動化對時間敏感的數據流。 時間序列數據庫 為了速度而犧牲一些ACID函數。例如,如果您的系統正在嘗試優化寫入次數,則記錄可能會鎖定較短的時間,這可能會降低一致性。

 

數據歷史系統 收集和存儲大量帶時間戳的數據。數據歷史記錄器通常內置於設備中,並且主要用於收集和傳輸信息,而分析能力有限。它可以提供一個SQL查詢接口,它不一定遵循標準的SQL語法。

 

嵌入式數據庫:SQL與API

在許多嵌入式系統中,可以選擇啟用對數據庫的SQL訪問(通常使用JDBC / ODBC)還是專有API訪問。讓我們來看看每種方法的利弊。

使用SQL訪問嵌入式數據庫

優點

  • SQL是眾所周知的,並且對於JDBC和ODBC API一樣,對於開發人員和管理員來說都可以立即使用。
  • 提供靈活的查詢功能。
  • 能夠同時將UPDATE或DELETE語句應用於多行,而非SQL API則分別對待每一行。

缺點

  • 解析,優化和執行查詢所需的開銷很高。這些步驟使用CPU週期,內存和其他稀缺資源。
  • SQL通常與其他系統(例如,面向對象的編程)不完全兼容。這被稱為“阻抗失配”。為了解決這個問題,引入了對象關係映射(ORM),但是它增加了更多的開銷。

使用專有API訪問嵌入式數據庫

優點

  • 避免阻抗不匹配,因為同一家公司設計嵌入式數據庫及其API。
  • 消除了處理SQL查詢的開銷,從而可以直接訪問數據。

缺點

  • 使用專有的API是團隊成員必須學習的一項專門技能。
  • 將您鎖定在特定的數據庫系統中,如果不符合要求,將很難遷移。

 

更改數據捕獲(CDC)和嵌入式數據庫

CDC用於許多嵌入式系統中,以識別已更改的數據,並保存數據更改以供將來使用。這可以允許數據庫恢復,複製和處理流事件。

 

更改數據捕獲功能可在嵌入式數據庫中提供三個主要功能:

 

  • 交易記錄—用於在崩潰後使用UNDO和REDO操作檢索數據庫事務
  • 扳機—當數據庫檢測到INSERT,UPDATE或DELETE操作時調用的操作
  • 複寫— CDC可以支持多種複制模式:
    • 複製已提交的事務(鏡像或事務複製)
    • 複製已提交和未提交的事務(日誌傳送)

 

Raima嵌入式數據庫

無論您需要嵌入式數據庫還是嵌入式系統數據庫,Raima Database Manager都是首選解決方案。我們的關係嵌入式數據庫針對高性能吞吐量和低內存使用進行了優化。

 

RDM嵌入式DB可以通過其廣泛的API套件(包括C / C ++的游標接口,Java的JDBC接口和C#的ADO.NET接口)進行調用來使用。它還支持通過ODBC驅動程序管理器使用標準的第三方工具。

 

如今,企業面臨著邊緣業務加速發展的挑戰,在這種情況下,對來自多個設備的輸入進行實時決策至關重要。當今的組織要求立即擁有一切。已為需要實時和可靠數據的應用程序創建了Raima數據庫管理器。

 

隨著嵌入式市場空間中閃存和SSD存儲的增加部署,最小化對媒體的寫入對於提供高性能非常重要,同時確保延長介質壽命。 Raima是為數不多的內置此功能的嵌入式數據庫供應商之一。

 

Raima的模塊化體系結構旨在滿足未來嵌入式應用程序的複雜體系結構。