我需要在 Postgres 数据库中存储大文件(从几 MB 到 1GB)。数据库有多个模式。看起来 Postgres 有 2 个选项来存储大对象:LOB 和 BYTEA。然而,我们似乎遇到了每个选项的问题。
高球。这几乎是理想的,最多可以存储 2GB 并允许流式传输,这样我们在读取 LOB 时就不会达到 PHP 后端的内存限制。但是,所有 blob 都存储在 pg_catalog 中,并且不是架构的一部分。当您尝试使用带有选项 -n 和 -b 的 pg_dump 来仅转储一个带有其 blob 的模式时,这会导致一个大问题。它会正确转储模式数据,然后它包括数据库中的所有 blob,而不仅仅是属于特定模式的 blob。有没有办法使用 pg_dump 或其他一些实用程序来转储单个模式及其 blob?
白茶。这些是按模式正确存储的,因此 pg_dump –n 可以正常工作,但是我似乎找不到流式传输数据的方法。这意味着如果数据大于内存限制,则无法从 PHP 访问数据。
有没有其他方法可以在 Postgres 中存储大数据,允许流式传输并正确使用每个数据库的多个模式?
谢谢。