'server'在嵌入式服务器 dbms 中的作用是什么?- 在寻找合适的rdbms时弹出的许多与"服务器"相关的术语感到困惑



我将给你一些背景知识,因为我认为没有它我的问题就不清楚。除此之外,我对服务器了解不多,但我想由于背景信息,我想我实际上问的是什么就会很清楚了。

我正在构建一个仅供我使用的小型c++程序(一个作业管理器,需要跟踪任务,因此它依赖于任务和子任务,并且需要多个表等),因此我认为我需要一个数据库。我很快发现了SQLite,它在很多方面都很适合我:它是免费的,它只使用任何软件都可以解释的。db文件,它可以嵌入,它很简单(在文档和库方面),,最重要的是:它是SQLite.org所描述的"无服务器"。

然而,我发现SQLite的动态类型系统非常烦人("为什么"不是重点;我可能会单独发一篇文章来问这个问题),我决定找一个rdbms,它有我上面提到的所有优点,但也有静态类型。

在寻找符合我需要的关系型数据库管理系统时,我遇到了许多术语,这些术语都与关系型数据库管理系统如何实现有关,例如"服务器"之类的术语。所有的术语都很模糊,一个词并不是每次都有相同的含义。

我注意到所有这些关键词和对比在我搜索的过程中弹出:

  • 单机vs服务器/客户端
  • 嵌入式vs……"未嵌入",我猜(?)
  • 经典无服务器vs新无服务器
  • Serverless……但实际上是基于云的(我认为云是服务器(?))
  • 服务器vs服务
  • 服务vs应用
  • 用户vs客户端

据我所知,服务器是一个在后台执行的进程,不被用户直接使用。但除此之外,所有这些与服务器相关的术语都让我感到困惑。

我想要一个关系型数据库,具有这种'无服务器' SQLite.org所说的。我看到许多专业的免费SQL RDBMS提供商都提到了拥有"嵌入式服务器"的能力,它确实包含了"嵌入式"这个词,但它也包含了"服务器"。所以我的问题是:当供应商谈到这些"嵌入式服务器"时,它到底是什么意思?

这是否意味着有一个应用程序,当它运行时,它会打开另一个作为服务器的应用程序?当它这样做时,该服务器是服务还是只是另一个普通的类似应用程序的进程?或者,它是否与SQLite提到的无服务器工作完全相同,即:编译项目内部的库已经处理了仅使用.db文件的所有内容?除了数据库和可执行文件之外,它还需要其他文件吗?应用程序和数据库文件之间的通信是直接来自代码还是使用了另一个进程?

(PS:作为一个附带问题:你能帮我弄清楚上面列表中所有术语的确切含义吗?)

我知道我的问题可能到处都是,但我在这段旅程中遇到的词汇也是如此。我希望你能理解我的困惑是从哪里来的,并能帮助我澄清这些问题。提前谢谢。

By "serverless"sqlite只是意味着它是一个库,而不是在一个单独的进程中运行。在这一点上,它就像Access/Jet和其他旧的DMBS程序一样,直接读写文件。更常用的术语是"嵌入式数据库"。

"serverless"更常见的含义现在是一种基于云的功能,它不需要你安装或管理"服务器"。或虚拟机。如"我们在无服务器计算中使用Azure函数"。

其他 DMBS系统通常称为"客户机-服务器dbms",其中DMBS在单独的进程中运行,客户端程序通过网络或某些RPC机制与之通信。客户端-服务器RDBMS系统可以"捆绑"。或";embedded"与应用程序一起,并且可能不在单独的计算机上运行,但仍将在单独的进程中运行。

相关内容

最新更新