【问题标题】:Which database for storing file paths? [closed]哪个数据库用于存储文件路径? [关闭]
【发布时间】:2018-08-17 20:49:18
【问题描述】:

我正在构建一个具有即时消息功能的应用程序。 该应用程序将允许用户发送文件/图像以及普通短信。

我决定采用将文件存储在文件系统上的方法,并且只将文件路径写入数据库。文件不会有更新(只有插入和删除)。

哪个数据库最适合存储大量文件路径,并且可以轻松查询某些用户文件?

【问题讨论】:

  • 文件有多大? 1G 还是 1M 还是 100K?什么平台?什么数据库?...
  • 使用 MySQL。表格设计取决于每个消息/用户有多少文件/图像。它至少需要四个表:用户;消息;文件;消息_文件。最后一张表将文件链接到消息。或者,如果每个文件行都有其消息的外键和用户的另一个外键,则您可以删除最后一个表。
  • 我现在正处于计划阶段。我希望单个文件通常超过 10 MB。一开始文件总数可能不会超过 100k。

标签: mysql database mongodb database-design


【解决方案1】:

我会选择 MongoDB。我的经验是,使用单个 Messages 集合的基于文档的方法是最好的。然后,每个消息文档都包含所有文件路径。这消除了连接并更好地支持潜在的未来功能需求变化。

MongoDB 还提供了很好的方法来处理旧消息,例如 TTL 索引。

【讨论】:

  • 我能解决从文件系统中删除文件和从数据库中删除文件路径条目作为一个原子操作的问题吗? MongoDB 是否允许我使用类似事务的方法?
  • 对于这种情况,我强烈考虑将文件存储在 GridFS(在 Mongo 中),然后使用事务。然后可以将删除作为单个操作执行。
猜你喜欢
  • 2011-05-14
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 2017-01-15
相关资源
最近更新 更多