我开始着手一个新项目。该项目涉及跟踪潜在的数千个文档。每个文档至少是表中的一行,包含标题、作者、描述等字段(主文档表)。
然而,每个文档在文件系统中是或至少可以以几种不同的形式表示。
例如:
(1)每个文档都有或至少应该有pdf版本,(2)如果有pdf,则将pdf的每一页提取为图像文件,以及(3)提取每个文档的文本从 PDF 或以其他方式派生。
因此,系统中的每个文档实际上都有几个(可能五十个或更多,取决于页数)与之关联的文件。
为了比我原来更简洁:
每个文档可以有一个或多个与之关联的不同数据对象(pdf 文件、jpgs、文本)。但数量和类型是任意的。
最初,这些数据对象只是存储在服务器上的文件,使用目录结构来保持它们的组织。示例:/documents/{id}/images、/documents/{id}/pdfs 等。为了避免不断扫描文件系统,此目录结构在 MySQL 数据库中表示,使用大量表和外键。获取有关文档的所有信息——与其关联的每个文件——需要一个复杂的 JOIN。
像 MongoDB 这样的 NoSQL 解决方案会更好吗?我对最终将所有文件存储在数据库中特别感兴趣,以更好地确保文档与其数据之间的完整性。