我需要将二进制数据文件存储在可在Ubuntu服务器上运行的PostgreSQL数据库中。最初,将有几十个文件,每个文件大小约为250kb。但是,文件数会随着时间增加。有时我可能需要从文件中提取数据以进行其他下游分析。
我已经对将二进制数据存储为BLOB或引用的古老问题进行了一些研究。两者显然都有各自的优缺点。我应该注意与PostgreSQL有关的任何特定问题吗?如果我想通过PostgreSQL函数或通过外部Python程序从文件中提取数据,是一种方法还是另一种方法更可取?
如果我将数据文件直接存储在数据库中,是否最好将它们存储在带有引用“主”表的外键的单独表中,而不是存储在包含所有其他字段的表中?
我在这里阅读了问题和答案; 那里的评论建议在Linux上通过引用(在文件系统中)存储二进制文件更好。我在这里的问题特别与PostgreSQL有关,并且与从文件中提取数据进行各种分析有关。
更新:类似的问题。
使用PostgreSQl,可以设置一个规则,当删除包含引用的记录时,该规则将自动删除文件系统中的文件。
—
jp,
我敢肯定,这个问题有多个答案。这是怎么回事?如果张贴者删除了它,是否可以查看?对此有何评论?
—
SabreWolfy 2011年
是的,我删除了它,因为可以避免我写的bytea的性能问题。注释可以归纳为“ bytea一切都很好,您应该确保不要在数据库中转义不可打印的字符,然后在应用程序中再次转义它们。正如araqnid所评论的,您应该改用libpq支持的十六进制转义。”
—
jp