网络浏览器的数据库服务器

网络浏览器的数据库服务器

Chrome、Firefox、Opera 或 Safari 等 Web 浏览器最常用的数据库服务器是什么?也许我不了解 Web 浏览器,但我假设它们必须有一个数据库服务器,就像 Web 应用程序有一个数据库服务器一样。

答案1

我假设他们必须有一个数据库服务器,就像 Web 应用程序有一个数据库服务器一样。

这个假设的依据是什么?网络浏览器和网络应用程序是不同的东西,它们不同的东西;因此他们不要自动共享需求。

你猜对了,浏览器并且经常使用数据库——但它们这样做“是因为 Web 应用程序使用数据库”。如果/当他们使用数据库时,他们有一个具体需要它的用途是:长期、可搜索的数据存储。就是这样。


对于许多 Web 应用程序来说,对数据库的需求是显而易见的:如果它们有用户帐户,它们需要将这些帐户存储在某个地方;如果它们有用户可编辑的页面,它们需要将页面内容存储在某个地方;等等。Web 应用程序必须有数据库吗?只有当它需要存储数据时才需要。

相比之下,网络浏览器会存储什么呢?一般来说它不会跑步webapp – 它仅呈现 webapp 发送的 HTML 页面。webapp 的大多数内部细节​​(包括是否使用数据库)对浏览器完全隐藏。

相反,Web 浏览器中数据库的主要用途是实现浏览器的自己的功能:存储浏览历史记录、书签或 Cookie。(没错,如今的网页可以浏览器通过 JavaScript(IndexedDB)存储某些内容 - 但这不是大多数 Web 应用程序的主要存储。)


那么,网络浏览器或任何其他桌面应用程序使用什么呢?嗯,它不使用数据库服务器– 它使用嵌入式数据库

数据库不需要专用的“服务器”程序。数据库服务器用于实现多用户功能(身份验证、权限检查、复制)。但如果数据库完全由您拥有,并且大小相当小(例如,只有您的网络书签),则它不需要这些功能,实际存储可以使用简单的本地库来实现。

如果你需要完整的 SQL,最流行的“单文件”数据库可能是SQLite。Firefox 和 Chrome 都使用 SQLite 来存储书签、历史记录、证书、偏好设置等等。

对于简单的非 SQL“键/值”数据库,伯克利数据库曾经是流行的选择——尽管由于许可问题和有些过时的设计,你经常会看到它被取代线性数据库级别数据库(或者实际上由同一个 SQLite)。

例如:当网页使用 JavaScript IndexedDB API 时,Chrome 将数据存储在 LevelDB 数据库中;Internet Explorer 使用 Windows ESENT;而 Firefox 使用 SQLite。

(还有很多其他嵌入式数据库类型——维基百科文章我链接到之前的版本还有很长的列表——但它们远没有那么受欢迎。即使是 Windows 本身,它自带了 ESENT 数据库引擎内置,有时可以使用 SQLite 捕获。)

最后,许多类型的数据足够小,不需要完整的数据库引擎根本可以直接放入文件。许多浏览器实际上将 cookie 存储在文本“cookie jar”文件中 - 每行一个 cookie,每个域一个文件。Mozilla/Netscape 过去以单个近乎 HTML 的网页形式存储书签。现代选择通常是在存储数据之前使用 JSON 对其进行格式化。


正如我所指出的,这并不是 Web 浏览器特有的。它们使用数据库只是因为它们有数据要存储——但邮件客户端、音乐播放器、游戏等也是如此,它们通常都有某种嵌入式数据库来保存数据。

(不要忘记,大多数程序的设置都保存在 Windows 注册表中,一个键/值数据库,就像文件系统本身一样。

相关内容