“客户端-服务器”和“文件-服务器”数据库之间有什么区别?

“客户端-服务器”和“文件-服务器”数据库之间有什么区别?

我正在尝试回答考试中的一个问题,但找不到足够精确的答案。请帮助我理解“客户端-服务器”数据库(例如 SQL Server)和“文件-服务器”数据库(例如 Paradox 或 FoxPro)之间的主要区别是什么?

答案1

正确答案取决于谁出了考试题(你应该向你的实际老师询问资源),但我对这些术语的理解如下:

  • 在“客户端-服务器”数据库中,客户端使用专用的数据库访问协议并与特定于该数据库的服务器软件进行通信。客户端无法访问原始数据库存储的低级权限 - 它只能发出高级数据访问请求(例如 SQL“select”或 Redis“get”)。

    例如,MySQL 客户端使用 MySQL 协议与mysqld服务通信,而 LDAP 客户端使用 LDAP 协议与slapd服务通信。所有查询处理和访问控制都在服务器上完成,并且只返回实际结果。

  • 在“文件服务器”数据库中,没有这样的协议,也没有“数据库服务器”服务。相反,如果数据库是远程的,则通过通用文件共享协议(如 NFS 或 SMB/CIFS)进行访问。

    例如,在 SQLite 或 Paradox 或 MS Access 中,客户端直接.db通过 SMB/NFS 打开文件并使用字节级操作来读取和更新它,而无需服务器的任何协助。查询需要客户端本身扫描索引甚至下载整个表,并且访问控制通常是全有或全无的。

当地的基于文件的数据库非常常见(例如,你的手机或电脑可能有几十个 SQLite 数据库),但是偏僻的基于文件的数据库相对较少见;Paradox 最常见于 1990 年代为基于 Windows 的 PC LAN 构建的旧版软件中(这些软件可能不一定拥有真正的数据库服务器的资源,但确实具有文件共享功能)。

(然而,两个都数据库的类型可以从简单的键值存储到具有数据类型和索引的成熟 SQL 数据库。

相关内容