gpt4 book ai didi

sql-server - 什么是更好的?查询文件系统还是查询数据库?

转载 作者:行者123 更新时间:2023-12-03 16:44:27 33 4
gpt4 key购买 nike

我们的文件系统中有大约 50 万张图片。多个图像属于一个产品并以 ProductID 命名。例如,产品 ID 10010 有 3 张图像; 10010_1.jpg、10010_2.jpg 和 10010_3.jpg。要在照片库中显示这 3 个图像,经典 ASP 中的当前代码正在查询文件系统。代码看起来像这样:

Dim objFSO, i
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
i=1
While objFSO.FileExists(Server.MapPath(productid & "_" & i & ".jpg")
' draw the image
i = i + 1
WEnd

将图像名称保存在数据库表中并运行查询以获取给定产品的可用图像列表不是更好的主意吗?我很确定从数据库中读取它会更好。只是不情愿,因为我需要一张有 50 万条记录的大 table 。哪种方式效率更高?

我的表格看起来像这样:

ID      ProductID   ImageURL
-------------------------------------------
1 10010 10010_1.jpg
2 10010 10010_2.jpg
3 10010 10010_3.jpg
4 10011 10011_1.jpg
. . .

有什么建议吗?我正在用 ASP .NET MVC 3 重写网站。在这个平台/框架中我还需要注意什么吗?

最佳答案

IMO,您可以实现两种解决方案之一。

  1. Hybrid - 使用数据库存储文件系统中存在的文件路径。

  2. NoSQL - 完全远离数据库并使用 NoSQL 解决方案,该解决方案提供 API 来访问文件系统上的文件。

我看到两种实现都被使用过,#1 在#2 流行之前。尽管我使用 #1 的时间更长,但我觉得 #2 是存储“ Assets ”数据(图像、html 描述、视频文件)的最佳选择。 NoSQL 在访问 Assets 数据方面优于 MySQL 的主要原因是您不会浪费宝贵的数据库连接来拉取文件路径。

另外,还有一个建议;使用 productids 作为父目录分块你的目录。考虑一下:

# yours
dir1
... 125K files
dir2
... 125K files

# chunked (parent dirs are product ids)
3
... 3 files
4
... 2 files
5
... 3 files

在只有几个(< 100 个文件)的目录中统计文件比在有几千个文件的目录中统计文件要快得多。

关于sql-server - 什么是更好的?查询文件系统还是查询数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834634/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com