实施喜欢/不喜欢评分系统的最佳方法

时间:2018-10-27 06:16:59

标签: sql database nosql orientdb database-performance

实施与YouTube类似的喜欢/不喜欢的评分系统的最佳方法是什么。我想过要像这样:

TABLE rating
{
 itemID INT NOT NULL REFERENCES item(item),
 userID INT NOT NULL REFERENCES users(userID),
 approve BOLLEAN NOT NULL
}

TABLE items
{
 ...
 rating FLOAT NOT NULL,
 likes INT NOT NULL,
 dislikes INT NOT NULL
}

该项目具有评分,喜欢和不喜欢,因此它不必查询数据库,也不必对喜欢/不喜欢进行数学运算以通过评分进行搜索,从而节省了查询性能,并且评分表存储了用户投票的信息在特定项目上使用,以防止出现多次喜欢/不喜欢,并允许用户更改投票。但我想,你们中的大多数人已经弄明白了。主要表现将是评分表。每次进入项目页面时,您都会看到自己是否投票。这意味着查询评级表以查看您是否是他们。理想情况下,您应该为userID设置索引,尽管有些人可能会认为itemID是索引的最佳选择,但是对于每个插入,索引是否不必重新构造自身,尤其是在b树索引的情况下?以人们喜欢/不喜欢事物的速度,这会不会利用服务器的性能好一点?

或者像orientDB这样的图形数据库,其向量用户和项之间有一条边。边缘还将包含isLike之类的属性,以确定用户喜欢还是不喜欢该项目。但是一个项目可以有数千个喜欢/不喜欢,并且在graphDB中向量是否不包含指向边缘位置的指针?一个向量可以有多少条边,什么时候出现性能问题?

您可能听说过我提到服务器性能,因为这对于用户体验至关重要。 Subpar的性能确实可以驱走如今被宠坏的用户,而且我可以预见网站的快速增长,因此性能是关键。

你们有更好的工具或调整功能吗?

0 个答案:

没有答案