Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> subscribe realization 
:(
    Опции темы
gelo86
Дата 25.12.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Дапустим у меня есть продукты которые имеют некоторые параметры (размер, цвет, цена и т.д.). Люди могут подписаться на новости, в которых пишеться что появился новий продукт по его за ранее описанным параметрам. Вот я подумал если таких подписчеков пару тысяч (даже на один и тотже продук (подумал про оптимизацю)), то мне кажется при инсерте селектить тысячеи людеи запросы и смотреть, подходит ли им етот продукт и высылать тогда на мыло инфы слишком неоптимално (например если наже я использую hibernate StatelessSession). Как реализуються похожее?
PM MAIL   Вверх
LSD
Дата 25.12.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



А нафига тут вообще массовый insert? Появился продукт в продаже: записал в ToDo табличку: оповестить всех подписавшихся, что появился продукт Х. Потом придет какой нибудь фоновый поток, прочтет эту ToDo-шку, выполнит один select, получит всех подписавшихся и пойдет слать им письма. Как закончит ToDo-шку удалит.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
goodday1941
Дата 25.12.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



создают скедулер, который к примеру раз в сутке делает рассылку

Добавлено через 2 минуты и 30 секунд
вот есть такой вот фреймворк для этих целей


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
gelo86
Дата 25.12.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Цитата(LSD @  25.12.2009,  17:34 Найти цитируемый пост)
 один select

Да, но етот селект должен будет выбрать с базы данных всех подписчиков, которие хотят палучить инфо про продукт которого параметар1 равнается х, параметар2 равнается y .... В селекте палучется длинний WHERE. Или просто всех селектить и виберать уже в jave каму слать а каму нет ?

Цитата(goodday1941 @  25.12.2009,  17:34 Найти цитируемый пост)
вот есть такой вот фреймворк для этих целей 

Знаем и ползуемся всегда smile
PM MAIL   Вверх
LSD
Дата 25.12.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(gelo86 @  25.12.2009,  17:45 Найти цитируемый пост)
Да, но етот селект должен будет выбрать с базы данных всех подписчиков, которие хотят палучить инфо про продукт которого параметар1 равнается х, параметар2 равнается y .... В селекте палучется длинний WHERE. Или просто всех селектить и виберать уже в jave каму слать а каму нет ?

Ну вообще-то если база сделана по уму, то у тебя должна быть кросс таблица где указанно, пользователь с ID таким-то, подписался на товар с ID такими-то. Так что все данные можно выбрать, одним запросом.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
gelo86
Дата 25.12.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Цитата(LSD @  25.12.2009,  18:04 Найти цитируемый пост)
Ну вообще-то если база сделана по уму, то у тебя должна быть кросс таблица где указанно, пользователь с ID таким-то, подписался на товар с ID такими-то. Так что все данные можно выбрать, одним запросом. 

Да, но пользователи подписываются не на конкретные продукты, а на продукты с указанами параметрами, например если появиля телефон красног цвета до 100 баксов. Другои ползователь подписался на продукт по другим критериям. Поетому простой селект тут непрокатит.
PM MAIL   Вверх
LSD
Дата 25.12.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Если типы этих параметров заранее известны, то в принципе можно составить такой запрос, хотя он возможно будет монстровым. Ну а если нет, то что еще остается, кроме как просто пробежаться по позовательским фильтрам и проверять попадает товар под них или нет?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
gelo86
  Дата 25.12.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Цитата(LSD @  25.12.2009,  18:29 Найти цитируемый пост)
Если типы этих параметров заранее известны, то в принципе можно составить такой запрос, хотя он возможно будет монстровым. Ну а если нет, то что еще остается, кроме как просто пробежаться по позовательским фильтрам и проверять попадает товар под них или нет? 

Я про такой вариант тоже думаю. Он хороший при неболших (например до 10000) ползователей. А если их 100000 ? Думал может какието речения есть, вплот до математики, например графы ? smile
PM MAIL   Вверх
LSD
Дата 25.12.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Ну я бы сделал, предварительную выборку по неким основным полям (цена, категория и т.п.), а дальше уже бы просто проходился бы и проверял оставшиеся на соответствие.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
gelo86
Дата 25.12.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Цитата(LSD @  25.12.2009,  18:43 Найти цитируемый пост)
Ну я бы сделал, предварительную выборку по неким основным полям (цена, категория и т.п.)

Я думал по типу продукта. А болле конкретно например по цене неполучится, а вдруг будет ползователь котораму без разницы какя цена, но важен цвет ?

PM MAIL   Вверх
LSD
Дата 25.12.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



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

Вот с ценой, все просто: есть верхняя граница и есть нижняя (если не заданы, то можно просто вставлять в таблицу -1 и MAX_VALUE). И по таким параметрам сделать выборку очень просто.

А вот с типом продукта сложнее, человек может сразу подписаться на несколько типов продукта. И тут возникает вопрос, как этот набор значений хранить? Как несколько подписок, как связанная таблица и т.п.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
gelo86
Дата 25.12.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Продукт известен потому что мы создаем новый продукт конкретного типа, и при его создании оповешаем подписчеков на етот продукт. Получаем всех подписчиков на етот продукт и уже в програме филтрируем, подходит ли новий продукт дла подписчика. Толко тогда вопрос, если часто появлаются продукты, то несличком ли часто будет запускатся такая прочедура, например если продукт появлается раз в 2 секунды?
PM MAIL   Вверх
LSD
Дата 28.12.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(gelo86 @  25.12.2009,  20:08 Найти цитируемый пост)
Толко тогда вопрос, если часто появлаются продукты, то несличком ли часто будет запускатся такая прочедура, например если продукт появлается раз в 2 секунды?

Как настроишь, так и будет. И собственно в чем проблема? Она вообще может непрерывно работать в фоне, поскольку она завязана на сеть, то 100 процентов ресурсов она не отожрет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.