如何决定是将二进制数据存储在 Postgres 中还是文件中?

How to decide whether to store binary data in Postgres or in files?

我正在开发一个 Postgres 支持的系统,其中将存储许多二进制文件。

我至少有两个选择:

  1. 将它们存储在 Postgres 中。
  2. 将它们存储为文件。

我需要考虑哪些标准才能做出最佳决定?

我会考虑以下几点:

  • 性能。在文件系统中存储二进制文件通常在读取和写入方面性能更好。
  • 安全。对文件系统中文件的访问由操作系统控制,但是如果将文件存储在数据库中,则适用 PostgreSQL 访问规则。
  • 备份一致性。如果将数据分开存储(文件系统和数据库)很难有一致的备份。文件系统备份和数据库备份可能不同步。
  • 交易属性。文件系统不是事务性的,但显然 PostgreSQL 是。