Лучший способ реализовать рейтинговую систему «нравится / не нравится» - PullRequest
0 голосов
/ 27 октября 2018

Как лучше всего внедрить систему оценки «нравится / не нравится», аналогичную 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, чтобы определить, нравится ли пользователю элемент или нет. Но элемент может иметь тысячи лайков / дислайков, и в графе БД векторы не содержат указатель на местоположение края? Сколько ребер может иметь вектор и в какой момент он имеет проблемы с производительностью?

Возможно, вы слышали, как я упоминал производительность сервера, потому что это очень важно для взаимодействия с пользователем. Производительность на низком уровне действительно может оттолкнуть сегодняшних избалованных пользователей, и я могу предвидеть быстрый рост сайта, поэтому производительность является ключевым фактором для этого.

Так у вас, ребята, есть лучшие инструменты или настройки?

...