Я нахожусь в процессе создания / разработки веб-приложения для бизнес-социальной сети, в котором есть компонент, который, как мне кажется, приведет к серьезным проблемам с масштабируемостью, и я хотел бы получить некоторые отзывы / мысли о том, как лучше двигаться вперед.
Приложение имеет объект User.Идея состоит в том, что каждый раз, когда новый пользователь присоединяется к системе, он оценивает «полезность» для всех остальных, основываясь на ряде факторов.Точно так же любой другой пользователь в системе оценивает его / ее.
Однако меня беспокоит значение масштабируемости этого подхода.Например, если 10 000 пользователей присоединяются к системе, мы говорим о 10000 ^ 2 вычислениях, которые будут сохранены в базе данных.Это 100 миллионов записей, что явно становится проблематичным как с точки зрения времени, необходимого для расчета этих рейтингов, так и с точки зрения хранения этого в базе данных.
Таким образом, я ищу помощь / вдохновение:)
Мой опыт работы в java, и я рассматривал hadoop / map-lower как возможный способ параллельного выполнения вычислений, однако я действительно не уверен, применима ли эта проблема к Map Reduce илиЧто касается того, что является лучшим подходом в целом.
Итак, я полагаю, что в моем запросе есть две специфические части ..
1) Чтобы выполнить фактические вычисления, я должен сделать это параллельно, т.е.хороший подход к решению этой проблемы
2) Для хранения ранжирований то, что я должен использовать ... это стандартная реляционная база данных, плохая идея, т. е. ... это не подходит для MySQL.... могу ли я взглянуть на что-то вроде Cassandra, HBase или другого решения NoSQL?
Любая помощь / идеи приветствуются.
ура, Брайан