我正在构建一个类似Pinterest的网站,我需要将相册及其相关照片存储在数据库中,因此每个用户都有Album,其中有 photos ,而每一张照片都有Pins。
由于数据是平坦的,而且我不需要复杂的关系,所以我想将信息存储在NoSQL数据库中,比如MongoDB,所以主文档是一个相册,每个相册都包含一个对象(列表)照片。
但是,我不确定这是一个好的架构,因为我需要通过title/description/user查询非常快的照片,而不管包含它的专辑是什么。我应该用关系数据库代替吗?或者可以在高性能的NoSql数据库中实现?
发布于 2016-10-14 12:35:33
每个NoSQL数据库都解决了一个给定的问题:性能、弹性、可伸缩性.但是它通常要付出代价,这取决于数据库的类型:没有事务或有限的事务,有限的查询能力.如果您选择一个NoSQL数据库,请选择它,因为它解决了一个有效的问题。否则,最好坚持关系,以避免NoSQL数据库的限制
编辑如果性能是您关心的主要问题,请看this question
发布于 2016-10-14 12:56:50
在某些场景中,您应该使用NoSQL,而在某些场景中,您不能使用NoSQL。如果您的应用程序与高级别的事务有关,那么NoSQL不是一个安全的赌注,因为您会错过关系DB提供的事务的保护伞。
尽管如此,特别是MongoDB对于您的用例来说是一个很好的选择,因为MongoDB提供了与其他NoSQL不同的各种各样的查询选项。您所需要做的就是使用一个深思熟虑的(嵌入式)结构,并为您需要查询的字段提供适当的索引。也许您需要事先记住多键索引和复合索引。
MongoDB应该至少在理论上提供无缝可伸缩性。无模式DB为您提供了添加新特性或增强功能的灵活性,而不需要太多麻烦。
https://stackoverflow.com/questions/40040792
复制相似问题