Как построить / поддерживать счет сродства между 2 пользователями? - PullRequest
2 голосов
/ 31 августа 2010

Я имею в виду, анализируя 2 профиля пользователя, я получаю оценку, что она взаимна
a.affinity(b) == b.affinity(a)

Я бы хотел знать, в частности:

  • какую схему вы будете использовать для реализации таблицы соответствия

  • , который db mysql, redis, ..

  • какую технологию вы бы использовали для обновления показателя сродства в фоновом режиме?

Спасибо

1 Ответ

1 голос
/ 31 августа 2010

Для части разработки db я бы рекомендовал использовать концепцию таблицы соединений / соединений , за исключением того, что в этом случае вы присоединяете таблицу к себе. Например, если ваша пользовательская таблица выглядит примерно так:

UserId   UserName
------   --------
1        User Uno
2        User Dos
...

Тогда ваша таблица соединения будет выглядеть примерно так:

UserIdA  UserIdB    AffinityScore
------   --------   -------------
1        2          56
34       208        137

где UserIdA и UserIdB являются внешними ключами для UserId в первой таблице. (Вы должны проверить и убедиться, что после установки UidA и UidB, например, значений 1 и 2 соответственно, что связь не повторяется, если значения меняются местами, например, значения 2 и 1 соответственно для UidA и UidB, что может некоторые странности в приложении. Вы можете использовать ограничение CHECK, если используете Sql Server или MySql .)

Что касается концепции таблицы соединений, то выбор db не имеет значения. Это просто таблица с внешними ключами. А для выполнения фоновых обновлений это зависит от вашей платформы. Это может быть задание cron, инициирующее исполняемый файл или SSIS (Sql Server), на котором выполняется сценарий T-Sql, и многое другое.

...