我正在构建类似Pinterest的网站,我需要将相册及其相关照片存储在数据库中,因此每个用户都有相册 照片,每张照片都有 Pins
由于数据是平的,我不需要复杂的关系,我想把信息存储在NoSQL数据库中,例如MongoDB,所以主文档是一个专辑,每个专辑都有一个对象(列表)的照片。
但是,我不确定这是一个好的架构,因为我需要通过 title / description / user 查询非常快的照片,而不管包含它的相册。 我应该使用关系数据库吗?或者可以在具有高性能的NoSql数据库中实现?
答案 0 :(得分:0)
每个NoSQL数据库解决了一个给定的问题:性能,弹性,可扩展......但它通常需要付出代价,这取决于数据库的类型:没有事务或有限的事务,有限的查询能力...... 如果选择NoSQL数据库,请选择它,因为它可以解决您实际遇到的问题。否则,最好坚持关系,以避免NoSQL数据库的限制
修改强> 如果主要关注性能,请查看this question
答案 1 :(得分:0)
在某些情况下,您应该使用NoSQL,并且在某些情况下您不得使用NoSQL。如果您的应用程序与高级别的事务有关,NoSQL不是一个安全的赌注,因为您会错过关系数据库提供的事务保护。
据说MongoDB特别适合您的用例,因为MongoDB提供了与其他NoSQL不同的各种查询选项。您需要做的就是使用经过深思熟虑的(嵌入式)结构,并在要查询的字段上提供正确的索引。也许你想要事先记住多键索引和复合索引。
MongoDB应该提供至少理论上的无缝可扩展性。无架构数据库为您提供了添加新功能或增强功能的灵活性,而无需太多麻烦。