SQLite是一種經典的無伺服器Serverless

banq發表於2020-01-27

大多數SQL資料庫引擎都是以單獨的伺服器程式提供外部訪問,外部客戶端想要訪問資料庫,就需要與伺服器程式通訊(通常是TCP / IP),這樣可以將請求傳送到伺服器並接收回資料庫伺服器處理的結果。SQLite卻無法以這種方式工作。使用SQLite,如果想要訪問資料庫,只能直接從磁碟上的資料庫檔案讀取和寫入。SQLite沒有伺服器程式。

無伺服器具有優點和缺點。

主要優點是無需安裝、設定、配置、初始化、管理單獨伺服器程式。這就是SQLite是“ 零配置 ”資料庫引擎的原因之一。使用SQLite的程式在執行之前不需要任何管理支援即可設定資料庫引擎。任何能夠訪問磁碟的程式都可以使用SQLite資料庫。

另一方面缺點是:使用伺服器程式的資料庫引擎能夠提供更好的保護,以防止客戶端應用程式中的錯誤-客戶端中的雜散指標就無法破壞伺服器上的記憶體。而且由於伺服器是單個永續性程式,因此它能夠更精確地控制資料庫訪問,從而實現更細粒度的鎖定和更好的併發性。

大多數SQL資料庫引擎都是基於客戶端/伺服器的。在無伺服器的資料庫中,SQLite是唯一已知的一種,它允許多個應用程式同時訪問同一資料庫。

經典的無伺服器與新無伺服器

近來,人們開始使用“無伺服器”一詞來表示與本文件中的預期含義略有不同的內容。這是“無伺服器”的兩個可能的定義:

  1. 經典無伺服器: 資料庫引擎在與應用程式相同的程式、執行緒和地址空間中執行。沒有訊息傳遞或網路活動。
  2. Neo-Serverless新無伺服器: 資料庫引擎在與應用程式不同的名稱空間中執行,可能在另一臺計算機上,但是資料庫由託管提供程式作為交鑰匙服務提供,不需要應用程式所有者進行管理或管理,並且如此易於使用,以至於開發人員可以認為資料庫確實是無伺服器的,即使它確實在後臺使用了伺服器。

SQLite是經典的無伺服器資料庫引擎的示例。使用SQLite,沒有其他程式,執行緒,機器或其他機制(主機OS和檔案系統除外)可以幫助提供資料庫服務或實現。確實沒有伺服器。

Microsoft Azure Cosmo DB 和 Amazon S3 是新的無伺服器資料庫的示例。這些資料庫由在雲中單獨執行的伺服器程式實現。但是伺服器是由ISP而非應用程式開發人員維護和管理的。應用程式開發人員僅使用該服務。開發人員不必設定,配置或管理資料庫伺服器例項,因為所有這些工作都是由服務提供商自動處理的。資料庫伺服器實際上確實存在,它們只是對開發人員隱藏。

瞭解“無伺服器”的這兩種不同定義很重要。當資料庫聲稱是“無伺服器”時,請確保辨別它們是“經典無伺服器”還是“新無伺服器”。

 

相關文章