gpt4 book ai didi

mysql - Node.js 图片库的数据库解决方案

转载 作者:行者123 更新时间:2023-11-29 18:04:45 26 4
gpt4 key购买 nike

我正在使用 Node.js 开发一个基于网络的个人飞机照片库,向 friend /同事等展示我的照片。服务器最多将托管数百或一到两千张照片(作为静态文件),而它们的附带数据将存储在数据库中。

网站不应产生太多流量(一次仅 1-2 次访问)。其主要功能是一个复杂的搜索“引擎”,能够按飞机制造商、飞机类型、飞机注册、航空公司、照片拍摄机场、照片日期和许多其他方面过滤和排序照片。

我开发了一个关系模型来服务这些目标,并在 MySQL 数据库中实现:

                               +-------+
| Photo |
+-------+
N | | N
+----------------+ +--------------+
1 | | 1
+------------------------+ +--------------------------+
|Aircraft | e.g. "G-CIVL"| | Airport | e.g. "Heathrow"|
+------------------------+ +--------------------------+
N | | N
1 | | 1
+-----------------------+ +-----------------------+
| Model | e.g. "747-400"| | City | e.g. "London" |
+-----------------------+ +-----------------------+
N | | N
1 | | 1
+-------------------------+ +--------------------------------+
|Model_family | e.g. "747"| | Country | e.g. "United Kingdom"|
+-------------------------+ +--------------------------------+
N |
1 |
+----------------------------+
|Manufacturer | e.g. "Boeing"|
+----------------------------+

每张照片条目都包含有关拍摄地点(机场 - 城市 - 国家“分公司”)和照片中显示的飞机的信息(飞机 - 型号 - model_family - 制造商“分公司”)。

正如我之前提到的,访问者应该能够通过这些表的任何列来过滤照片,需要在数据库查询中使用不同的联接来实现不同的过滤选项。示例:

  1. 用户正在查找在某个国家/地区拍摄的照片。选择查询返回相应的图像数据应加入照片,机场、城市和国家表。
  2. 用户正在过滤某架飞机的照片模型。 SELECT 查询必须连接照片和模型仅表。

如果用户同时从多个(甚至更多)方面过滤照片,问题会更加复杂。

因此,需要一个复杂的应用程序级 SQL 查询构建算法,该算法将考虑上述表结构。

我的问题是:

  • 提到的方法(复杂的 SQL 字符串构建算法)是解决该问题的好方法吗?

  • 或者我应该将所有表连接在一起,而不管用户的过滤选项如何? (似乎是为了更好的代码可维护性而进行的严重的性能权衡)

  • 或者像 MongoDB 这样的 NoSQL 解决方案会更扁平(并且非规范化)模型更适合这项任务吗?不必设置不同连接不同的过滤选项似乎是一个巨大的优势。存储的数据不太可能被更新或删除,因此非规范化可能不是一个严重的问题。

感谢您提前提供的帮助。

最佳答案

我没怎么用过 MYSQL,但在 NoSQL (Mongodb) 中使用过

您可以获得类似这样的数据结构,并且可以根据每个参数进行搜索

[
{
"_id": 0,
"Airport": "Heathrow",
"city": "London",
"country": "United Kingdom",
"Aircraft": "G-CIVL",
"model": "747-400",
"model_family": "747",
"manufacturer": "Boeing",
"photo_url": "http://www.dummy-url/dakshdajk8sdjkhs8ds8dh8sd8sdj8s.png"
},
{
"_id": 1,
"Airport": "Heathrow",
"city": "London",
"country": "United Kingdom",
"Aircraft": "G-CIVL",
"model": "747-400",
"model_family": "747",
"manufacturer": "Boeing",
"photo_url": "http://www.dummy-url/dakshdajk8sdjkhs8ds8dh8sd8sdj8s.png"
}
]

关于mysql - Node.js 图片库的数据库解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978051/

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