我有一个小文件托管网站,我试图存储用户在数据库中上传的文件。我遇到的问题是我无法确定哪种方法会更好:
据我所知,第二种方法会降低性能但会降低多少?我计划最终拥有1000多名用户。第一种方法的问题是将文件列回给用户。我应该采用什么方法,哪种方法效率最高?
答案 0 :(得分:1)
简短回答:
不。使用最简单的方法:单个表。
答案很长:
当您在生产负载下拥有生产系统时,您将知道什么样的扩展问题,然后您可以分析您的瓶颈在哪里,并根据实际用例而不是假设来制定分片策略。
现在你只是在猜测,你可能会猜错了。然后你就陷入了一个糟糕的数据库结构,你将无法撤消它。
尽量不将实际文件存储在MySQL数据库中,这几乎总会导致可怕的灾难,而是将它们存储在文件系统中并在数据库中保留对它们的引用。如果您要管理大量文件,大量文件,您可能需要查看文档存储数据库,如Riak来帮助解决这个问题。
答案 1 :(得分:0)
我建议为每个实体创建一个表,并在它们之间建立正确的关系。
例如: Users表将包含user_id,user_name等。 文件表将具有id,url,user_id
在这种情况下,通过具有相同的user_id来创建关系。因此,当您上传文件时,将user_id附加到图像。
这意味着 - 不,不要为每个用户创建单独的表。使用方法1并确保每个重要的权利都有自己的表。
在未来的道路上,您可能会拥有更多实体和更多表格,例如权限,产品等。通过使用SQL查询,您将能够获得所需的所有数据。
希望这有帮助!
答案 2 :(得分:0)
拥有1000个用户对MySQL来说不是问题。但是tadman是严格的,保存文件系统上的文件而不是数据库。
如果您知道最终会有数百万用户,我建议您了解Facebook或其他大型用户相关网站如何处理这些骇人听闻的问题。