database - Postgresql 数据库的文件存储系统

标签 database postgresql database-design relational-database

我目前有一个需要存储大量文件的数据库。但是,我还存储有关特定文件的信息。我希望能够将文件与包含此元数据的数据库一起存储,我想知道如何最好地做到这一点。这些文件是自动生成的,并且处于适合文件系统的层次结构中。

最初的想法是将路径存储到包含所有文件的文件系统的根目录,然后引用与此相关的文件(例如../file_group_1/file_1)。在研究这个问题时,很难找到一种方法将文件存储在这个文件系统中,而不用说,在管理文件系统的数据库旁边运行一个单独的服务器。

我查看了 Large Objects输入 Postgresql,但我也担心安全隐患。对此有更好的解决方案吗?

最佳答案

将文件存储在数据库之外通常会更好,因为访问速度更快并且数据库大小保持较小。不利的一面是,您的应用程序将不得不在面对崩溃、事务中止等情况时管理数据库和文件系统之间的一致性。

我会用元数据存储文件的完整路径;将其拆分并不会节省很多,而且会使查询更加复杂。

为了保持数据库和文件系统之间的一致性,您始终可以先写入文件,永远不要删除文件,除非在特殊的垃圾收集运行期间,此时您还可以识别并删除孤儿。

如果文件存储在数据库中,bytea优于大对象,除非文件非常大或者需要分段读写。

关于database - Postgresql 数据库的文件存储系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51364182/

相关文章:

Mysql根据不同表的日期时间过滤数据

node.js - 将 knex SELECT 查询结果用于另一个 SELECT 查询

mysql - 标签数据库关系数据的优势

sql-server - SQL优化: how many columns on a table?

database-design - 名称的推荐数据库列大小是多少?

mysql - 在多对多中查找最近加入的记录

java - java程序连接hive数据库出错

基于连接拆分表的 SQL 语句

postgresql - rake db :migrate does nothing in Rails 4. 1 应用程序并无错误退出

php - 你会如何做一个带有修订的评论系统?