我需要将二进制数据文件存储在运行在 Ubuntu 服务器上的 PostgreSQL 数据库中。最初将有几十个文件,每个文件大小约为 250kb。但是,文件的数量会随着时间的推移而增加。我有时可能需要从文件中提取数据以进行其他下游分析。
我已经对将二进制数据存储为 BLOB 或引用的古老问题进行了一些研究。两者显然各有利弊。是否有任何与 PostgreSQL 相关的特定问题需要我注意?如果我想通过 PostgreSQL 函数或通过外部 Python 程序从文件中提取数据,是一种方法还是另一种方法更可取?
如果我将数据文件直接存储在数据库中,将它们存储在一个带有引用“主”表的外键的单独表中,而不是包含所有其他字段的表中会更好吗?
我已经阅读了这里的问题和答案;那里的评论表明在 Linux 上通过引用(在文件系统中)存储二进制文件更好。我在这里的问题特别与 PostgreSQL 有关,以及从文件中提取数据以进行各种分析。
更新:类似的问题。
我认为您应该将数据库中的数据作为普通bytea
列存储。这样您就可以获得数据库的所有优点,并且您可以使用数据库函数(甚至 PL/Python,如果需要)处理数据。较大的数据项将自动存储在行外,因此您没有理由引入另一个引用间接。
将大型二进制对象存储在数据库之外的主要原因是它们太大而无法在令人满意的时间内存储和检索它们,如果它们使数据库膨胀超出实用性,或者如果您需要从一个单独的应用程序。据我所知,这些都不适用。
归档时间: |
|
查看次数: |
2102 次 |
最近记录: |