最好的方式来存储/检索数以百万计的文件时,他们的元数据是在一个SQL数据库 [英] Best way to store/retrieve millions of files when their meta-data is in a SQL Database

查看:104
本文介绍了最好的方式来存储/检索数以百万计的文件时,他们的元数据是在一个SQL数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个过程,那将开始产生3-4亿的PDF文件,并​​继续在80K /天的速度。他们将是pretty的小(50K)每个,但我很担心的是如何管理文件我生成,便于查找的总质量。一些细节:

I have a process that's going to initially generate 3-4 million PDF files, and continue at the rate of 80K/day. They'll be pretty small (50K) each, but what I'm worried about is how to manage the total mass of files I'm generating for easy lookup. Some details:

  1. 我会一直产生一些其他的措施来执行一次文件,并且会有参与的几台服务器,所以我需要看的文件,因为它们可以产生的。
  2. 在生成后,这些文件将可虽然我已经写了一个查找过程。从本质上讲,我需要根据订单号,也就是每档独特的拉他们。
  3. 在任何时刻,一个现有的定单编号可重新提交,并且所生成的文件将需要覆盖原始副本。

我本来打算写这些文件都在NAS的单一目录,但我知道这可能不是一个好主意,因为有百万人和Windows可能无法处理一百万文件,查找非常优雅。我在寻找一些建议:

Originally, I had planned to write these files all to a single directory on a NAS, but I realize this might not be a good idea, since there are millions of them and Windows might not handle a million-file-lookup very gracefully. I'm looking for some advice:

  1. 是一个文件夹好吗?该文件将永远不会被列 - 他们只会使用同一个文件名,我已经确定的有System.IO.File检索
  2. 如果我做一个文件夹,可我看的一个System.IO.DirectoryWatcher新的文件,即使有很多的文件,还是会开始变得缓慢有很多文件?
  3. 他们应该被存储在一个SQL Server数据库,而不是BLOB的?因为我需要一个参考值,对它们进行检索,这也许会更有意义。

感谢您为您的想法!

推荐答案

我倒是组特定的子文件夹中的文件,并试图把它们(子文件夹)举办一些业务逻辑的方式。也许,所有的文件在某一天做?在每一天中的6小时内?或每#的文件,我说了一些1000最大。 (有可能是一个理想的数字摆在那里,希望有人将它张贴。)

I'd group the files in specific subfolders, and try to organize them (the subfolders) in some business-logic way. Perhaps all files made during a given day? During a six-hour period of each day? Or every # of files, I'd say a few 1000 max. (There's probably an ideal number out there, hopefully someone will post it.)

不要将文件不断老化和被删除?如果是这样,排序和文件是可删除的数据块。如果没有,我可以是你的硬件供应商?

Do the files ever age out and get deleted? If so, sort and file be deletable chunk. If not, can I be your hardware vendor?

有论点上存储在数据库中的文件的两面。

There's arguments on both sides of storing files in a database.

  • 在一方面你得到更高的安全性,因为它是多别扭拉从数据库中的文件;在另一方面,你可能表现较差,因为那更尴尬的从数据库拉出文件。
  • 在数据库,你不必担心每个文件夹,部门,NAS集群有多少文件,不管是谁 - 这是数据库的问题,而且很可能他们已经有了一个很好的实现这一点。在另一面,这将是更难管理/查看数据,因为这将会是在一个表中的bazillion斑点,而且,好了,呸。 (您可以在分区表的基础上,上述业务逻辑,这将使删除或归档无限更容易执行,即,或者分区视图,因为表分区​​具有1000分区的限制。)
  • 在SQL Server 2008中具有的FILESTREAM数据类型;我不很了解,可能是值得研究的。

一个最后一点担心的是保持一致的数据。如果在DB存储关于连同路径/名称的文件的文件中的信息,并将该文件被移动,则可以得到完全大清洗

A last point to worry about is keeping the data "aligned". If the DB stores the info on the file along with the path/name to the file, and the file gets moved, you could get totally hosed.

这篇关于最好的方式来存储/检索数以百万计的文件时,他们的元数据是在一个SQL数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