我有设计任务,想要专家意见。 我想存储一些看起来像这样的数据:
id,username,pass,small_pdf_doc,very_large_file - > (二进制30GB)
我想使用python,但可以自由选择:
我需要解决方案可扩展。您认为什么是最佳解决方案? 我做了一些调查,我考虑过使用mondodb或cassandra。
你认为它们都可以扩展吗?查询会随着时间的推移而减速吗? 此外,我读了mongodb文档,它说不支持并行写入,但有锁。 如果请求2个并行写入,数据库是否会中断,或者第二个是否会失败,或者计划同时执行这两个操作?
最后,如果我只是存储文件名与磁盘上的id匹配的大文件而不是将它们放在数据库中,那不是更好吗?这样可以更容易备份并允许并行化。
答案 0 :(得分:1)
我建议使用关系数据库来存储id
,username
和pass
,并将大文件放到文件系统中,甚至更好地放到像amazon s3这样的东西。这样可以很好地扩展。在我看来,你的大多数数据看起来都像典型的关系数据,所以我会继续使用它。
答案 1 :(得分:1)
您应该将文件存储和数据库分开:
对于id, username, pass
,您应该使用经典的关系数据库作为PostgreSql。没有太多的数据需要存储,它会很好地消失。
对于pdf_file
和binary data
,您应使用外部存储空间Amazon S3 bucket。这样做可以确保(“无限”)可扩展性。
一些有用的链接:
您可以通过搜索“Django amazon S3直接上传”
在Google上找到更多内容