存储与数据库中数据相关的二进制文件的最佳位置是什么?你应该:
(1) 的优点是(除其他外)事务的原子性得以保留。代价是您可能会显着增加存储(和相关的流/备份)要求
(3) 的目标是在某种程度上保留原子性 - 如果您可以强制您正在写入的文件系统不允许更改或删除文件,并且始终具有正确的哈希作为文件名。这个想法是在允许引用哈希的插入/更新之前将文件写入文件系统 - 如果此事务在文件系统写入之后但在数据库 DML 之前失败,那很好,因为文件系统“假装”是所有的存储库可能的文件和哈希值 - 是否有一些文件没有被指向并不重要(如果你小心的话,你可以定期清理它们)
编辑:
看起来一些 RDBMS 以各自的方式涵盖了这一点 - 我很想知道其他人是如何做到的 - 特别是在 postgres 的解决方案中
我在 MSDN 的下拉列表中找到了一个名为SQL Server "Denali"的新标题,但我没有找到太多关于它的信息:
是否有人对此版本中的新功能或重大错误修复有更详细的信息?我希望有人使用过或测试过它。
我需要将二进制数据文件存储在运行在 Ubuntu 服务器上的 PostgreSQL 数据库中。最初将有几十个文件,每个文件大小约为 250kb。但是,文件的数量会随着时间的推移而增加。我有时可能需要从文件中提取数据以进行其他下游分析。
我已经对将二进制数据存储为 BLOB 或引用的古老问题进行了一些研究。两者显然各有利弊。是否有任何与 PostgreSQL 相关的特定问题需要我注意?如果我想通过 PostgreSQL 函数或通过外部 Python 程序从文件中提取数据,是一种方法还是另一种方法更可取?
如果我将数据文件直接存储在数据库中,将它们存储在一个带有引用“主”表的外键的单独表中,而不是包含所有其他字段的表中会更好吗?
我已经阅读了这里的问题和答案;那里的评论表明在 Linux 上通过引用(在文件系统中)存储二进制文件更好。我在这里的问题特别与 PostgreSQL 有关,以及从文件中提取数据以进行各种分析。
更新:类似的问题。
虽然与这个问题有关,但我有一个稍微不同的角度来解决这个问题。这是我的情况:
我正在编写一个管理桌面应用程序插件的 Web 应用程序(使用 PHP 或 Python)。用户可以浏览插件、安装插件、上传插件等。
我正在规划数据库的架构,并发现自己做出了以下决定:
将图标(用于插件)存储在表本身中还是将它们存储在文件系统中并简单地将文件名存储在表中更好?
图标很小(48x48 或接近)并且最多不会占用超过 5 或 6 KB。将图像数据存储在表中是否有任何严重的缺点?还有其他我应该注意的影响吗?性能会成为问题吗?存储会成为问题吗?
编辑:我目前正在查看 MySQL 数据库中的 MyISAM 表。