2013-08-18 40 views
1

在数据库中存储大文件(大约100 GB)是一个好主意吗?
目前我们考虑使用NBT格式或使用mysql/postgresql数据库将数据保存在文件夹中。在数据库中存储非常大的文件

+1

几乎同样的问题:http://stackoverflow.com/q/3748/983992 –

+1

*** ***什么数据库?这高度依赖于您正在使用的具体数据库系统。但总的来说,大小不小于1 MB的文件(单个文件)应该放在数据库之外。但是,再次说明:这是一个非常普遍的陈述 - 它**取决于您的实际数据库和您想要存储的文件种类。** –

回答

1

将大文件存储在数据库中将是一个非常糟糕的主意,即使您可以使用可以

只需将文件名存储在数据库中 - 将文件保留在磁盘上。

的主要原因是对GBE数据库不搅动大文件是数据库备份时间变得可笑,并没有什么可以得到的,而你失去了存储在分布式存储的内容的能力。

如果数据库损坏并且需要从备份重建,恢复时间也会变得很大。


你可以做任何事情,但这并不意味着你应该。

+0

因此,您不会在磁盘上备份文件?从技术上讲,备份空间的数量并没有真正的差异。当您执行增量备份时,两种方案都需要几乎相同的空间。当然,当涉及到100GB的数据文件大小时,我也会推荐你的解决方案。 – alzaimar

+2

@alzaimar可能大小相同,但所花费的时间会更长。有些数据库必须处于只读模式才能进行备份(如mysql),因此您离线时间更长。即使是适度的数据库大小也需要很长时间才能备份 - 我正在讲话时间。请注意,我所谈论的是*数据库*实用程序备份,而不是磁盘存储备份。 – Bohemian

+0

我只是在谈论大小,技术上没有什么区别。 – alzaimar

1

数据库旨在对大量小块数据进行排序,过滤和执行计算。如果您只想要一个文件系统(例如,对汇总按上载日期分组的文件总数有限的支持),例如只需使用文件系统

0

使用文件系统。

使用数据库来存储文件的位置和名称

你也可以(在Unix系统立足)使用像剪切,粘贴公用事业和加入(example
在文件级别上的文件。

2

我个人的经验是数据库不适合大数据块(除非它们支持文件系统感知存储,例如SQL Server FILESTREAM和Oracle BFILE)。

大多数云为Blob提供单独的存储是有原因的。大数据文件的生命周期比典型的日常数据......不同的生命周期,不同的方式来服务内容,不同的缓存策略,不同的备份计划等不同等

在看看:

我就跟着他们走,要么拿出无线“File system aware”存储系统(例如,将数据库中的文件系统路径存储)或使用单独的存储机制。

每次我不得不处理数据库中存储blob的应用程序(图像,pdf等)时,我已经花费了更多的时间处理表空间,备份和性能问题,比我设置备份/静态文件服务/缓存文件系统感知解决方案的策略。

相关问题