Задать вопрос
Enuriru
@Enuriru
Дизайнер, веб-разработчик

Как эффективно хранить «связность» между пользователями?

Приветствую!

Имеется алгоритм, вычисляющий показатель (число), характеризующий отношение пользователя А к пользователю В.
Алгоритм транзитивный, симметричный, т.е. A->B = B->A.

С ростом числа пользователей потребуется хранить результаты и пересчитывать их (например, при изменении некоторых параметров пользователя A нужно пересчитать его отношение ко всем остальным).

Встает вопрос, как эффективно хранить, быстро обновлять и считывать такие данные? SQL, NoSQL? Какой движок/база подойдет лучше? Ведь всего на 1000 пользователей будет уже 1 000 000 записей.

Спасибо!
  • Вопрос задан
  • 2587 просмотров
Подписаться 3 Оценить 2 комментария
Ответ пользователя SeptiM К ответам на вопрос (4)
@SeptiM
Если алгоритм задает метрику, и готовы пожертвовать точностью, можно всех пользователей отобразить в O(log n)-мерное пространство. В худшем случае расстояния испортятся в O(log n), но при этом можно хранить всего O(n log n) бит информации.
Ответ написан
Комментировать