What is the difference between "client-server" and „file-server“ database? [closed]

I am trying to answer a question put on the exam but cannot find answer that is precise enough. Please help to understand what are the major difference between "client-server" database such as SQL Server, and „file-server“ database like Paradox or FoxPro?


Solution 1:

The correct answer depends on who wrote the exam question (you should be asking your actual teacher for resources), but this is how I understand the terms:

  • In "client-server" databases, the client uses a dedicated database access protocol and talks to server software specific to that database. The client does not have low-level access to raw DB storage – it can only make high-level data access requests (e.g. SQL 'select' or Redis 'get').

    For example, a MySQL client uses the MySQL protocol to talk to the mysqld service, while an LDAP client uses the LDAP protocol to talk to the slapd service. All query processing and access control is done on the server and only the actual result is returned back.

  • In "file-server" databases, there is no such protocol and there is no "database server" service, either. Instead, if the database is remote, it is accessed through a generic file-sharing protocol such as NFS or SMB/CIFS.

    For example, in SQLite or Paradox or MS Access, the client directly opens the .db file via SMB/NFS and uses byte-level operations to read and update it, without any assistance from the server. Queries require the client itself to scan the index or even download the entire table, and access control is usually all-or-nothing.

Local file-based databases are very common (e.g. your phone or computer probably has several dozen SQLite databases), but remote file-based databases are relatively rare; Paradox is most often found in legacy software that was built for Windows-based PC LANs in the 1990s (which might not necessarily have had the resources for a real database server, but did have file-sharing).

(However, both types of databases can range from simple key-value stores to full-blown SQL databases with data types and indexes.)