保存文件到数据库记录,但不是blob -保存在PC上的目录



是否有人曾将文件保存在数据库记录中,但将它们存储在PC上的目录中?

软件允许你根据数据库记录添加文件但是在添加的时候,它会创建一个目录并获取文件的副本并把它放在那里。仍然允许用户进入数据库记录并从软件中查看文件。

任何帮助都将非常感激。谢谢你,

您可以将文件存储在文件夹中,并将路径保存在数据库记录中,但这会使这些文件仅对同一台计算机上运行的软件可用。相反,您可以使用FTP服务器并在其上存储文件,为它们指定与数据库记录中唯一字段相等的名称,例如自动生成/自动递增的ID字段。这样,在任何计算机上运行的客户端软件都可以很容易地检索与数据库记录对应的文件。

我实际上在我的一个程序中使用了这种方法。

现在请注意,我有一个定制的数据库和数据库引擎。

我真的怀疑如果不做一些改变,普通的数据库引擎可以做到这一点。为什么?

为了使其工作,您需要修改记录准备例程。记录准备程序是什么?

记录准备例程是从多个数据库表(关系数据库连接)中读取数据的函数,然后将它们连接成一个结构化的记录,最后发送给客户端。

正是这些例程控制着如何读取数据以及从哪里读取数据。

为什么我决定实现这个?

那是很多年前的事了,那时我只有一台老式的Win98电脑。而且由于Win98不支持NTFS文件系统,只支持FAT32,所以我被限制在3gb的文件大小,当将一堆文件直接保存到数据库中时,可能很快就会超过3gb,而在某些数据库中,这些文件通常存储在单个文件中,或者存储在几个不同的文件中(每个数据库表一个)。

因为今天的计算机文件系统不再有这样的限制,所以不再需要这样的解决方案了。

但是我还是决定保留这个功能。为什么?

我存储的大多数文件都是文本文件。因此,为了进一步减少对数据库服务器的空间需求,我开始实现文字压缩。

所以所有文件都被压缩,但是当客户端请求包含这些文件之一的某些记录时,文件被解压缩并发送给客户端(以保持与旧客户端软件的向后兼容性)。

在较新的客户端软件中,我以压缩格式传输这些文件以及解压缩所需的单词字典。所以这些文件现在在客户端解压缩了。

对于我也存储的非文本文件,我计划实现一个自定义文件服务器,因此这些文件甚至不会通过数据库引擎本身传输,因为这会导致一些速度减慢,特别是在较大文件的情况下。

最新更新