在数据库和文件系统中存储文件

时间:2022-10-17 23:35:34

one of my customer ask for a Document Management System for some thousands of document in different format i.e. pdf, doc, docx etc. My question is what is the best way to store this file in database or in file system? How easy to secure a document between the two approach?.

我的一个客户需要一个文档管理系统来管理成千上万不同格式的文档,比如pdf、doc、docx等等。在这两种方法之间保护文档有多容易?

Fast retrieval of the files is the key requirement..

快速检索文件是关键要求。

am using mysql if that helps

如果有帮助的话,我用mysql吗

Regards.

的问候。

3 个解决方案

#1


13  

You might want to store it directly into filesystem.

您可能希望将其直接存储到文件系统中。

When using filesystem careful with :

在使用文件系统时要小心:

  • Confidentiality : Put documents outside of your Apache Document Root. Then a PHP Controller of yours will output documents.
  • 机密性:将文档放在Apache文档根之外。然后您的PHP控制器将输出文档。
  • Sharded path : do not store thousands of documents in the same directory, make differents directories. You can shard with a Hash on the Filename for example. Such as /documents/A/F/B/AFB43677267ABCEF5786692/myfile.pdf.
  • 分片路径:不要在同一个目录中存储数千个文档,创建不同的目录。例如,可以在文件名上使用散列进行切分。如/文档/ A / F / B / AFB43677267ABCEF5786692 / myfile.pdf。
  • Inode number : You can run out of inodes if you store a lot of small files (might not be your case if storing mostly PDF and office documents).
  • Inode号:如果您存储大量的小文件(如果主要存储PDF和office文档,那么可能不会出现这种情况),那么Inode就会耗尽。

If you need to search for these documents (date/title/etc...) you may want to store metadata into a database for better performances.

如果您需要搜索这些文档(日期/标题/等等),您可能希望将元数据存储到数据库中以获得更好的性能。

FYI, in this question MS SQL Server has FILESYSTEM column type (like an hybrid), but at the moment MySQL doesn't have an alternative.

顺便提一下,在这个问题中,MS SQL Server具有文件系统列类型(如混合型),但是目前MySQL没有其他的选择。

#2


4  

Using filesystem access for big datablobs means in general faster access and less overhead than storing them in a mysql database.

对大型数据库使用文件系统访问通常意味着比在mysql数据库中存储更快的访问速度和更少的开销。

One interesting and possibly related post: Storing Images in DB - Yea or Nay?

一个有趣且可能相关的帖子:用DB -是还是不是?

#3


0  

for high performance you should use File system, using php glob function and JS interface. I finished project like this in march.

为了提高性能,您应该使用文件系统,使用php glob函数和JS接口。我在三月份完成了这样的项目。

#1


13  

You might want to store it directly into filesystem.

您可能希望将其直接存储到文件系统中。

When using filesystem careful with :

在使用文件系统时要小心:

  • Confidentiality : Put documents outside of your Apache Document Root. Then a PHP Controller of yours will output documents.
  • 机密性:将文档放在Apache文档根之外。然后您的PHP控制器将输出文档。
  • Sharded path : do not store thousands of documents in the same directory, make differents directories. You can shard with a Hash on the Filename for example. Such as /documents/A/F/B/AFB43677267ABCEF5786692/myfile.pdf.
  • 分片路径:不要在同一个目录中存储数千个文档,创建不同的目录。例如,可以在文件名上使用散列进行切分。如/文档/ A / F / B / AFB43677267ABCEF5786692 / myfile.pdf。
  • Inode number : You can run out of inodes if you store a lot of small files (might not be your case if storing mostly PDF and office documents).
  • Inode号:如果您存储大量的小文件(如果主要存储PDF和office文档,那么可能不会出现这种情况),那么Inode就会耗尽。

If you need to search for these documents (date/title/etc...) you may want to store metadata into a database for better performances.

如果您需要搜索这些文档(日期/标题/等等),您可能希望将元数据存储到数据库中以获得更好的性能。

FYI, in this question MS SQL Server has FILESYSTEM column type (like an hybrid), but at the moment MySQL doesn't have an alternative.

顺便提一下,在这个问题中,MS SQL Server具有文件系统列类型(如混合型),但是目前MySQL没有其他的选择。

#2


4  

Using filesystem access for big datablobs means in general faster access and less overhead than storing them in a mysql database.

对大型数据库使用文件系统访问通常意味着比在mysql数据库中存储更快的访问速度和更少的开销。

One interesting and possibly related post: Storing Images in DB - Yea or Nay?

一个有趣且可能相关的帖子:用DB -是还是不是?

#3


0  

for high performance you should use File system, using php glob function and JS interface. I finished project like this in march.

为了提高性能,您应该使用文件系统,使用php glob函数和JS接口。我在三月份完成了这样的项目。