寻找一些意见,并尝试以坚实的设计向前推进我的下一个项目。想象一下5,000,000张个人照片以及附带的低分辨率预览图像;每组图片属于一个画廊,属于一个人。有X个人。可以说是Flickr的专用版本。
它们安装在远程主机上,带有用于查看这些图片的Web界面。还有一个桌面应用程序,您可以将图片自动上传到此远程主机并输入图库详细信息。桌面应用程序包含有关每个图库和人员的预览图像和信息。可以说是一个与Flickr同步的桌面应用程序。
我需要决定两件事:远程主机的后端存储和桌面应用的本地存储。这是针对Windows环境的,所以我认为SQL Server Express非常适合,但是这个项目已经发展了很多,而且可能只适用于桌面端。
远程(web)服务器可以是Windows或Linux,PHP或.Net - 只要技术适合我就不在乎。问题是如何最好地将所有数据存储在Web服务器上,以便可以轻松编制索引,快速访问,最重要的是,在发生灾难时可以轻松备份和恢复。我不担心此时的服务器配置或磁盘空间,只要数据库解决方案支持某种云计算方案。
我认为No-SQL后端最有意义,将照片,图库和用户存储为“文章”而不是“行”。 No-SQL似乎更有能力通过云增长。另一方面,Flickr被宣传为使用MySQL ......
也许这是一个更为存在主义的问题,是一个真正的编码问题,但我知道没有更好的群体可以问!
答案 0 :(得分:0)
管理了一张超过500万张照片的照片网站,我可以说MySQL肯定是一个可行的选择。如果使用复制,备份很容易。只需停止一个奴隶,复制它然后开始备份。
MySQL全文搜索不是很好,可能很慢。所以你可能想要研究像Solr这样的基于Lucene的引擎。弹性搜索也是可伸缩性的一个很好的选择。
如果您不确定您的数据结构,那么像MongoDB这样的东西可能是一个很好的解决方案。但是Mongo对聚合有限制(约10,000条记录),所以请记住这一点。但它是最容易设置的之一。
任何东西都可以在云中运行,所以我认为这个要求是没有实际意义的。您可以在EC2上设置任何您想要的东西。