Re[10]: RDB fail
От: Cyberax Марс  
Дата: 11.09.14 08:34
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Вот у тебя табличка на 10Тб, которая хранится на 4 машинах (шардинг по ID) — пусть это будет табличка AdView с записями просмотра рекламы. Нужно из неё сделать join на другую таблицу, пусть будет Users, которая хранится на других 4 машинах. Это означает, что в кластере будет примерно тонна кросс-траффика между узлами.

S>А можно пример "реального" запроса c join?
S>Это что, типа "покажи мне адреса top-100 пользователей по количеству просмотров баннера #12323451"?
Типа: "компания, баннер которой пользователь кликал наиболее часто, для каждого пользователя".

S>Если нет — то приведите "на пальцах" такой запрос. И примерный план его выполнения на NoSQL, который помогает избегать "тонны кросс-траффика между узлами".

Для NoSQL:
1) Делаем map на таблицу click, доставая оттуда пользователя.
2) Делаем reduce — считаем и группируем по пользователям.
3) Делаем постобработку — выбираем самую частую компанию (можно тоже через map-reduce).

Первые два шага могут выполняться на узлах, на которых лежат данные, так как операция reduce здесь ассоциативна.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.