65.9K
CodeProject 正在变化。 阅读更多。
Home

构建应用程序时的文件存储最佳实践 - 数据库 (Blob 存储) 与文件系统

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.25/5 (8投票s)

2008年8月7日

CPOL

3分钟阅读

viewsIcon

58871

本文解释了系统架构师在设计数据存储应用程序时应遵循的最佳策略。

引言

本文讨论了在设计数据存储应用系统时,文件与数据库中的 blob 存储的数据存储的优缺点。

背景

对于大多数 Web 应用程序,这仍然是一个常见的设计问题:“图像应该存储在数据库中还是文件系统中?” 在像购物车这样的基于 Web 的应用程序中,网站必须处理大量产品图像,最好的选择是将图像与元数据一起存储在数据库中。 然而,即便如此,这两种方法都有利有弊。

在设计任何数据存储应用程序时,系统架构师应从更广泛的角度考虑拟议系统的行为,从而对此做出正确的决定。

众所周知,IO 操作稍微快一些,因此当我们使用文件服务器进行存储时,文件检索速度会更快,而数据库作为文档或文件存储将为组织提供一个中心的数据存储库,因此数据管理更有效,因此更受控制。 数据库可以遵循良好的实体建模并具有逻辑设计,但如果应用程序和用户无法有效地访问和操作存储在其中的 BLOB 数据,则数据库将无效。

BLOB 需要数据库设计人员了解应用程序将如何在实践中使用 BLOB。 花时间设计 BLOB 对象在数据库中的表示方式。 您在数据库中布置大型对象的方式会影响应用程序的响应时间和吞吐量。

优点和缺点

BLOB 存储作为最佳解决方案

  1. 为了更好的可扩展性。 虽然文件系统旨在处理大量大小不等的对象,例如文件和文件夹,但实际上它们并没有针对大量(数千万)小文件进行优化。 数据库系统针对此类场景进行了优化。
  2. 为了更好的可用性。 数据库服务器具有超出文件系统提供的可用性功能。 数据库复制是一组解决方案,允许您在分布式环境中复制、分发和可能修改数据,而日志传送提供了一种在主系统发生故障时保留数据库备用副本的方法。
  3. 用于集中数据存储库,并可控制增长。 DBA 有权控制和监视数据库的增长,并根据需要拆分数据库。
  4. 用于全文索引和搜索操作。 您可以索引和搜索存储在 BLOB 列中的某些类型的数据。 当数据库设计人员决定一个表将包含一个 BLOB 列,并且该列将参与全文索引时,设计人员必须在同一表中创建一个单独的基于字符的数据列,该列将保存相应 BLOB 字段中文件的文件扩展名。 在全文索引操作期间,全文服务会查看字符列中列出的扩展名(*.txt、*.doc、*.xls 等),应用相应的过滤器来解释二进制数据,并提取索引和查询所需的文本信息。

文件系统存储作为最佳解决方案

  1. 对于需要流媒体性能的应用程序,例如实时视频播放的图像。
  2. 对于应用程序,例如 Microsoft PhotoDraw® 或 Adobe PhotoShop,它们只知道如何访问文件。
  3. 如果要使用 NTFS 文件系统中的某些特定功能,例如远程存储。

历史

  • 2008 年 8 月 7 日:初始发布
© . All rights reserved.