我应该为这个设计选择MySQL还是MongoDB

时间:2015-02-26 21:15:54

标签: mysql mongodb database-design database

我很难在MySQL和MongoDB之间做出选择。我在我的产品上创建评级/评估系统,我应该能够通过计算评级的平均值来计算总体评级。我的设计是这样的:

table products_review

  • ID
  • productId(int)
  • rating(int)
  • 评论(字符串)
  • dateCreated(date)
  • userId(int)

假设我有大量(数百万)产品数据集以及未来大型评级/评论数据集[例如Yelp],我应该选择哪个数据库MongoDB或MySQL?

1 个答案:

答案 0 :(得分:1)

现实主义是你会有数百万的评论,或者你只是过度夸张?

在你的情况下,我会选择mySQL。你有什么接近关系模式因此我会关系。如果您认为数据太多,您可以拥有2月份评论的表格,3月评论的其他表格等等;您也可以按产品类别或其他方式进行分区。

如果你想进入mongoDB,你必须修改模式并完全非规范化。您一定不知道,但是在mongoDB上您没有加入,因此您将无法加入产品表,因此您必须将产品名称和描述与评级一起存储(或者不要你想做一个按产品名称分组的东西吗?)。因此,在mongoDB上它看起来像这样:

_id 
productId 
productName,
product description,
product category,
product
rating 
comment 
dateCreated 
userId 
username,
userGenger (male/female/unknow)
userAge
userRegisteredDate

在这个特定的用例中,我没有看到使用无架构数据库(mongodb)的好处,如果你的问题是可扩展性,你可以通过购买更好的硬件来实现它(你的网站将是一个数百万条评论的成功,因此您可以负担得起),或者通过执行适当的数据分区。