我已经开始研究一个新项目了。该项目涉及跟踪可能的数千份文件。每个文档至少是表中包含标题,作者,描述等字段的行(主文档表)。
但是,每个文档至少可以在文件系统中以多种不同的形式表示。
例如:
(1)每个文件都有或至少应该是pdf版本, (2)如果有pdf,则将pdf的每个页面提取到图像文件中,并且 (3)每个文件的文本要么从PDF中提取,要么以其他方式得出。
因此系统中的每个文档实际上都有几个(可能是五十个或更多,取决于页数)与之关联的文件。
比我原来更简洁:
每个文档可以包含一个或多个与之关联的不同数据对象(pdf文件,jpgs,文本)。但数量和类型是任意的。
最初,这些数据对象只是存储在服务器上的文件,使用目录结构来保持它们的有序性。示例:/ documents / {id} / images,/ documents / {id} / pdfs等。为了避免不断扫描文件系统,这个目录结构在MySQL数据库中表示,使用了大量的表和外键。获取有关文档的所有信息 - 每个与之关联的文件 - 都需要复杂的JOIN。
像MongoDB这样的NoSQL解决方案会更好吗?我特别感兴趣的是最终将所有文件存储在数据库中,以更好地确保文档与其数据之间的完整性。
答案 0 :(得分:1)
数千人转向NoSQL?让我们不要低估像MySQL,Postgres等RDBMS。您可以毫无问题地处理数百万行......只需确保您的应用程序正确编写。