嵌入式(文件)數據庫與數據庫服務器的區別

  • 初次接觸嵌入式數據庫(Embedded Database)可能對這個概念總不是很清楚,它究竟與數據庫服務器(Database Server)有什麼區別,它們又分別適用於那些應用場景呢,這是需要解決的問題。
    在談區別之前,先來個感性認識。像Oracle、Sybase、MySQL和SQL Server這些大家熟知的數據庫都屬於數據庫服務器(當然不排除某些也提供嵌入式版本),而像SQLite、Berkeley DB、FireBird等屬於嵌入式數據庫。
  • 嵌入式數據庫跟數據庫服務器最大的區別在於它們運行的地址空間不同。通常,數據庫服務器獨立地運行一個守護進程(daemon),而嵌入式數據庫與應用程序運行在同一個進程。

定義

  • 嵌入式數據庫是指運行在本機上、不用啓動服務端的輕型數據庫,它與程序緊密繼承,被應用程序所啓動,並伴隨應用程序的退出而終止;

數據庫服務器的架構如下:

  • 圖中的數據庫客戶端通常通過數據庫驅動程序如JDBC、ODBC等訪問數據庫服務器,數據庫服務器再操作數據庫文件。
  • 數據庫服務是一種客戶端服務器模式,客戶端和服務器是完全兩個獨立的進程。它們可以分別位於在不同的計算機甚至網絡中。客戶端和服務器通過TCP/IP進行通訊。這種模式將數據與應用程序分離,便於對數據訪問的控制和管理。

嵌入式數據庫架構如下:

  • 嵌入式數據庫不需要數據庫驅動程序,直接將數據庫的庫文件鏈接到應用程序中。應用程序通過API訪問數據庫,而不是TCP/IP。因此,嵌入式數據庫的部署是與應用程序在一起的。比如常見的版本控制器SubVersion,它所用的嵌入式數據庫就是跟應用程序放在一起的。

數據庫服務器和嵌入式對比如下:

  1. 數據庫服務器通常允許非開發人員(DBA,數據庫庫管理員)對數據庫進行操作,而在嵌入式數據中通常只允許應用程序對其進行訪問和控制。
  2. 數據庫服務器將數據與程序分離,便於對數據庫訪問的控制。而嵌入式數據庫則將數據的訪問控制完全交給應用程序,由應用程序來進行控制。
  3. 數據庫服務器需要獨立的安裝、部署和管理,而嵌入式數據通常和應用程序一起發佈,不需要單獨地部署一個數據庫服務器,具有程序攜帶性的特點。
    從上面的對比可以看出,數據庫服務器和嵌入式數據庫各自具有自己的特點,它們分別適用於不同的應用場景。

總結

  • 如果你要存儲的數據的訪問比較複雜,比如跨網絡、複雜的訪問控制策略,又需要數據庫管理員經常進 行管理和維護,那麼數據庫服務器就非常適合你。
  • 如果你要存儲的數據的訪問之需要應用程序控制即可,並且基本不需要人工干預,而且需要對數據的訪問簡單、快速有效,那麼嵌入式數據庫適合你。
  • 另外,你是否有過這樣的情況:存儲的數據量不是很大,如果搞個一般的數據庫來感覺太浪費了,而且如果發佈這個程序還非常麻煩,這時那些微小的嵌入式數據庫可能非常適合你(如某些電子郵件客戶端就採用的是嵌入式數據庫)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章