2013-03-20 87 views
2

我需要创建一个具有“喜欢”的应用程序。这意味着具有唯一ID的人可以喜欢具有唯一ID的项目,但是仅具有一次。该项目不能不喜欢。我只想出了一个小表,其中有user_iditem_id列,在插入之前,我应该检查该用户是否已经喜欢该项目。在我看来,这不是完成任务的最佳方式,因为会有很多(〜100万)用户和很多项目,所以表格应该非常大并且会影响搜索和插入速度。有没有其他方法可以做到这一点?或者,如果我的方法适合在这里,将这些信息存储在数据库中的最佳方法是什么?目前我正在使用MySQL数据库,在这里使用NoSql更好吗?实现“喜欢”功能

+2

定义一个唯一的索引(user_id,item_id)强加你的约束。这是更基于集合的分层,所以SQL作为实现选择是很好的。 – 2013-03-20 16:02:49

回答

2

那么首先要做的是在两列(组合)上设置一个“唯一”约束,以便它们的组合是唯一的。不确定MySQL是否支持这一功能,但MSSQL表示确实如此,而且您可以拥有高达8 GB的数据,因此,一百万用户甚至没有接近极限 - 如果您的用户数量超过一百万,就能很好地扩展。你应该在liker上创建一个覆盖索引,并且喜欢它,并使其具有独特性。使用80填充插入将是即时的,查找也是如此。这是一个关系问题,所以关系数据库将会为了速度和效率而使用任何非关系数据库(NO SQL)。你没有提及,如果liker和喜欢逗号 - 我猜不是