我的网站:基于搜索密集型位置的社交网络。所以在高层次上我们在Facebook上看到的组件 - 个人资料,供稿等。在较低的层面上,我正在向世界各地的酒店,餐馆等进行预订。因此,大量的数据,大量的搜索,大量的分析,大量的读/写。
当前平台: 1个MySQL数据库,Php Codeingiter,1个专用托管服务器。网站是地理位置如此世界,支持多语言和本地化,必须是实时的。计划在启动后添加CDN。一旦我最终确定要使用的确切技术,这将会改变。
以下是相关项目列表:
1.网站搜索:照片/视频(名称,描述,标记在其中的人),用户定义的标签,评论(如墙评论),帖子,博客,组,按名称/电子邮件搜索的人。
邮件搜索:搜索主题,电子邮件内容,发件人,附件。
存储基本用户/系统值:用户详细信息,系统详细信息,架构等
存储&实施实时Feed:基于用户活动的实时Feed。
存储&实施Analytic:内部开发的Web分析系统报告+用户分析业务页面。这包括报告/图表/指标的混合。所以这将是一个自定义数据仓库。
存储&实施关系:查找,维护和显示用户在关系中的学位,不同学位之间的共同项目。
处理API调用,以便企业可以发送/接收酒店/餐馆老板等数据
问题 - 任何人都可以建议:要使用的数据库 - 如果rdms(InnoDB可能无法工作),请使用类型和确切的品牌(关系,文档,键值,图表等),数据库引擎所有情况),添加服务器/文件系统/缓存像memcached等?如果rdms我应该归一化还是去标准化。或NOSQL一路走来。
MySQL适用于某些部分,memcache适用于某些部分,lucene适用于某些部分,某些部分(如收件箱)可能需要文档数据库,关系可能需要图形数据库但我不确定哪个适用于哪个7上面的项目,如果我可以使用相同的平台/技术上述大多数项目。我唯一的要求是开源,所以它可以免费使用和使用PHP。我不想实现单独的数据库/技术集来支持上述7个要求中的每一个。当然,作为一个社交网络,性能和可扩展性也很重要。
答案 0 :(得分:0)
如果您有钱,那么Oracle将支持您的大部分要求。这真的归结为标准的RDBMS,加上CLOB和全文搜索。
MS SQLserver也将支持这些功能,但您仅限于Windows主机。
如果您使用开源做这件事,我会认真看看PostGres,因为MySql的未来看起来不确定,现在它是全球最大的商业数据库供应商所拥有的。
答案 1 :(得分:0)
好吧,FourSquare正在使用MongoDB完成大部分工作,所以它必须有一些功能。
我不想在这里开始任何神圣的战争(虽然我猜它可能听起来不像),但不要使用MySQL,只是......不要。此外,这些天看起来甲骨文更有可能试图杀死它。对于像这样的东西,甲骨文本身就是一个巨大的浪费。
如果您想继续使用关系模型,请查看VoltDB,它已经发出一些声音作为实际水平可伸缩的SQL数据库。
我个人会从Mongo,Lucene和Hadoop / HBase的组合开始进行数据处理(分析,关系等)。但实际上,这只是玩闪亮新玩具的借口,我并不认为这些玩具有很多经验。
我也会认真地重新考虑PHP,但在这里我再次参加圣战。
答案 2 :(得分:0)
首先,如果您认为该网站将成长为您想要横向扩展的其他成功网站,那么您将需要一个分布式解决方案。这意味着某种NoSQL解决方案。但是你不必选择单一的NoSQL解决方案,越来越多的你会看到什么是多语言方法 - 多个数据库来处理特定的方面。看起来太复杂了?可能与尝试将不合适的技术扩展到您的架构相比。 因此,将对象存储在Cassandra或Mongodb中,这提供了出色的规模和性能。然后将关系数据提供给分布式图形数据库以处理网络链接。您将拥有一个比SQL数据库更具可扩展性的技术。但是,您需要自己检查各种技术的技术要求,制定产品推荐的决策太多。