数据存储应用系统设计考虑

在设计面向网络的应用程序时,一个常见的设计问题浮现出来:“图像应该存储在数据库中还是文件系统中?”例如,像购物车这样的基于Web的应用程序需要处理大量的产品图像,最佳选择可能是将图像与元数据一起存储在数据库中。然而,这样说的同时,两种方法都有其优缺点。在设计任何数据存储应用程序时,系统架构师应该从更广泛的角度考虑,做出正确的决定。

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

BLOB要求数据库设计者理解应用程序将如何在实践中访问和使用BLOB。花时间设计BLOB对象在数据库中的表示方式。在数据库中布局大型对象的方式会影响应用程序的响应时间和吞吐量。

优势与劣势

为了更好的可扩展性。虽然文件系统被设计用来处理大量大小不一的对象,比如文件和文件夹,但实际上它们并没有针对数千万个小文件进行优化。数据库系统针对这种情况进行了优化。

为了更好的可用性。数据库服务器具有超出文件系统提供的可用性特性。数据库复制是一套解决方案,允许复制、分发并可能在分布式环境中修改数据,而日志传送提供了一种保持数据库备用副本的方式,以防主系统失败。

为了数据的中央存储库和控制增长。数据库管理员有特权控制和监控数据库的增长,并在需要时分割数据库。

为了全文索引和搜索操作。可以对存储在BLOB列中的某些类型的数据进行索引和搜索。当数据库设计者决定一个表将包含一个BLOB列,并且该列将参与全文索引时,设计者必须在同一表中创建一个单独的基于字符的数据列,该列将保存对应BLOB字段中的文件扩展名。在全文索引操作期间,全文服务查看基于字符的列中列出的扩展名(如.txt、.doc、.xls等),应用相应的过滤器来解释二进制数据,并提取索引和查询所需的文本信息。

对于需要流媒体性能的应用程序,例如实时视频播放。

对于像Microsoft PhotoDraw®或Adobe PhotoShop这样的应用程序,它们只知道如何访问文件。

如果想使用NTFS文件系统中的某些特定功能,例如远程存储。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485