powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для рекламного таргетинга
14 сообщений из 14, страница 1 из 1
Структура БД для рекламного таргетинга
    #38766588
Ravlio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть довольно тривиальная задача — обеспечить таргетинг объявлений по ряду критериев. Есть объявление. Допустим, такое:

Код: sql
1.
2.
3.
4.
5.
6.
7.
id
country // идёт на таблицу пар ad_id<->country_id
sex // таблица ad_id<->country_id
age
browser
os
interest



Чтобы было вообще круто, решено сделать каждый критерий в виде one-to-many. То есть у объявления может быть несколько стран, несколько возрастов, несколько интересов. И вот у нас приходит клиент:

Код: sql
1.
Страна: Россия, Пол: Мужской, Возраст: 23, Браузер: IE9, ОС: Win7, интересы: музыка, финансы



Нужно сложный запрос many-to-many, чтобы найти объявления, попадающие под все критерии этого запроса. При чём есть вариант, когда у объявления критерий не задан вообще — это значит, что он учитывает любой вариант (к примеру, если не задать страну, то будут подходить все страны)

На чём такое лучше реализовать? Подойдёт под это реляционная база? Скажем, запихать все рекламные объявления в память и сделать везде где только можно индексы? Или может рассмотреть какой-нибудь поисковый движок типа Сфинска? Думал, как это сделать на key-value движке типа Redis, но чуть не сломал голову. Как делают другие? Проектов в Интернете миллион, но нигде не нашел их архитектур.

Разумеется, всё должно летать под большими нагрузками, то есть запрос должен отрабатывать за доли секунды. Объемы где-то такие: 100к рекламных объявлений и 100млн обращений пользователей в сутки. Будет просто замечательно, если всё будет упираться только в производственные мощности, которые можно нарастить.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766597
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ravlio100млн обращений пользователей в суткипрожектёрство...

Для начала сделайте хоть как-нибудь.

А вообще делают по-всякому, и на РСУБД, и на key-value, и на Сфинксе.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766601
Ravlio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, одна вода от вас. 100млн обращений в сутки — это, по вашему, много? Я вас знаю? А вы меня? Я работаю именно с такими объёмами трафика на сторонних биржах. Только у них общая статистика идёт уже на миллиарды.

Совет "сделайте хоть как-нибудь" мне тоже не подходит. Сделайте что-нибудь сикась-накась, а потом при более-менее нормальном трафике всё это упадёт, если вообще заведётся. Проходили.

То что делают по-всякому — я знаю не хуже вас. Но меня интересуют детели. Не надо расписывать мне полностью реализацию. Достаточно сказать, что вот так-то и так-то можно делать быструю выборку по нескольким критериям many-to-many, и всё. Не сложно же понять, зачем флеймить, не понимаю.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766613
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ravlio100млн обращений в сутки — это, по вашему, много?Это весьма много. Это больше чем суточная аудитория всего Яндекса.
RavlioЯ работаю именно с такими объёмами трафика на сторонних биржах.Если это правда, то у Вас уже должна быть квалификация выше, чем у подавляющего большинства здесь.
RavlioСовет "сделайте хоть как-нибудь" мне тоже не подходит. Сделайте что-нибудь сикась-накась, а потом при более-менее нормальном трафике всё это упадётПроекты такого масштаба никогда не создаются сразу и с нуля. Это всегда итерации из переделок и перестроек. Нередко из полных переделок.
RavlioНо меня интересуют детели. Не надо расписывать мне полностью реализацию.Это как?
RavlioДостаточно сказать, что вот так-то и так-то можно делать быструю выборку по нескольким критериям many-to-many, и всё.Например, можно денормализовать все в одну плоскую таблицу и понастроить кучу индексов. Хотя я слабо представляю себе железку, которая потянула бы такое с нужной скоростью.

RavlioНе сложно же понять, зачем флеймить, не понимаю.А тема такая - флеймовая. Резкий диссонанс между вопросом и заявленным масштабом.
Ну и пятница :)


Почитайте про методы построения highload-проектов. Многие из них будут применимы и в этой задаче.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766635
Ravlio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

авторЭто весьма много. Это больше чем суточная аудитория всего Яндекса.
ни в коем случае не путайте уникальные и неуникальные заходы. Представьте, сколько у яндекса на Директе неуникальных просмотров объявлений — не один миллиард в сутки. Ну да ладно, это всё оффтоп.

У меня, к сожалению, нет квалификации хайлоад-девелопера подобных систем, хотя я работаю в хайлоаде. Я писал систему аналитики (статистика заходов, кликов и кучи других параметров по датам, странам, браузерам и другим группам), которая прекрасно себя чувствовала на 3-5млн запросах в сутки. Но это довольно простая задача — логировать flat-данные и не забывать денормализовывать по разным группам. Вся нагрузка в такой системе приходится только на запись, которая идёт в память.

Здесь же совершенно другая задача. Здесь именно выборки, при чём монструозные, с большим количеством джойнов. Я могу конечно всё это дело спроектировать кое-как и даже провести синтетические тесты, но не проще ли узнать чужой опыт, чтобы не совершать глубпых ошибок...

