|
|
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Есть довольно тривиальная задача — обеспечить таргетинг объявлений по ряду критериев. Есть объявление. Допустим, такое: Код: sql 1. 2. 3. 4. 5. 6. 7. Чтобы было вообще круто, решено сделать каждый критерий в виде one-to-many. То есть у объявления может быть несколько стран, несколько возрастов, несколько интересов. И вот у нас приходит клиент: Код: sql 1. Нужно сложный запрос many-to-many, чтобы найти объявления, попадающие под все критерии этого запроса. При чём есть вариант, когда у объявления критерий не задан вообще — это значит, что он учитывает любой вариант (к примеру, если не задать страну, то будут подходить все страны) На чём такое лучше реализовать? Подойдёт под это реляционная база? Скажем, запихать все рекламные объявления в память и сделать везде где только можно индексы? Или может рассмотреть какой-нибудь поисковый движок типа Сфинска? Думал, как это сделать на key-value движке типа Redis, но чуть не сломал голову. Как делают другие? Проектов в Интернете миллион, но нигде не нашел их архитектур. Разумеется, всё должно летать под большими нагрузками, то есть запрос должен отрабатывать за доли секунды. Объемы где-то такие: 100к рекламных объявлений и 100млн обращений пользователей в сутки. Будет просто замечательно, если всё будет упираться только в производственные мощности, которые можно нарастить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 19:02 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Ravlio100млн обращений пользователей в суткипрожектёрство... Для начала сделайте хоть как-нибудь. А вообще делают по-всякому, и на РСУБД, и на key-value, и на Сфинксе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 19:11 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
miksoft, одна вода от вас. 100млн обращений в сутки — это, по вашему, много? Я вас знаю? А вы меня? Я работаю именно с такими объёмами трафика на сторонних биржах. Только у них общая статистика идёт уже на миллиарды. Совет "сделайте хоть как-нибудь" мне тоже не подходит. Сделайте что-нибудь сикась-накась, а потом при более-менее нормальном трафике всё это упадёт, если вообще заведётся. Проходили. То что делают по-всякому — я знаю не хуже вас. Но меня интересуют детели. Не надо расписывать мне полностью реализацию. Достаточно сказать, что вот так-то и так-то можно делать быструю выборку по нескольким критериям many-to-many, и всё. Не сложно же понять, зачем флеймить, не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 19:23 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Ravlio100млн обращений в сутки — это, по вашему, много?Это весьма много. Это больше чем суточная аудитория всего Яндекса. RavlioЯ работаю именно с такими объёмами трафика на сторонних биржах.Если это правда, то у Вас уже должна быть квалификация выше, чем у подавляющего большинства здесь. RavlioСовет "сделайте хоть как-нибудь" мне тоже не подходит. Сделайте что-нибудь сикась-накась, а потом при более-менее нормальном трафике всё это упадётПроекты такого масштаба никогда не создаются сразу и с нуля. Это всегда итерации из переделок и перестроек. Нередко из полных переделок. RavlioНо меня интересуют детели. Не надо расписывать мне полностью реализацию.Это как? RavlioДостаточно сказать, что вот так-то и так-то можно делать быструю выборку по нескольким критериям many-to-many, и всё.Например, можно денормализовать все в одну плоскую таблицу и понастроить кучу индексов. Хотя я слабо представляю себе железку, которая потянула бы такое с нужной скоростью. RavlioНе сложно же понять, зачем флеймить, не понимаю.А тема такая - флеймовая. Резкий диссонанс между вопросом и заявленным масштабом. Ну и пятница :) Почитайте про методы построения highload-проектов. Многие из них будут применимы и в этой задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 19:47 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
miksoft, авторЭто весьма много. Это больше чем суточная аудитория всего Яндекса. ни в коем случае не путайте уникальные и неуникальные заходы. Представьте, сколько у яндекса на Директе неуникальных просмотров объявлений — не один миллиард в сутки. Ну да ладно, это всё оффтоп. У меня, к сожалению, нет квалификации хайлоад-девелопера подобных систем, хотя я работаю в хайлоаде. Я писал систему аналитики (статистика заходов, кликов и кучи других параметров по датам, странам, браузерам и другим группам), которая прекрасно себя чувствовала на 3-5млн запросах в сутки. Но это довольно простая задача — логировать flat-данные и не забывать денормализовывать по разным группам. Вся нагрузка в такой системе приходится только на запись, которая идёт в память. Здесь же совершенно другая задача. Здесь именно выборки, при чём монструозные, с большим количеством джойнов. Я могу конечно всё это дело спроектировать кое-как и даже провести синтетические тесты, но не проще ли узнать чужой опыт, чтобы не совершать глубпых ошибок... Про денормализацию в плоскую таблицу я вас не понял. Денормализация, в моём понимании, это когда сырые данные (как раз таки их совокупность можно назвать плоской таблицой) мы группируем по полям, интересным нам для выборок, и распихиваем это в отдельные таблицы. Так по крайней мере работает моя система статистики. Но как вы хотите применить эту практику к моей задаче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 20:42 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Ravlioсырые данные (как раз таки их совокупность можно назвать плоской таблицой) мы группируем по полям, интересным нам для выборок, и распихиваем это в отдельные таблицы. Так по крайней мере работает моя система статистики. Но как вы хотите применить эту практику к моей задаче?Вы говорите про предагрегацию, а не про денормализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 21:14 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
> А вы меня? Здесь такие... ну, вы поняли, - пачками, к сожалению. Вы, наверное, намерены некоторое количество бабла заработать на этом проекте? Потратьте пару тысяч на разовую платную консультацию. Это бесплатный и очень качественный совет. Реальность такова, что хорошую структуру данных вам всё равно никто не нарисует: задача поставлена безобразно криво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 21:42 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
guest_20040621, Нет чтобы подсказать, а вы всё о чужих деньгах печётесь. Я думаю, из тех здесь, кто реально разбирается в вопросах проектирования подобных проектов, так или иначе и зарабатывают хорошо и участвуют. Не вижу ничего зазорного сообщить, какая предполагаемая нагрузка ожидается. А проект я делаю самостоятельно, попутно обучаясь всем ньюансам. По поводу платной консультации — всё это может быть. Вот только я сомневаюсь, что мне прямо так всё расскажут покажут, вне зависимости от ясности изложенной мной задачи (кстати, не понимаю, что я такого спросил криво по-вашему) Поэтому я решил для начала спросить на форуме, где для людей общение и обмен знаниями это хобби, а не средство монетизации. Вы вопрос то мой читали? Я попросил не реализовать всё за меня, а сказать, как примерно такое реализовано, верна ли моя мысль насчёт составных запросов или может есть уже какие готовые движки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 01:02 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Ravlio, Можете пойти тривиальным путем по всем известной схеме EAV. Так у вас небудет ограничений по критериям. Если в качестве БД использовать оракл или мелкомягких, то все упрется в мощности железа. Т.е. если обем будет большой то для увеличения мощности придется сооружать кластер. Если критериев у вас фиксированное число - ну там 10 или 20, то можете хранить в таблице обявлений. Тогда с такой задачей справится и постгрес. Насчет мускула - под вопросом, все зависит от структуры БД и запросов к ней (может и непотянуть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 01:27 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Ravlioне понимаю, что я такого спросил кривоНапример, нет ни слова о том, как предполагается обновлять желаемую структуру данных. Как часто, как много, какие допустимые задержки и т.п. Он же не будет вечная один раз и навсегда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 01:34 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
> вы всё о чужих деньгах печётесь Никогда этого не делал. Не мой стиль. Я подсказал вам очевидный, но реально работающий способ получить ответы на ваши вопросы. > я сомневаюсь, что мне прямо так всё расскажут покажут, вне зависимости от ясности изложенной мной задачи Правильно сомневаетесь. Видите ли, в чём дело: начинать вам рассказывать о вашей задаче придётся очень издалека. Причём, вряд ли вы найдёте профессионала, имеющего представление и о законодательных ограничениях, и о социологических исследованиях, и о маркетинге, и о проектировании одновременно. А вероятность знания при этом о способах идентификации клиентов вообще равна нулю. Путь у вас в любом случае длинный и геморройный, на вашем месте я бы максимально ускорил начальную стадию - постановку задачи, дальше будет проще. > не понимаю, что я такого спросил криво по-вашему Долго рассказывать. Не парьтесь, для ваших объемов кривизна не фатальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 01:45 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
RavlioНа чём такое лучше реализовать? Подойдёт под это реляционная база? Скажем, запихать все рекламные объявления в память и сделать везде где только можно индексы? Или может рассмотреть какой-нибудь поисковый движок типа Сфинска? Думал, как это сделать на key-value движке типа Redis, но чуть не сломал голову. Как делают другие?. Тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 08:13 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
miksoftНапример, нет ни слова о том, как предполагается обновлять желаемую структуру данных. Как часто, как много, какие допустимые задержки и т.п. Он же не будет вечная один раз и навсегда? Разумеется таблицы таргетинга будут обновляться во время добавления/редактирования/удаления рекламных компаний. Насколько часто — думаю, не более 50-100к действий в сутки. Поскольку юзеркейсы по моему вопросу гуглятся довольно туго, я до сих пор не нашёл простых решений вопроса и решил попробовать использовать в задаче движок поисковика. Продумывать многосоставные запросы и оптимизировать индексы в РСУБД — дело неблагодарное и требующее высокой квалификации, которой у меня, к сожалению, пока нет. А вот взять движок фасетного поиска и сделать из него систему таргетинга объявлений — почему бы и нет? — Чем поиск товаров по характеристикам в Яндекс.Маркете отличается от поиска объявлений? — Ровно ничем. Идеально подходит Elasticsearch с его агрегаторами, которые умеют искать по различным комбинациям характеристик, диапазонам и т.д. и т.п. Так что скоро сделаю нагрузочные тесты поисковика и ради интереса сравню с MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 17:41 |
|
||
|
Структура БД для рекламного таргетинга
|
|||
|---|---|---|---|
|
#18+
Вспомнил еще одно название помимо сфинкса - Solr. Ключевые слова для гугления можно почерпнуть на highload.ru и далее по ссылкам. Ravlioсравню с MySQLMySQL для таких задач не фонтан и его нужно уметь готовить. Да и то не факт, что выйдет успешно. Это к тому, что сравнивать "в лоб" бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 18:01 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38766657&tid=1540778]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 278ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...