Я пытаюсь выяснить системный дизайн за Google Trends (или любую другую такую масштабную функцию тренда, как Twitter).Системный дизайн Google Trends?
Проблемы:
нужно обрабатывать большое количество данных для расчета тренда.
поддержка фильтрация - по времени, регион, категория и т.д.
Нужен способ хранения для обработки архивирования/в автономном режиме. Для поддержки фильтрации может потребоваться многозадачное хранилище.
Это то, что мое предположение (у меня нулевой опыт Практической технологий MapReduce/NoSQL)
Каждый элемент из поиска пользователя будет поддерживать набор атрибутов, которые будут сохранены и в конечном счете обрабатываются.
Как и ведение списка запросов по временной метке, области поиска, категории и т.д.
Пример:
Поиск Kurt Cobain
термина:
Kurt-> (Time stamp, Region of search origin, category ,etc.)
Cobain-> (Time stamp, Region of search origin, category ,etc.)
Вопрос:
Как они эффективно вычисляют частоту поискового запроса?
Другими словами, учитывая большой набор данных, как они находят 10 наиболее распространенных элементов в распределенной масштабируемой манере?
Также необходимо учитывать фактор распада времени –
Я думаю, что используя специальные структуры данных, которые структурированы таким образом, чтобы ускорить поиск тенденций, данные упорядочиваются таким образом, чтобы предварительно обработать его для всех открытых функций для миллионов пользователей в Интернете –
Очевидно, я не могу проголосовать, чтобы закрыть вопрос, который кто-то еще предложил щедрость, но для меня этот вопрос кажется нелогичным/слишком широким: есть много технологий и областей исследований, связанных с этой темой, и нет никакого способа ответ может инкапсулировать их, кроме как путем ссылки на более подходящий ресурс, такой как учебник или выделенный веб-сайт. Перефразируя одно из рекомендаций в справочном центре: «если вы можете представить себе всю карьеру или бизнес-план, основанный на нахождении ответа, вопрос, вероятно, слишком широк». – IMSoP