Про денормализацию в плоскую таблицу я вас не понял. Денормализация, в моём понимании, это когда сырые данные (как раз таки их совокупность можно назвать плоской таблицой) мы группируем по полям, интересным нам для выборок, и распихиваем это в отдельные таблицы. Так по крайней мере работает моя система статистики. Но как вы хотите применить эту практику к моей задаче?
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766646
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ravlioсырые данные (как раз таки их совокупность можно назвать плоской таблицой) мы группируем по полям, интересным нам для выборок, и распихиваем это в отдельные таблицы. Так по крайней мере работает моя система статистики. Но как вы хотите применить эту практику к моей задаче?Вы говорите про предагрегацию, а не про денормализацию.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766657
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А вы меня?

Здесь такие... ну, вы поняли, - пачками, к сожалению. Вы, наверное, намерены некоторое количество бабла заработать на этом проекте? Потратьте пару тысяч на разовую платную консультацию. Это бесплатный и очень качественный совет.

Реальность такова, что хорошую структуру данных вам всё равно никто не нарисует: задача поставлена безобразно криво.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766737
Ravlio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621,

Нет чтобы подсказать, а вы всё о чужих деньгах печётесь. Я думаю, из тех здесь, кто реально разбирается в вопросах проектирования подобных проектов, так или иначе и зарабатывают хорошо и участвуют. Не вижу ничего зазорного сообщить, какая предполагаемая нагрузка ожидается. А проект я делаю самостоятельно, попутно обучаясь всем ньюансам. По поводу платной консультации — всё это может быть. Вот только я сомневаюсь, что мне прямо так всё расскажут покажут, вне зависимости от ясности изложенной мной задачи (кстати, не понимаю, что я такого спросил криво по-вашему) Поэтому я решил для начала спросить на форуме, где для людей общение и обмен знаниями это хобби, а не средство монетизации. Вы вопрос то мой читали? Я попросил не реализовать всё за меня, а сказать, как примерно такое реализовано, верна ли моя мысль насчёт составных запросов или может есть уже какие готовые движки.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766749
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ravlio,

Можете пойти тривиальным путем по всем известной схеме EAV. Так у вас небудет ограничений по критериям. Если в качестве БД использовать оракл или мелкомягких, то все упрется в мощности железа. Т.е. если обем будет большой то для увеличения мощности придется сооружать кластер.
Если критериев у вас фиксированное число - ну там 10 или 20, то можете хранить в таблице обявлений. Тогда с такой задачей справится и постгрес. Насчет мускула - под вопросом, все зависит от структуры БД и запросов к ней (может и непотянуть).
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766753
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ravlioне понимаю, что я такого спросил кривоНапример, нет ни слова о том, как предполагается обновлять желаемую структуру данных. Как часто, как много, какие допустимые задержки и т.п. Он же не будет вечная один раз и навсегда?
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766756
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> вы всё о чужих деньгах печётесь

Никогда этого не делал. Не мой стиль. Я подсказал вам очевидный, но реально работающий способ получить ответы на ваши вопросы.

> я сомневаюсь, что мне прямо так всё расскажут покажут, вне зависимости от ясности изложенной мной задачи

Правильно сомневаетесь. Видите ли, в чём дело: начинать вам рассказывать о вашей задаче придётся очень издалека. Причём, вряд ли вы найдёте профессионала, имеющего представление и о законодательных ограничениях, и о социологических исследованиях, и о маркетинге, и о проектировании одновременно. А вероятность знания при этом о способах идентификации клиентов вообще равна нулю. Путь у вас в любом случае длинный и геморройный, на вашем месте я бы максимально ускорил начальную стадию - постановку задачи, дальше будет проще.

> не понимаю, что я такого спросил криво по-вашему

Долго рассказывать. Не парьтесь, для ваших объемов кривизна не фатальна.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38766777
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RavlioНа чём такое лучше реализовать? Подойдёт под это реляционная база? Скажем, запихать все рекламные объявления в память и сделать везде где только можно индексы? Или может рассмотреть какой-нибудь поисковый движок типа Сфинска? Думал, как это сделать на key-value движке типа Redis, но чуть не сломал голову. Как делают другие?. Тынц
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38770746
Ravlio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftНапример, нет ни слова о том, как предполагается обновлять желаемую структуру данных. Как часто, как много, какие допустимые задержки и т.п. Он же не будет вечная один раз и навсегда?

Разумеется таблицы таргетинга будут обновляться во время добавления/редактирования/удаления рекламных компаний. Насколько часто — думаю, не более 50-100к действий в сутки.

Поскольку юзеркейсы по моему вопросу гуглятся довольно туго, я до сих пор не нашёл простых решений вопроса и решил попробовать использовать в задаче движок поисковика. Продумывать многосоставные запросы и оптимизировать индексы в РСУБД — дело неблагодарное и требующее высокой квалификации, которой у меня, к сожалению, пока нет. А вот взять движок фасетного поиска и сделать из него систему таргетинга объявлений — почему бы и нет? — Чем поиск товаров по характеристикам в Яндекс.Маркете отличается от поиска объявлений? — Ровно ничем. Идеально подходит Elasticsearch с его агрегаторами, которые умеют искать по различным комбинациям характеристик, диапазонам и т.д. и т.п. Так что скоро сделаю нагрузочные тесты поисковика и ради интереса сравню с MySQL.
...
Рейтинг: 0 / 0
Структура БД для рекламного таргетинга
    #38770769
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил еще одно название помимо сфинкса - Solr.

Ключевые слова для гугления можно почерпнуть на highload.ru и далее по ссылкам.

Ravlioсравню с MySQLMySQL для таких задач не фонтан и его нужно уметь готовить. Да и то не факт, что выйдет успешно. Это к тому, что сравнивать "в лоб" бесполезно.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для рекламного таргетинга
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]