2014-09-09 4 views
0

Мое приложение отслеживает клики из рекламных объявлений, отображаемых на удаленных сайтах, и перенаправляет пользователей на страницу продаж продукта.Сохранение данных щелчка в MongoDB

В настоящее время я использую MySQL для хранения информации о клике (дата, какая ссылка была использована, IP-адрес, пользовательские данные, отправленные от рекламодателя и т. Д.). Таблица становится настолько большой, что он больше не отвечает нашим потребностям, которые являются:

  • Высокая пропускная способность (приложение обрабатывает 5 - 10M кликов в день, и это будет расти)

  • Способность сообщать о данных по диапазону дат (например, сколько кликов по ссылке 1 за прошедший месяц, сгруппированных по стране)

Моя первоначальная идея была двигаться щелчки в Redis (нам нужно только хранить их в течение 30 дней , после чего они истекают, если они не приводят к продаже), а затем мак e новая таблица MySQL для хранения сгенерированных статистических данных в день, где мы просто обновляем счетчик для каждой ссылки при нажатии.

Когда мы начали использовать таблицу статистики, база данных быстро упала из-за количества запросов к этой таблице.

Было бы лучше сохранить клики в Redis и иметь отдельный MongoDB (или другую базу данных noSQL) для отчетности? или можно было бы использовать Mongo для хранения всего клика (как и в MySQL) или слишком большой объем?

Кроме того, я помню, что MongoDB не подходит для исправления пространства из удаленных записей, это вызвало бы у нас проблемы, так как 90% кликов будут удалены через 30 дней?

Благодаря

ответ

0

MongoDB достаточно, чтобы решить эту проблему, по сравнению хранить в Radis и перейти к MongoDB. Поскольку количество данных очень велико, вы можете создавать индексы на отметке времени или поле с высокой плотностью. Это делает запрос быстрым, также MongoDB обеспечивает агрегацию, которая помогает генерировать отчет. Я не думаю, есть ли какие-либо проблемы с удалением.

+0

Спасибо за ваш ответ. Чтобы уточнить, я не рассматривал возможность щелчка в Redis, а затем переместил его в Mongo. Мне было интересно, лучше ли хранить клик в Redis и иметь сгенерированную статистику в Mongo - аналогично здесь: [link] (http://www.slideshare.net/dacort/mongodb-realtime-data-collection-and -stats-generation) Vs, сохраняя весь клик в Mongo, возможно, с соответствующей информацией в качестве поддокументов. Для фона, вот статья, в которой упоминается плохая экономическая эффективность Монго [link] (http://blog.scrapinghub.com/2013/05/13/mongo-bad-for-scraped-data/). Благодарю. – Peter